summaryrefslogtreecommitdiff
path: root/addons/sale_mrp
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/sale_mrp
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/sale_mrp')
-rw-r--r--addons/sale_mrp/__init__.py4
-rw-r--r--addons/sale_mrp/__manifest__.py26
-rw-r--r--addons/sale_mrp/i18n/am.po63
-rw-r--r--addons/sale_mrp/i18n/ar.po97
-rw-r--r--addons/sale_mrp/i18n/az.po26
-rw-r--r--addons/sale_mrp/i18n/bg.po99
-rw-r--r--addons/sale_mrp/i18n/bn.po96
-rw-r--r--addons/sale_mrp/i18n/bs.po29
-rw-r--r--addons/sale_mrp/i18n/ca.po99
-rw-r--r--addons/sale_mrp/i18n/ckb.po96
-rw-r--r--addons/sale_mrp/i18n/cs.po99
-rw-r--r--addons/sale_mrp/i18n/da.po100
-rw-r--r--addons/sale_mrp/i18n/de.po98
-rw-r--r--addons/sale_mrp/i18n/el.po97
-rw-r--r--addons/sale_mrp/i18n/en_AU.po68
-rw-r--r--addons/sale_mrp/i18n/en_GB.po68
-rw-r--r--addons/sale_mrp/i18n/eo.po92
-rw-r--r--addons/sale_mrp/i18n/es.po99
-rw-r--r--addons/sale_mrp/i18n/es_BO.po67
-rw-r--r--addons/sale_mrp/i18n/es_CL.po68
-rw-r--r--addons/sale_mrp/i18n/es_CO.po84
-rw-r--r--addons/sale_mrp/i18n/es_CR.po67
-rw-r--r--addons/sale_mrp/i18n/es_DO.po67
-rw-r--r--addons/sale_mrp/i18n/es_EC.po68
-rw-r--r--addons/sale_mrp/i18n/es_MX.po97
-rw-r--r--addons/sale_mrp/i18n/es_PE.po68
-rw-r--r--addons/sale_mrp/i18n/es_PY.po64
-rw-r--r--addons/sale_mrp/i18n/es_VE.po67
-rw-r--r--addons/sale_mrp/i18n/et.po98
-rw-r--r--addons/sale_mrp/i18n/eu.po98
-rw-r--r--addons/sale_mrp/i18n/fa.po30
-rw-r--r--addons/sale_mrp/i18n/fi.po99
-rw-r--r--addons/sale_mrp/i18n/fo.po63
-rw-r--r--addons/sale_mrp/i18n/fr.po100
-rw-r--r--addons/sale_mrp/i18n/fr_BE.po64
-rw-r--r--addons/sale_mrp/i18n/gl.po66
-rw-r--r--addons/sale_mrp/i18n/gu.po26
-rw-r--r--addons/sale_mrp/i18n/he.po97
-rw-r--r--addons/sale_mrp/i18n/hi.po92
-rw-r--r--addons/sale_mrp/i18n/hr.po97
-rw-r--r--addons/sale_mrp/i18n/hu.po98
-rw-r--r--addons/sale_mrp/i18n/hy.po63
-rw-r--r--addons/sale_mrp/i18n/id.po98
-rw-r--r--addons/sale_mrp/i18n/is.po30
-rw-r--r--addons/sale_mrp/i18n/it.po96
-rw-r--r--addons/sale_mrp/i18n/ja.po98
-rw-r--r--addons/sale_mrp/i18n/ka.po97
-rw-r--r--addons/sale_mrp/i18n/kab.po66
-rw-r--r--addons/sale_mrp/i18n/kk.po63
-rw-r--r--addons/sale_mrp/i18n/km.po26
-rw-r--r--addons/sale_mrp/i18n/ko.po97
-rw-r--r--addons/sale_mrp/i18n/lb.po32
-rw-r--r--addons/sale_mrp/i18n/lo.po63
-rw-r--r--addons/sale_mrp/i18n/lt.po98
-rw-r--r--addons/sale_mrp/i18n/lv.po92
-rw-r--r--addons/sale_mrp/i18n/mk.po67
-rw-r--r--addons/sale_mrp/i18n/mn.po99
-rw-r--r--addons/sale_mrp/i18n/nb.po97
-rw-r--r--addons/sale_mrp/i18n/nl.po98
-rw-r--r--addons/sale_mrp/i18n/nl_BE.po67
-rw-r--r--addons/sale_mrp/i18n/pl.po100
-rw-r--r--addons/sale_mrp/i18n/pt.po100
-rw-r--r--addons/sale_mrp/i18n/pt_BR.po101
-rw-r--r--addons/sale_mrp/i18n/ro.po98
-rw-r--r--addons/sale_mrp/i18n/ru.po99
-rw-r--r--addons/sale_mrp/i18n/sale_mrp.pot92
-rw-r--r--addons/sale_mrp/i18n/si.po92
-rw-r--r--addons/sale_mrp/i18n/sk.po100
-rw-r--r--addons/sale_mrp/i18n/sl.po98
-rw-r--r--addons/sale_mrp/i18n/sr.po29
-rw-r--r--addons/sale_mrp/i18n/sr@latin.po30
-rw-r--r--addons/sale_mrp/i18n/sv.po97
-rw-r--r--addons/sale_mrp/i18n/te.po63
-rw-r--r--addons/sale_mrp/i18n/th.po30
-rw-r--r--addons/sale_mrp/i18n/tr.po101
-rw-r--r--addons/sale_mrp/i18n/uk.po97
-rw-r--r--addons/sale_mrp/i18n/ur.po92
-rw-r--r--addons/sale_mrp/i18n/vi.po99
-rw-r--r--addons/sale_mrp/i18n/zh_CN.po100
-rw-r--r--addons/sale_mrp/i18n/zh_TW.po96
-rw-r--r--addons/sale_mrp/models/__init__.py6
-rw-r--r--addons/sale_mrp/models/account_move.py31
-rw-r--r--addons/sale_mrp/models/mrp_production.py38
-rw-r--r--addons/sale_mrp/models/sale.py145
-rw-r--r--addons/sale_mrp/security/ir.model.access.csv7
-rw-r--r--addons/sale_mrp/tests/__init__.py8
-rw-r--r--addons/sale_mrp/tests/test_multistep_manufacturing.py129
-rw-r--r--addons/sale_mrp/tests/test_sale_mrp_flow.py1644
-rw-r--r--addons/sale_mrp/tests/test_sale_mrp_kit_bom.py166
-rw-r--r--addons/sale_mrp/tests/test_sale_mrp_lead_time.py162
-rw-r--r--addons/sale_mrp/tests/test_sale_mrp_procurement.py172
-rw-r--r--addons/sale_mrp/views/mrp_production_views.xml19
-rw-r--r--addons/sale_mrp/views/sale_order_views.xml18
93 files changed, 8807 insertions, 0 deletions
diff --git a/addons/sale_mrp/__init__.py b/addons/sale_mrp/__init__.py
new file mode 100644
index 00000000..dc5e6b69
--- /dev/null
+++ b/addons/sale_mrp/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import models
diff --git a/addons/sale_mrp/__manifest__.py b/addons/sale_mrp/__manifest__.py
new file mode 100644
index 00000000..97010c28
--- /dev/null
+++ b/addons/sale_mrp/__manifest__.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+
+{
+ 'name': 'Sales and MRP Management',
+ 'version': '1.0',
+ 'category': 'Hidden',
+ 'description': """
+This module provides facility to the user to install mrp and sales modulesat a time.
+====================================================================================
+
+It is basically used when we want to keep track of production orders generated
+from sales order. It adds sales name and sales Reference on production order.
+ """,
+ 'depends': ['mrp', 'sale_stock'],
+ 'data': [
+ 'security/ir.model.access.csv',
+ 'views/mrp_production_views.xml',
+ 'views/sale_order_views.xml'
+ ],
+ 'demo': [],
+ 'installable': True,
+ 'auto_install': True,
+ 'license': 'LGPL-3',
+}
diff --git a/addons/sale_mrp/i18n/am.po b/addons/sale_mrp/i18n/am.po
new file mode 100644
index 00000000..b0b37370
--- /dev/null
+++ b/addons/sale_mrp/i18n/am.po
@@ -0,0 +1,63 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Amharic (http://www.transifex.com/odoo/odoo-9/language/am/)\n"
+"Language: am\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "ወደ ግምጃ ቤት የሚገቡና የሚወጡ እቃዎች"
diff --git a/addons/sale_mrp/i18n/ar.po b/addons/sale_mrp/i18n/ar.po
new file mode 100644
index 00000000..aadc2e4c
--- /dev/null
+++ b/addons/sale_mrp/i18n/ar.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Mustafa Rawi <mustafa@cubexco.com>, 2020
+# Osama Ahmaro <osamaahmaro@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Osama Ahmaro <osamaahmaro@gmail.com>, 2020\n"
+"Language-Team: Arabic (https://www.transifex.com/odoo/teams/41243/ar/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "الاسم المعروض"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "المُعرف"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "عنصر اليومية"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "آخر تعديل في"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "أمر الانتاج"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "أمر البيع"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "بند أمر المبيعات"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/az.po b/addons/sale_mrp/i18n/az.po
new file mode 100644
index 00000000..4aa71a42
--- /dev/null
+++ b/addons/sale_mrp/i18n/az.po
@@ -0,0 +1,26 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-09-18 09:49+0000\n"
+"PO-Revision-Date: 2018-08-24 09:24+0000\n"
+"Language-Team: Azerbaijani (https://www.transifex.com/odoo/teams/41243/az/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: az\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/bg.po b/addons/sale_mrp/i18n/bg.po
new file mode 100644
index 00000000..8d48bbdb
--- /dev/null
+++ b/addons/sale_mrp/i18n/bg.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Rosen Vladimirov <vladimirov.rosen@gmail.com>, 2020
+# Igor Sheludko <igor.sheludko@gmail.com>, 2020
+# Maria Boyadjieva <marabo2000@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Maria Boyadjieva <marabo2000@gmail.com>, 2020\n"
+"Language-Team: Bulgarian (https://www.transifex.com/odoo/teams/41243/bg/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Име за показване"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Счетоводна операция"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Последно променено на"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Производствена поръчка"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Поръчка"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Ред на поръчка за продажби"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/bn.po b/addons/sale_mrp/i18n/bn.po
new file mode 100644
index 00000000..c9e171f8
--- /dev/null
+++ b/addons/sale_mrp/i18n/bn.po
@@ -0,0 +1,96 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Abu Zafar <azmikbal@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Abu Zafar <azmikbal@gmail.com>, 2021\n"
+"Language-Team: Bengali (https://www.transifex.com/odoo/teams/41243/bn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: bn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "প্রদর্শন নাম"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "আইডি "
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "জার্নাল আইটেম"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "সর্বশেষ সংশোধিত"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "বিক্রয় আদেশ"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "বিক্রয় আদেশ লাইন"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/bs.po b/addons/sale_mrp/i18n/bs.po
new file mode 100644
index 00000000..71f0212b
--- /dev/null
+++ b/addons/sale_mrp/i18n/bs.po
@@ -0,0 +1,29 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-09-18 09:49+0000\n"
+"PO-Revision-Date: 2018-09-18 09:49+0000\n"
+"Last-Translator: Martin Trigaux, 2018\n"
+"Language-Team: Bosnian (https://www.transifex.com/odoo/teams/41243/bs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: bs\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: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr "Stavka fakture"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Stavka prodajne narudžbe"
diff --git a/addons/sale_mrp/i18n/ca.po b/addons/sale_mrp/i18n/ca.po
new file mode 100644
index 00000000..bf2539fd
--- /dev/null
+++ b/addons/sale_mrp/i18n/ca.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Quim - eccit <quim@eccit.com>, 2020
+# Manel Fernandez Ramirez <manelfera@outlook.com>, 2020
+# Josep Anton Belchi, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Josep Anton Belchi, 2021\n"
+"Language-Team: Catalan (https://www.transifex.com/odoo/teams/41243/ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nom mostrat"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Anotació comptable"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Última modificació el "
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordre de producció"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Comanda de venda"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línia comanda de venda"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/ckb.po b/addons/sale_mrp/i18n/ckb.po
new file mode 100644
index 00000000..0467cd72
--- /dev/null
+++ b/addons/sale_mrp/i18n/ckb.po
@@ -0,0 +1,96 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Haval Abdulkarim <haval.abdulkarim@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Haval Abdulkarim <haval.abdulkarim@gmail.com>, 2020\n"
+"Language-Team: Central Kurdish (https://www.transifex.com/odoo/teams/41243/ckb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ckb\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "پیشاندانی ناو"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ناسنامە"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "دانەی یادنامە"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "دواین دەستکاری لە"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "داواکاری فرۆشتن"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "هێڵی داواکاری فرۆشتن"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/cs.po b/addons/sale_mrp/i18n/cs.po
new file mode 100644
index 00000000..c4d5c431
--- /dev/null
+++ b/addons/sale_mrp/i18n/cs.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Jan Horzinka <jan.horzinka@centrum.cz>, 2020
+# trendspotter, 2020
+# karolína schusterová <karolina.schusterova@vdp.sk>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: karolína schusterová <karolina.schusterova@vdp.sk>, 2021\n"
+"Language-Team: Czech (https://www.transifex.com/odoo/teams/41243/cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: cs\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Výrobní</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Prodej</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Zobrazované jméno"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Položka deníku"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Naposled změněno"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Výrobní příkaz"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Prodejní objednávka"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Řádek zakázky"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/da.po b/addons/sale_mrp/i18n/da.po
new file mode 100644
index 00000000..2b484548
--- /dev/null
+++ b/addons/sale_mrp/i18n/da.po
@@ -0,0 +1,100 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Morten Schou <ms@msteknik.dk>, 2020
+# Jesper Carstensen <jc@danodoo.dk>, 2020
+# Sanne Kristensen <sanne@vkdata.dk>, 2020
+# Mads Søndergaard <mads@vkdata.dk>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Mads Søndergaard <mads@vkdata.dk>, 2020\n"
+"Language-Team: Danish (https://www.transifex.com/odoo/teams/41243/da/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Produktion</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Salg</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Antal genereret Produktionsordre"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Antal Kilde Salgsordre"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Vis navn"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Journalpost"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Sidst ændret den"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Produktionsordre Genereret af %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Produktionsordre"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Salgsordre"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Salgsordrelinje"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "Kilder Salgsordre tilhørende %s"
diff --git a/addons/sale_mrp/i18n/de.po b/addons/sale_mrp/i18n/de.po
new file mode 100644
index 00000000..a7c6af4b
--- /dev/null
+++ b/addons/sale_mrp/i18n/de.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Robert Förster <hello@suppliot.eu>, 2021
+# Chris Egal <sodaswed@web.de>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Chris Egal <sodaswed@web.de>, 2021\n"
+"Language-Team: German (https://www.transifex.com/odoo/teams/41243/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Fertigungsauftrag</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Verkaufen</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Anzeigename"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Buchungszeile"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Zuletzt geändert am"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Fertigungsaufträge generiert durch %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Fertigungsauftrag"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Verkaufsauftrag"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Auftragsposition"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/el.po b/addons/sale_mrp/i18n/el.po
new file mode 100644
index 00000000..0300b956
--- /dev/null
+++ b/addons/sale_mrp/i18n/el.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Kostas Goutoudis <goutoudis@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Kostas Goutoudis <goutoudis@gmail.com>, 2020\n"
+"Language-Team: Greek (https://www.transifex.com/odoo/teams/41243/el/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: el\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Εμφάνιση Ονόματος"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "Κωδικός"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Στοιχείο Ημερολογίου"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Τελευταία τροποποίηση στις"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Εντολή Παραγωγής"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Παραγγελία"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Γραμμή Παραγγελίας"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/en_AU.po b/addons/sale_mrp/i18n/en_AU.po
new file mode 100644
index 00000000..b0509cd6
--- /dev/null
+++ b/addons/sale_mrp/i18n/en_AU.po
@@ -0,0 +1,68 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Jaron Soininen <jaron@bodybuildpro.com>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: English (Australia) (http://www.transifex.com/odoo/odoo-9/"
+"language/en_AU/)\n"
+"Language: en_AU\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indicate the Customer Reference from sales order."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indicate the name of sales order."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Properties"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Sale Name"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Sale Reference"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Sales Order Line"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Stock Move"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Manufacturing Order"
diff --git a/addons/sale_mrp/i18n/en_GB.po b/addons/sale_mrp/i18n/en_GB.po
new file mode 100644
index 00000000..e7e2bf0f
--- /dev/null
+++ b/addons/sale_mrp/i18n/en_GB.po
@@ -0,0 +1,68 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Andi Chandler <andi@gowling.com>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: English (United Kingdom) (http://www.transifex.com/odoo/"
+"odoo-9/language/en_GB/)\n"
+"Language: en_GB\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indicate the Customer Reference from sales order."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indicate the name of sales order."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Properties"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Sale Name"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Sale Reference"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Sales Order Line"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Stock Move"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Manufacturing Order"
diff --git a/addons/sale_mrp/i18n/eo.po b/addons/sale_mrp/i18n/eo.po
new file mode 100644
index 00000000..1591b150
--- /dev/null
+++ b/addons/sale_mrp/i18n/eo.po
@@ -0,0 +1,92 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Language-Team: Esperanto (https://www.transifex.com/odoo/teams/41243/eo/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: eo\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/es.po b/addons/sale_mrp/i18n/es.po
new file mode 100644
index 00000000..d7a319c5
--- /dev/null
+++ b/addons/sale_mrp/i18n/es.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Jesús Alan Ramos Rodríguez <alan.ramos@jarsa.com.mx>, 2020
+# Lucia Pacheco <lpo@odoo.com>, 2021
+# Cécile Collart <cco@odoo.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Cécile Collart <cco@odoo.com>, 2021\n"
+"Language-Team: Spanish (https://www.transifex.com/odoo/teams/41243/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Fabricación</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Venta</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Número de órdenes de fabricación generadas"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Número de órdenes de venta origen"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Apunte contable"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Última modificación el"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Órdenes de fabricación generadas por %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Orden de producción"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Pedido de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea de pedido de venta"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/es_BO.po b/addons/sale_mrp/i18n/es_BO.po
new file mode 100644
index 00000000..f90f9247
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_BO.po
@@ -0,0 +1,67 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:03+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Spanish (Bolivia) (http://www.transifex.com/odoo/odoo-9/"
+"language/es_BO/)\n"
+"Language: es_BO\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Órden de Producción"
diff --git a/addons/sale_mrp/i18n/es_CL.po b/addons/sale_mrp/i18n/es_CL.po
new file mode 100644
index 00000000..a5e0a27b
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_CL.po
@@ -0,0 +1,68 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Daniel Santibáñez Polanco <dansanti@gmail.com>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2016-03-08 23:21+0000\n"
+"Last-Translator: Daniel Santibáñez Polanco <dansanti@gmail.com>\n"
+"Language-Team: Spanish (Chile) (http://www.transifex.com/odoo/odoo-9/"
+"language/es_CL/)\n"
+"Language: es_CL\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indica la referencia del cliente del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indica el nombre del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Nombre de venta"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Referencia de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea de pedido de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Moviemiento de stock"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Órden de producción"
diff --git a/addons/sale_mrp/i18n/es_CO.po b/addons/sale_mrp/i18n/es_CO.po
new file mode 100644
index 00000000..614c4cf4
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_CO.po
@@ -0,0 +1,84 @@
+# #-#-#-#-# es_CO.po (Odoo 9.0) #-#-#-#-#
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Mateo Tibaquirá <nestormateo@gmail.com>, 2015
+# #-#-#-#-# es_CO.po (Odoo 9.0) #-#-#-#-#
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-10-24 07:14+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Spanish (Colombia) (http://www.transifex.com/odoo/odoo-9/"
+"language/es_CO/)\n"
+"Language: es_CO\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"#-#-#-#-# es_CO.po (Odoo 9.0) #-#-#-#-#\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-# es_CO.po (Odoo 9.0) #-#-#-#-#\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indica la Referencia del Cliente desde la orden de venta."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indica el nombre de la orden de venta."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Nombre de la Venta"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Referencia de la Venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+#, fuzzy
+msgid "Sales Order Line"
+msgstr ""
+"#-#-#-#-# es_CO.po (Odoo 9.0) #-#-#-#-#\n"
+"Línea Orden de Venta\n"
+"#-#-#-#-# es_CO.po (Odoo 9.0) #-#-#-#-#\n"
+"Línea de Pedido de Venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento de Existencias"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Orden de Manufactura"
diff --git a/addons/sale_mrp/i18n/es_CR.po b/addons/sale_mrp/i18n/es_CR.po
new file mode 100644
index 00000000..b5f7d0c8
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_CR.po
@@ -0,0 +1,67 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:03+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Spanish (Costa Rica) (http://www.transifex.com/odoo/odoo-9/"
+"language/es_CR/)\n"
+"Language: es_CR\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indica la referencia del cliente del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indica el nombre del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea pedido de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento stock"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Orden de fabricación"
diff --git a/addons/sale_mrp/i18n/es_DO.po b/addons/sale_mrp/i18n/es_DO.po
new file mode 100644
index 00000000..234a0571
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_DO.po
@@ -0,0 +1,67 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2016-03-13 23:27+0000\n"
+"Last-Translator: Juliano Henriquez <juliano@consultoriahenca.com>\n"
+"Language-Team: Spanish (Dominican Republic) (http://www.transifex.com/odoo/"
+"odoo-9/language/es_DO/)\n"
+"Language: es_DO\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indicar la referencia del cliente del pedido de ventas."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indicar el nombre de orden de venta."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Nombre de venta"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Referencia de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea pedido de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento de existencias"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Orden de Fabricación"
diff --git a/addons/sale_mrp/i18n/es_EC.po b/addons/sale_mrp/i18n/es_EC.po
new file mode 100644
index 00000000..4570a329
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_EC.po
@@ -0,0 +1,68 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Rick Hunter <rick_hunter_ec@yahoo.com>, 2015-2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2016-01-15 04:45+0000\n"
+"Last-Translator: Rick Hunter <rick_hunter_ec@yahoo.com>\n"
+"Language-Team: Spanish (Ecuador) (http://www.transifex.com/odoo/odoo-9/"
+"language/es_EC/)\n"
+"Language: es_EC\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indica la Referencia del Cliente de la Orden de Venta"
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indica el nombre de la Orden de Venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Nombre de Venta"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Referencia de Venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea pedido de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Moviemiento de stock"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Órden de producción"
diff --git a/addons/sale_mrp/i18n/es_MX.po b/addons/sale_mrp/i18n/es_MX.po
new file mode 100644
index 00000000..6a1df659
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_MX.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Cécile Collart <cco@odoo.com>, 2021
+# Lucia Pacheco <lpo@odoo.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Lucia Pacheco <lpo@odoo.com>, 2021\n"
+"Language-Team: Spanish (Mexico) (https://www.transifex.com/odoo/teams/41243/es_MX/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: es_MX\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Fabricación</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Venta</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Número de órdenes de fabricación generadas"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Número de órdenes de venta origen"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nombre en pantalla"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Apunte contable"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Última modificación el"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Órdenes de fabricación generadas por %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Orden de producción"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Orden de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea de orden de venta"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "Ordenes de venta de origen de %s"
diff --git a/addons/sale_mrp/i18n/es_PE.po b/addons/sale_mrp/i18n/es_PE.po
new file mode 100644
index 00000000..37018db0
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_PE.po
@@ -0,0 +1,68 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Carlos Eduardo Rodriguez Rossi <crodriguez@samemotion.com>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2016-06-16 20:07+0000\n"
+"Last-Translator: Carlos Eduardo Rodriguez Rossi <crodriguez@samemotion.com>\n"
+"Language-Team: Spanish (Peru) (http://www.transifex.com/odoo/odoo-9/language/"
+"es_PE/)\n"
+"Language: es_PE\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indicar la Referencia del Cliente del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indicar el nombre del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Nombre de Venta"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Referencia de Venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea de Pedido de Venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento de Stock"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Orden de Producción"
diff --git a/addons/sale_mrp/i18n/es_PY.po b/addons/sale_mrp/i18n/es_PY.po
new file mode 100644
index 00000000..5b3bc792
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_PY.po
@@ -0,0 +1,64 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:03+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Spanish (Paraguay) (http://www.transifex.com/odoo/odoo-9/"
+"language/es_PY/)\n"
+"Language: es_PY\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea pedido de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento stock"
diff --git a/addons/sale_mrp/i18n/es_VE.po b/addons/sale_mrp/i18n/es_VE.po
new file mode 100644
index 00000000..3728f02e
--- /dev/null
+++ b/addons/sale_mrp/i18n/es_VE.po
@@ -0,0 +1,67 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:03+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Spanish (Venezuela) (http://www.transifex.com/odoo/odoo-9/"
+"language/es_VE/)\n"
+"Language: es_VE\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indica la referencia del cliente del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indica el nombre del pedido de venta."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Línea pedido de venta"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento stock"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Orden de fabricación"
diff --git a/addons/sale_mrp/i18n/et.po b/addons/sale_mrp/i18n/et.po
new file mode 100644
index 00000000..a9b2c4e1
--- /dev/null
+++ b/addons/sale_mrp/i18n/et.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Eneli Õigus <enelioigus@gmail.com>, 2021
+# Piia Paurson <piia@avalah.ee>, 2021
+# Triine Aavik <triine@avalah.ee>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Triine Aavik <triine@avalah.ee>, 2021\n"
+"Language-Team: Estonian (https://www.transifex.com/odoo/teams/41243/et/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: et\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Tootmine</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Müük</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Genereeritud tootmistellimuse arv"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Seotud müügitellimuste arv"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Kuva nimi"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Andmiku kanderida"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Viimati muudetud (millal)"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "%sst genereeritud tootmistellimused"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Tootmistellimus"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Müügitellimus"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Müügitellimuse rida"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "%sseotud müügitellimused"
diff --git a/addons/sale_mrp/i18n/eu.po b/addons/sale_mrp/i18n/eu.po
new file mode 100644
index 00000000..113b75bf
--- /dev/null
+++ b/addons/sale_mrp/i18n/eu.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2021
+# Eneko <eastigarraga@codesyntax.com>, 2021
+# Mikel Lizarralde <mikellizarralde@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Mikel Lizarralde <mikellizarralde@gmail.com>, 2021\n"
+"Language-Team: Basque (https://www.transifex.com/odoo/teams/41243/eu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: eu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Izena erakutsi"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Egunkari-artikulua"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Azken aldaketa"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Salmenta-eskaera"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Salmenta-eskaera lerroa"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/fa.po b/addons/sale_mrp/i18n/fa.po
new file mode 100644
index 00000000..1595df0f
--- /dev/null
+++ b/addons/sale_mrp/i18n/fa.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2018
+# Hamid Darabi, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-09-18 09:49+0000\n"
+"PO-Revision-Date: 2018-09-18 09:49+0000\n"
+"Last-Translator: Hamid Darabi, 2018\n"
+"Language-Team: Persian (https://www.transifex.com/odoo/teams/41243/fa/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: fa\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr "سطر فاکتور"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "سطر سفارش‌فروش"
diff --git a/addons/sale_mrp/i18n/fi.po b/addons/sale_mrp/i18n/fi.po
new file mode 100644
index 00000000..d14bd806
--- /dev/null
+++ b/addons/sale_mrp/i18n/fi.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Kari Lindgren <kari.lindgren@emsystems.fi>, 2020
+# Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 2020
+# Tuomo Aura <tuomo.aura@web-veistamo.fi>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Tuomo Aura <tuomo.aura@web-veistamo.fi>, 2020\n"
+"Language-Team: Finnish (https://www.transifex.com/odoo/teams/41243/fi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Näyttönimi"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "Tunniste (ID)"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Päiväkirjatapahtuma"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Viimeksi muokattu"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Valmistustilaus"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Myyntitilaus"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Myyntitilausrivi"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/fo.po b/addons/sale_mrp/i18n/fo.po
new file mode 100644
index 00000000..2846b36f
--- /dev/null
+++ b/addons/sale_mrp/i18n/fo.po
@@ -0,0 +1,63 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-08-25 10:24+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: Faroese (http://www.transifex.com/odoo/odoo-9/language/fo/)\n"
+"Language: fo\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Søluordra-linja"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/fr.po b/addons/sale_mrp/i18n/fr.po
new file mode 100644
index 00000000..b90ed988
--- /dev/null
+++ b/addons/sale_mrp/i18n/fr.po
@@ -0,0 +1,100 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Aurélien Pillevesse <aurelienpillevesse@hotmail.fr>, 2020
+# Cécile Collart <cco@odoo.com>, 2020
+# Gilles Mangin <gilles.mangin@phidias.fr>, 2020
+# Mathieu Germain <mgm@odoo.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Mathieu Germain <mgm@odoo.com>, 2021\n"
+"Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Production</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Vente</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Nombre d'OF générés"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Nombre des SO d'origine"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nom affiché"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Écriture comptable"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Dernière modification le"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Ordre de fabrication généré par %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordre de fabrication"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Bon de commande"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Ligne de bons de commande"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "Bon de commande d'origine de %s"
diff --git a/addons/sale_mrp/i18n/fr_BE.po b/addons/sale_mrp/i18n/fr_BE.po
new file mode 100644
index 00000000..23a9db00
--- /dev/null
+++ b/addons/sale_mrp/i18n/fr_BE.po
@@ -0,0 +1,64 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-11-18 13:40+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: French (Belgium) (http://www.transifex.com/odoo/odoo-9/"
+"language/fr_BE/)\n"
+"Language: fr_BE\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Ligne du bon de commande"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/gl.po b/addons/sale_mrp/i18n/gl.po
new file mode 100644
index 00000000..92d5f0d8
--- /dev/null
+++ b/addons/sale_mrp/i18n/gl.po
@@ -0,0 +1,66 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Galician (http://www.transifex.com/odoo/odoo-9/language/gl/)\n"
+"Language: gl\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Indica a referencia do cliente do pedido de venda."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Indica o nome do pedido de venda."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Liña de ordes de venda"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movemento de stock"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Orde de fabricación"
diff --git a/addons/sale_mrp/i18n/gu.po b/addons/sale_mrp/i18n/gu.po
new file mode 100644
index 00000000..cb15b070
--- /dev/null
+++ b/addons/sale_mrp/i18n/gu.po
@@ -0,0 +1,26 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-22 14:10+0000\n"
+"PO-Revision-Date: 2018-03-22 14:10+0000\n"
+"Language-Team: Gujarati (https://www.transifex.com/odoo/teams/41243/gu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: gu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/he.po b/addons/sale_mrp/i18n/he.po
new file mode 100644
index 00000000..ad69ee18
--- /dev/null
+++ b/addons/sale_mrp/i18n/he.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# ZVI BLONDER <ZVIBLONDER@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: ZVI BLONDER <ZVIBLONDER@gmail.com>, 2020\n"
+"Language-Team: Hebrew (https://www.transifex.com/odoo/teams/41243/he/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: he\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "הצג שם"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "תעודה מזהה"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "פקודת יומן"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "שינוי אחרון ב"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "הוראת ייצור"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "הזמנת לקוח"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "שורת הזמנת לקוח"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/hi.po b/addons/sale_mrp/i18n/hi.po
new file mode 100644
index 00000000..8078c975
--- /dev/null
+++ b/addons/sale_mrp/i18n/hi.po
@@ -0,0 +1,92 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Language-Team: Hindi (https://www.transifex.com/odoo/teams/41243/hi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: hi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/hr.po b/addons/sale_mrp/i18n/hr.po
new file mode 100644
index 00000000..6cafc8cf
--- /dev/null
+++ b/addons/sale_mrp/i18n/hr.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Bole <bole@dajmi5.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Bole <bole@dajmi5.com>, 2021\n"
+"Language-Team: Croatian (https://www.transifex.com/odoo/teams/41243/hr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: hr\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: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Proizvodnja</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Naziv"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Stavka dnevnika"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Zadnja promjena"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Proizvodni nalog"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Prodajni nalog"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Stavka prodajnog naloga"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/hu.po b/addons/sale_mrp/i18n/hu.po
new file mode 100644
index 00000000..58e5e85f
--- /dev/null
+++ b/addons/sale_mrp/i18n/hu.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# gezza <geza.nagy@oregional.hu>, 2021
+# Ákos Nagy <akos.nagy@oregional.hu>, 2021
+# Tamás Németh <ntomasz81@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Tamás Németh <ntomasz81@gmail.com>, 2021\n"
+"Language-Team: Hungarian (https://www.transifex.com/odoo/teams/41243/hu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Termelés</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Név megjelenítése"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "Azonosító"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Napló elem"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Legutóbb módosítva"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Termelési rendelés"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Értékesítési rendelés"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Értékesítési rendelés sor"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/hy.po b/addons/sale_mrp/i18n/hy.po
new file mode 100644
index 00000000..c288f54f
--- /dev/null
+++ b/addons/sale_mrp/i18n/hy.po
@@ -0,0 +1,63 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Armenian (http://www.transifex.com/odoo/odoo-9/language/hy/)\n"
+"Language: hy\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Հատկություններ"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/id.po b/addons/sale_mrp/i18n/id.po
new file mode 100644
index 00000000..ff6c2a33
--- /dev/null
+++ b/addons/sale_mrp/i18n/id.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Ryanto The <ry.the77@gmail.com>, 2020
+# Ikhsanul Wirsa <iwirsa02@outlook.co.id>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Ikhsanul Wirsa <iwirsa02@outlook.co.id>, 2020\n"
+"Language-Team: Indonesian (https://www.transifex.com/odoo/teams/41243/id/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: id\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nama Tampilan"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Item Jurnal"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Terakhir diubah pada"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Order Produksi"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Order Penjualan"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Detail Order Penjualan"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/is.po b/addons/sale_mrp/i18n/is.po
new file mode 100644
index 00000000..9a373aad
--- /dev/null
+++ b/addons/sale_mrp/i18n/is.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Bjorn Ingvarsson <boi@exigo.is>, 2018
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-09-18 09:49+0000\n"
+"PO-Revision-Date: 2018-08-24 09:24+0000\n"
+"Last-Translator: Bjorn Ingvarsson <boi@exigo.is>, 2018\n"
+"Language-Team: Icelandic (https://www.transifex.com/odoo/teams/41243/is/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: is\n"
+"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr "Invoice Line"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Sales Order Line"
diff --git a/addons/sale_mrp/i18n/it.po b/addons/sale_mrp/i18n/it.po
new file mode 100644
index 00000000..d0a6439d
--- /dev/null
+++ b/addons/sale_mrp/i18n/it.po
@@ -0,0 +1,96 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Sergio Zanchetta <primes2h@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Sergio Zanchetta <primes2h@gmail.com>, 2021\n"
+"Language-Team: Italian (https://www.transifex.com/odoo/teams/41243/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Produzione</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Vendita</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Numero di OdP generati"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Numero OdV di origine"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nome visualizzato"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Movimento contabile"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Ultima modifica il"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Ordini di produzione generati da %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordine di produzione"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Ordine di vendita"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Riga ordine di vendita"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/ja.po b/addons/sale_mrp/i18n/ja.po
new file mode 100644
index 00000000..24911850
--- /dev/null
+++ b/addons/sale_mrp/i18n/ja.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Shunho Kin <s-kin@shonan-innovation.co.jp>, 2020
+# Martin Trigaux, 2020
+# Yoshi Tashiro <tashiro@roomsfor.hk>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Yoshi Tashiro <tashiro@roomsfor.hk>, 2020\n"
+"Language-Team: Japanese (https://www.transifex.com/odoo/teams/41243/ja/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ja\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "表示名"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "仕訳項目"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "最終更新日"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "製造オーダ"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "販売オーダ"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "販売オーダ明細"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/ka.po b/addons/sale_mrp/i18n/ka.po
new file mode 100644
index 00000000..79071c7d
--- /dev/null
+++ b/addons/sale_mrp/i18n/ka.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Mari Khomeriki <mari.khomeriki@maxinai.com>, 2021
+# Martin Trigaux, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Martin Trigaux, 2021\n"
+"Language-Team: Georgian (https://www.transifex.com/odoo/teams/41243/ka/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ka\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "სახელი"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "იდენტიფიკატორი/ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "ბოლოს განახლებულია"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "გაყიდვის ორდერი"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "გაყიდვის ორდერის ხაზი"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/kab.po b/addons/sale_mrp/i18n/kab.po
new file mode 100644
index 00000000..140b2021
--- /dev/null
+++ b/addons/sale_mrp/i18n/kab.po
@@ -0,0 +1,66 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Kabyle (http://www.transifex.com/odoo/odoo-9/language/kab/)\n"
+"Language: kab\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Ad Imud Tamsiɣelt n Umsaɣ si Tladna n Uznuzu"
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Ad imud isem n tladna n uznuzu."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Tulmisin"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Isem n uznuzu"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Tamsisɣelt n uznuzu"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Izirig n tladna n uznuzu"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Amussu n uselɣas"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Taladna n Ufares"
diff --git a/addons/sale_mrp/i18n/kk.po b/addons/sale_mrp/i18n/kk.po
new file mode 100644
index 00000000..dc416af3
--- /dev/null
+++ b/addons/sale_mrp/i18n/kk.po
@@ -0,0 +1,63 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Kazakh (http://www.transifex.com/odoo/odoo-9/language/kk/)\n"
+"Language: kk\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Баптаулар"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/km.po b/addons/sale_mrp/i18n/km.po
new file mode 100644
index 00000000..bb282c96
--- /dev/null
+++ b/addons/sale_mrp/i18n/km.po
@@ -0,0 +1,26 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-09-18 09:49+0000\n"
+"PO-Revision-Date: 2018-09-18 09:49+0000\n"
+"Language-Team: Khmer (https://www.transifex.com/odoo/teams/41243/km/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: km\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/ko.po b/addons/sale_mrp/i18n/ko.po
new file mode 100644
index 00000000..e12e5118
--- /dev/null
+++ b/addons/sale_mrp/i18n/ko.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# JH CHOI <hwangtog@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: JH CHOI <hwangtog@gmail.com>, 2020\n"
+"Language-Team: Korean (https://www.transifex.com/odoo/teams/41243/ko/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ko\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "이름 표시"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "분개 항목"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "최근 수정"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "생산 주문"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "판매 주문"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "판매 주문 명세"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/lb.po b/addons/sale_mrp/i18n/lb.po
new file mode 100644
index 00000000..b0ab7a76
--- /dev/null
+++ b/addons/sale_mrp/i18n/lb.po
@@ -0,0 +1,32 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~12.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-08-12 11:32+0000\n"
+"PO-Revision-Date: 2019-08-26 09:14+0000\n"
+"Language-Team: Luxembourgish (https://www.transifex.com/odoo/teams/41243/lb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: lb\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale_mrp.py:88
+#, python-format
+msgid "Not enough inventory!"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/lo.po b/addons/sale_mrp/i18n/lo.po
new file mode 100644
index 00000000..cb397c73
--- /dev/null
+++ b/addons/sale_mrp/i18n/lo.po
@@ -0,0 +1,63 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-11-13 09:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Lao (http://www.transifex.com/odoo/odoo-9/language/lo/)\n"
+"Language: lo\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "ລາຍການສິນຄ້າທີ່ສັ່ງຊື້"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/lt.po b/addons/sale_mrp/i18n/lt.po
new file mode 100644
index 00000000..8d9d5345
--- /dev/null
+++ b/addons/sale_mrp/i18n/lt.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2021
+# UAB "Draugiški sprendimai" <transifex@draugiskisprendimai.lt>, 2021
+# Linas Versada <linaskrisiukenas@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Linas Versada <linaskrisiukenas@gmail.com>, 2021\n"
+"Language-Team: Lithuanian (https://www.transifex.com/odoo/teams/41243/lt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: lt\n"
+"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Rodomas pavadinimas"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Žurnalo įrašas"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Paskutinį kartą keista"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Gamybos užsakymas"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Pardavimo užsakymas"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Pardavimo užsakymo eilutė"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/lv.po b/addons/sale_mrp/i18n/lv.po
new file mode 100644
index 00000000..f71b9e9a
--- /dev/null
+++ b/addons/sale_mrp/i18n/lv.po
@@ -0,0 +1,92 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Language-Team: Latvian (https://www.transifex.com/odoo/teams/41243/lv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: lv\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/mk.po b/addons/sale_mrp/i18n/mk.po
new file mode 100644
index 00000000..492dc24d
--- /dev/null
+++ b/addons/sale_mrp/i18n/mk.po
@@ -0,0 +1,67 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Macedonian (http://www.transifex.com/odoo/odoo-9/language/"
+"mk/)\n"
+"Language: mk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Ја означува референцата на клиентот од налогот за продажба."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Го означува името на налогот за продажба."
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Својства"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr "Име на продажба"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr "Референца на продажба"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Ставка од налог за продажба"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Движење на залиха"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Налог за обработка"
diff --git a/addons/sale_mrp/i18n/mn.po b/addons/sale_mrp/i18n/mn.po
new file mode 100644
index 00000000..58aaa35b
--- /dev/null
+++ b/addons/sale_mrp/i18n/mn.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Baskhuu Lodoikhuu <baskhuujacara@gmail.com>, 2020
+# Minj P <pminj322@gmail.com>, 2020
+# Batmunkh Ganbat <batmunkh.g@bumanit.mn>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Batmunkh Ganbat <batmunkh.g@bumanit.mn>, 2020\n"
+"Language-Team: Mongolian (https://www.transifex.com/odoo/teams/41243/mn/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: mn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Дэлгэрэнгүй нэр"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Журналын бичилт"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Сүүлд зассан огноо"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Үйлдвэрлэлийн захиалга"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Борлуулалтын захиалга"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Борлуулалтын захиалгын мөр"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/nb.po b/addons/sale_mrp/i18n/nb.po
new file mode 100644
index 00000000..109f967b
--- /dev/null
+++ b/addons/sale_mrp/i18n/nb.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Marius Stedjan <marius@stedjan.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Marius Stedjan <marius@stedjan.com>, 2020\n"
+"Language-Team: Norwegian Bokmål (https://www.transifex.com/odoo/teams/41243/nb/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: nb\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Visningsnavn"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Journalpost"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Sist endret"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Produksjonsordre"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Salgsordre"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Salgsordrelinje"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/nl.po b/addons/sale_mrp/i18n/nl.po
new file mode 100644
index 00000000..17140b12
--- /dev/null
+++ b/addons/sale_mrp/i18n/nl.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Yenthe Van Ginneken <yenthespam@gmail.com>, 2020
+# Martin Trigaux, 2020
+# Erwin van der Ploeg <erwin@odooexperts.nl>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Erwin van der Ploeg <erwin@odooexperts.nl>, 2020\n"
+"Language-Team: Dutch (https://www.transifex.com/odoo/teams/41243/nl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Productie</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Verkoop</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Aantal gegenereerde MO"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Aantal met SO bron"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Schermnaam"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Boekingsregel"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Laatst gewijzigd op"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Productieorder gegenereerd door %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Productieorder"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Verkooporder"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Verkooporderregel"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "Bron verkooporders van %s"
diff --git a/addons/sale_mrp/i18n/nl_BE.po b/addons/sale_mrp/i18n/nl_BE.po
new file mode 100644
index 00000000..46dee68f
--- /dev/null
+++ b/addons/sale_mrp/i18n/nl_BE.po
@@ -0,0 +1,67 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:02+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Dutch (Belgium) (http://www.transifex.com/odoo/odoo-9/"
+"language/nl_BE/)\n"
+"Language: nl_BE\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr "Toont de klantenreferentie van de verkooporder."
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr "Toont de naam van de verkooporder"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Verkooporderlijn"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Voorraadbeweging"
+
+#~ msgid "Manufacturing Order"
+#~ msgstr "Productieorder"
diff --git a/addons/sale_mrp/i18n/pl.po b/addons/sale_mrp/i18n/pl.po
new file mode 100644
index 00000000..095ae0a3
--- /dev/null
+++ b/addons/sale_mrp/i18n/pl.po
@@ -0,0 +1,100 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Grzegorz Grzelak <grzegorz.grzelak@openglobe.pl>, 2020
+# Marcin Młynarczyk <mlynarczyk@gmail.com>, 2020
+# Paweł Wodyński <pw@myodoo.pl>, 2020
+# Maksym <ms@myodoo.pl>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Maksym <ms@myodoo.pl>, 2020\n"
+"Language-Team: Polish (https://www.transifex.com/odoo/teams/41243/pl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: pl\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Produkcja</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Sprzedaż</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nazwa wyświetlana"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Pozycja zapisu"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Data ostatniej modyfikacji"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Zamówienia Produkcji Stworzone przez %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Zamówienie produkcji"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Zamówienie sprzedaży"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Pozycja zamówienia sprzedaży"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "Źródła Zamówienia Sprzedaży %s"
diff --git a/addons/sale_mrp/i18n/pt.po b/addons/sale_mrp/i18n/pt.po
new file mode 100644
index 00000000..fe553a0f
--- /dev/null
+++ b/addons/sale_mrp/i18n/pt.po
@@ -0,0 +1,100 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Manuela Silva <manuelarodsilva@gmail.com>, 2020
+# Nuno Silva <nuno.silva@arxi.pt>, 2020
+# Reinaldo Ramos <reinaldo.ramos@arxi.pt>, 2020
+# Pedro Filipe <pedro2.10@hotmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Pedro Filipe <pedro2.10@hotmail.com>, 2020\n"
+"Language-Team: Portuguese (https://www.transifex.com/odoo/teams/41243/pt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: pt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nome"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Item do Diário"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Última Modificação em"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordem de Produção"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Ordem de Vendas"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Linhas da Ordem de Vendas"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/pt_BR.po b/addons/sale_mrp/i18n/pt_BR.po
new file mode 100644
index 00000000..bb14cde8
--- /dev/null
+++ b/addons/sale_mrp/i18n/pt_BR.po
@@ -0,0 +1,101 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatica@protonmail.com>, 2020
+# Rafael H L Moretti <rafael.moretti@gmail.com>, 2020
+# Martin Trigaux, 2020
+# Mateus Lopes <mateus1@gmail.com>, 2020
+# André Augusto Firmino Cordeiro <a.cordeito@gmail.com>, 2020
+# Éder Brito <britoederr@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Éder Brito <britoederr@gmail.com>, 2021\n"
+"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Fabricação</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Venda</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Contagem de MO gerados"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Contagem de Fonte de PV"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nome exibido"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Item de Diário"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Última modificação em"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Ordens de Produção Geradas por %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordem de Produção"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Pedido de venda"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Linha do pedido de vendas"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "Fontes de Pedidos de Venda de %s"
diff --git a/addons/sale_mrp/i18n/ro.po b/addons/sale_mrp/i18n/ro.po
new file mode 100644
index 00000000..d727d610
--- /dev/null
+++ b/addons/sale_mrp/i18n/ro.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Dorin Hongu <dhongu@gmail.com>, 2020
+# Hongu Cosmin <cosmin513@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Hongu Cosmin <cosmin513@gmail.com>, 2020\n"
+"Language-Team: Romanian (https://www.transifex.com/odoo/teams/41243/ro/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ro\n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">De fabricație</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Nume afișat"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Element jurnal"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Ultima modificare la"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Comanda de Producție"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Comandă de vânzare"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Linie comandă vânzare"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/ru.po b/addons/sale_mrp/i18n/ru.po
new file mode 100644
index 00000000..731b2467
--- /dev/null
+++ b/addons/sale_mrp/i18n/ru.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# ILMIR <karamov@it-projects.info>, 2020
+# Константин Коровин <korovin74@gmail.com>, 2020
+# Irina Fedulova <istartlin@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Irina Fedulova <istartlin@gmail.com>, 2020\n"
+"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ru\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Отображаемое имя"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "Идентификатор"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Элемент журнала"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Последнее изменение"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Производственный заказ"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Заказ на продажу"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Строка заказа на продажу"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/sale_mrp.pot b/addons/sale_mrp/i18n/sale_mrp.pot
new file mode 100644
index 00000000..b549c863
--- /dev/null
+++ b/addons/sale_mrp/i18n/sale_mrp.pot
@@ -0,0 +1,92 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-01 07:29+0000\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: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/si.po b/addons/sale_mrp/i18n/si.po
new file mode 100644
index 00000000..89852c70
--- /dev/null
+++ b/addons/sale_mrp/i18n/si.po
@@ -0,0 +1,92 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Language-Team: Sinhala (https://www.transifex.com/odoo/teams/41243/si/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: si\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/sk.po b/addons/sale_mrp/i18n/sk.po
new file mode 100644
index 00000000..7fc7355b
--- /dev/null
+++ b/addons/sale_mrp/i18n/sk.po
@@ -0,0 +1,100 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Jaroslav Bosansky <jaro.bosansky@ekoenergo.sk>, 2020
+# Jan Prokop, 2020
+# Rastislav Brenčič <rastislav.brencic99@gmail.com>, 2020
+# Rastislav Brencic <rastislav.brencic@azet.sk>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Rastislav Brencic <rastislav.brencic@azet.sk>, 2020\n"
+"Language-Team: Slovak (https://www.transifex.com/odoo/teams/41243/sk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sk\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Zobrazovaný názov"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Položka účtovnej knihy"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Posledná úprava"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Výrobná objednávka"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Objednávka "
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Položka objednávok"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/sl.po b/addons/sale_mrp/i18n/sl.po
new file mode 100644
index 00000000..198dc109
--- /dev/null
+++ b/addons/sale_mrp/i18n/sl.po
@@ -0,0 +1,98 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2021
+# Matjaz Mozetic <m.mozetic@matmoz.si>, 2021
+# matjaz k <matjaz@mentis.si>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: matjaz k <matjaz@mentis.si>, 2021\n"
+"Language-Team: Slovenian (https://www.transifex.com/odoo/teams/41243/sl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Prikazani naziv"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Postavka"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Zadnjič spremenjeno"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Proizvodni nalog"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Prodajni nalog"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Postavka prodajnega naloga"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/sr.po b/addons/sale_mrp/i18n/sr.po
new file mode 100644
index 00000000..ec8eef51
--- /dev/null
+++ b/addons/sale_mrp/i18n/sr.po
@@ -0,0 +1,29 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-09-18 09:49+0000\n"
+"PO-Revision-Date: 2018-09-18 09:49+0000\n"
+"Last-Translator: Martin Trigaux, 2018\n"
+"Language-Team: Serbian (https://www.transifex.com/odoo/teams/41243/sr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sr\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: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr "Red računa"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/sr@latin.po b/addons/sale_mrp/i18n/sr@latin.po
new file mode 100644
index 00000000..f9cc52b2
--- /dev/null
+++ b/addons/sale_mrp/i18n/sr@latin.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Djordje Marjanovic <djordje_m@yahoo.com>, 2017
+# Nemanja Dragovic <nemanjadragovic94@gmail.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.saas~18\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-20 09:53+0000\n"
+"PO-Revision-Date: 2017-09-20 09:53+0000\n"
+"Last-Translator: Nemanja Dragovic <nemanjadragovic94@gmail.com>, 2017\n"
+"Language-Team: Serbian (Latin) (https://www.transifex.com/odoo/teams/41243/sr%40latin/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sr@latin\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: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr "Stavka računa"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Stavka naloga za prodaju"
diff --git a/addons/sale_mrp/i18n/sv.po b/addons/sale_mrp/i18n/sv.po
new file mode 100644
index 00000000..a285b290
--- /dev/null
+++ b/addons/sale_mrp/i18n/sv.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2021
+# Anders Wallenquist <anders.wallenquist@vertel.se>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Anders Wallenquist <anders.wallenquist@vertel.se>, 2021\n"
+"Language-Team: Swedish (https://www.transifex.com/odoo/teams/41243/sv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sv\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Visningsnamn"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Transaktion"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Senast redigerad"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Tillverkningsorder"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Kundorder"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Orderrad"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/te.po b/addons/sale_mrp/i18n/te.po
new file mode 100644
index 00000000..38e338ff
--- /dev/null
+++ b/addons/sale_mrp/i18n/te.po
@@ -0,0 +1,63 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo 9.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-08-18 14:08+0000\n"
+"PO-Revision-Date: 2015-09-08 08:03+0000\n"
+"Last-Translator: Martin Trigaux\n"
+"Language-Team: Telugu (http://www.transifex.com/odoo/odoo-9/language/te/)\n"
+"Language: te\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: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_ref
+msgid "Indicate the Customer Reference from sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,help:sale_mrp.field_mrp_production_sale_name
+msgid "Indicate the name of sales order."
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line_property_ids
+msgid "Properties"
+msgstr "లక్షణాలు"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_name
+msgid "Sale Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production_sale_ref
+msgid "Sale Reference"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/th.po b/addons/sale_mrp/i18n/th.po
new file mode 100644
index 00000000..548d63fe
--- /dev/null
+++ b/addons/sale_mrp/i18n/th.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2018
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-09-18 09:49+0000\n"
+"PO-Revision-Date: 2018-08-24 09:24+0000\n"
+"Last-Translator: Martin Trigaux, 2018\n"
+"Language-Team: Thai (https://www.transifex.com/odoo/teams/41243/th/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: th\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_invoice_line
+msgid "Invoice Line"
+msgstr "รายการในใบแจ้งหนี้"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "รายการคำสั่งขาย"
diff --git a/addons/sale_mrp/i18n/tr.po b/addons/sale_mrp/i18n/tr.po
new file mode 100644
index 00000000..a6a5ba3d
--- /dev/null
+++ b/addons/sale_mrp/i18n/tr.po
@@ -0,0 +1,101 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Levent Karakaş <levent@mektup.at>, 2020
+# Murat Kaplan <muratk@projetgrup.com>, 2020
+# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2020
+# Nadir Gazioglu <nadirgazioglu@gmail.com>, 2021
+# Ediz Duman <neps1192@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Ediz Duman <neps1192@gmail.com>, 2021\n"
+"Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: tr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Manufacturing</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Satış</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Görünüm Adı"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Yevmiye Kalemi"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Son Düzenleme"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Üretim Emri"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Satış Siparişi"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Satış Sipariş Satırı"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/uk.po b/addons/sale_mrp/i18n/uk.po
new file mode 100644
index 00000000..a2278954
--- /dev/null
+++ b/addons/sale_mrp/i18n/uk.po
@@ -0,0 +1,97 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Alina Lisnenko <alinasemeniuk1@gmail.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Alina Lisnenko <alinasemeniuk1@gmail.com>, 2020\n"
+"Language-Team: Ukrainian (https://www.transifex.com/odoo/teams/41243/uk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: uk\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Відобразити назву"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Елемент журналу"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Останні зміни на"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Замовлення на виробництво"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Замовлення на продаж"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Рядок замовлення на продаж"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/ur.po b/addons/sale_mrp/i18n/ur.po
new file mode 100644
index 00000000..9b02f2a8
--- /dev/null
+++ b/addons/sale_mrp/i18n/ur.po
@@ -0,0 +1,92 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Language-Team: Urdu (https://www.transifex.com/odoo/teams/41243/ur/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ur\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/vi.po b/addons/sale_mrp/i18n/vi.po
new file mode 100644
index 00000000..38286745
--- /dev/null
+++ b/addons/sale_mrp/i18n/vi.po
@@ -0,0 +1,99 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Nancy Momoland <thanhnguyen.icsc@gmail.com>, 2020
+# Duy BQ <duybq86@gmail.com>, 2020
+# Trinh Tran Thi Phuong <trinhttp@trobz.com>, 2020
+# Trần Hà <tranthuha13590@gmail.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: Trần Hà <tranthuha13590@gmail.com>, 2021\n"
+"Language-Team: Vietnamese (https://www.transifex.com/odoo/teams/41243/vi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: vi\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">Manufacturing</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr "<span class=\"o_stat_text\">Sale</span>"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr "Count of MO generated"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr "Count of Source SO"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "Tên hiển thị"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Bút toán"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "Sửa lần cuối vào"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr "Manufacturing Orders Generated by %s"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Lệnh Sản xuất"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "Đơn bán hàng"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Chi tiết đơn hàng"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr "Sources Sale Orders of %s"
diff --git a/addons/sale_mrp/i18n/zh_CN.po b/addons/sale_mrp/i18n/zh_CN.po
new file mode 100644
index 00000000..82ca940e
--- /dev/null
+++ b/addons/sale_mrp/i18n/zh_CN.po
@@ -0,0 +1,100 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# Martin Trigaux, 2020
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2020
+# guohuadeng <guohuadeng@hotmail.com>, 2020
+# Felix Yang - Elico Corp <felixyangsh@aliyun.com>, 2020
+# liAnGjiA <liangjia@qq.com>, 2021
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: liAnGjiA <liangjia@qq.com>, 2021\n"
+"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: zh_CN\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr "<span class=\"o_stat_text\">制造</span>"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "显示名称"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "会计分录"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "最后修改日"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "生产订单"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "销售订单"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "销售订单行"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/i18n/zh_TW.po b/addons/sale_mrp/i18n/zh_TW.po
new file mode 100644
index 00000000..d1c581ac
--- /dev/null
+++ b/addons/sale_mrp/i18n/zh_TW.po
@@ -0,0 +1,96 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sale_mrp
+#
+# Translators:
+# 敬雲 林 <chingyun@yuanchih-consult.com>, 2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~13.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-01 07:29+0000\n"
+"PO-Revision-Date: 2020-09-07 08:18+0000\n"
+"Last-Translator: 敬雲 林 <chingyun@yuanchih-consult.com>, 2020\n"
+"Language-Team: Chinese (Taiwan) (https://www.transifex.com/odoo/teams/41243/zh_TW/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.sale_order_form_mrp
+msgid "<span class=\"o_stat_text\">Manufacturing</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model_terms:ir.ui.view,arch_db:sale_mrp.mrp_production_form_view_sale
+msgid "<span class=\"o_stat_text\">Sale</span>"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__mrp_production_count
+msgid "Count of MO generated"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__sale_order_count
+msgid "Count of Source SO"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__display_name
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__display_name
+msgid "Display Name"
+msgstr "顯示名稱"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line__id
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order__id
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line__id
+msgid "ID"
+msgstr "ID"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "日記帳明細"
+
+#. module: sale_mrp
+#: model:ir.model.fields,field_description:sale_mrp.field_account_move_line____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_mrp_production____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order____last_update
+#: model:ir.model.fields,field_description:sale_mrp.field_sale_order_line____last_update
+msgid "Last Modified on"
+msgstr "最後修改於"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/sale.py:0
+#, python-format
+msgid "Manufacturing Orders Generated by %s"
+msgstr ""
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "製造訂單"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order
+msgid "Sales Order"
+msgstr "銷售訂單"
+
+#. module: sale_mrp
+#: model:ir.model,name:sale_mrp.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "銷售訂單明細"
+
+#. module: sale_mrp
+#: code:addons/sale_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Sources Sale Orders of %s"
+msgstr ""
diff --git a/addons/sale_mrp/models/__init__.py b/addons/sale_mrp/models/__init__.py
new file mode 100644
index 00000000..6e09b9fa
--- /dev/null
+++ b/addons/sale_mrp/models/__init__.py
@@ -0,0 +1,6 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import sale
+from . import account_move
+from . import mrp_production
diff --git a/addons/sale_mrp/models/account_move.py b/addons/sale_mrp/models/account_move.py
new file mode 100644
index 00000000..6f338835
--- /dev/null
+++ b/addons/sale_mrp/models/account_move.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models
+
+
+class AccountMoveLine(models.Model):
+ _inherit = "account.move.line"
+
+ def _stock_account_get_anglo_saxon_price_unit(self):
+ price_unit = super(AccountMoveLine, self)._stock_account_get_anglo_saxon_price_unit()
+
+ so_line = self.sale_line_ids and self.sale_line_ids[-1] or False
+ if so_line:
+ bom = so_line.product_id.product_tmpl_id.bom_ids.filtered(lambda b: not b.company_id or b.company_id == so_line.company_id)[:1]
+ if bom and bom.type == 'phantom':
+ qty_to_invoice = self.product_uom_id._compute_quantity(self.quantity, self.product_id.uom_id)
+ qty_invoiced = sum([x.product_uom_id._compute_quantity(x.quantity, x.product_id.uom_id) for x in so_line.invoice_lines if x.move_id.state == 'posted'])
+ moves = so_line.move_ids
+ average_price_unit = 0
+ components = so_line._get_bom_component_qty(bom)
+ for product_id in components:
+ product = self.env['product.product'].browse(product_id)
+ factor = components[product_id]['qty']
+ prod_moves = moves.filtered(lambda m: m.product_id == product)
+ prod_qty_invoiced = factor * qty_invoiced
+ prod_qty_to_invoice = factor * qty_to_invoice
+ average_price_unit += factor * product._compute_average_price(prod_qty_invoiced, prod_qty_to_invoice, prod_moves)
+ price_unit = average_price_unit / bom.product_qty or price_unit
+ price_unit = self.product_id.uom_id._compute_price(price_unit, self.product_uom_id)
+ return price_unit
+
diff --git a/addons/sale_mrp/models/mrp_production.py b/addons/sale_mrp/models/mrp_production.py
new file mode 100644
index 00000000..5b6df8fd
--- /dev/null
+++ b/addons/sale_mrp/models/mrp_production.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class MrpProduction(models.Model):
+ _inherit = 'mrp.production'
+
+ sale_order_count = fields.Integer(
+ "Count of Source SO",
+ compute='_compute_sale_order_count',
+ groups='sales_team.group_sale_salesman')
+
+ @api.depends('procurement_group_id.mrp_production_ids.move_dest_ids.group_id.sale_id')
+ def _compute_sale_order_count(self):
+ for production in self:
+ production.sale_order_count = len(production.procurement_group_id.mrp_production_ids.move_dest_ids.group_id.sale_id)
+
+ def action_view_sale_orders(self):
+ self.ensure_one()
+ sale_order_ids = self.procurement_group_id.mrp_production_ids.move_dest_ids.group_id.sale_id.ids
+ action = {
+ 'res_model': 'sale.order',
+ 'type': 'ir.actions.act_window',
+ }
+ if len(sale_order_ids) == 1:
+ action.update({
+ 'view_mode': 'form',
+ 'res_id': sale_order_ids[0],
+ })
+ else:
+ action.update({
+ 'name': _("Sources Sale Orders of %s", self.name),
+ 'domain': [('id', 'in', sale_order_ids)],
+ 'view_mode': 'tree,form',
+ })
+ return action
diff --git a/addons/sale_mrp/models/sale.py b/addons/sale_mrp/models/sale.py
new file mode 100644
index 00000000..8152b67f
--- /dev/null
+++ b/addons/sale_mrp/models/sale.py
@@ -0,0 +1,145 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class SaleOrder(models.Model):
+ _inherit = 'sale.order'
+
+ mrp_production_count = fields.Integer(
+ "Count of MO generated",
+ compute='_compute_mrp_production_count',
+ groups='mrp.group_mrp_user')
+
+ @api.depends('procurement_group_id.stock_move_ids.created_production_id.procurement_group_id.mrp_production_ids')
+ def _compute_mrp_production_count(self):
+ for sale in self:
+ sale.mrp_production_count = len(sale.procurement_group_id.stock_move_ids.created_production_id.procurement_group_id.mrp_production_ids)
+
+ def action_view_mrp_production(self):
+ self.ensure_one()
+ mrp_production_ids = self.procurement_group_id.stock_move_ids.created_production_id.procurement_group_id.mrp_production_ids.ids
+ action = {
+ 'res_model': 'mrp.production',
+ 'type': 'ir.actions.act_window',
+ }
+ if len(mrp_production_ids) == 1:
+ action.update({
+ 'view_mode': 'form',
+ 'res_id': mrp_production_ids[0],
+ })
+ else:
+ action.update({
+ 'name': _("Manufacturing Orders Generated by %s", self.name),
+ 'domain': [('id', 'in', mrp_production_ids)],
+ 'view_mode': 'tree,form',
+ })
+ return action
+
+
+class SaleOrderLine(models.Model):
+ _inherit = 'sale.order.line'
+
+ @api.depends('product_uom_qty', 'qty_delivered', 'product_id', 'state')
+ def _compute_qty_to_deliver(self):
+ """The inventory widget should now be visible in more cases if the product is consumable."""
+ super(SaleOrderLine, self)._compute_qty_to_deliver()
+ for line in self:
+ # Hide the widget for kits since forecast doesn't support them.
+ boms = self.env['mrp.bom']
+ if line.state == 'sale':
+ boms = line.move_ids.mapped('bom_line_id.bom_id')
+ elif line.state in ['draft', 'sent'] and line.product_id:
+ boms = boms._bom_find(product=line.product_id, company_id=line.company_id.id, bom_type='phantom')
+ relevant_bom = boms.filtered(lambda b: b.type == 'phantom' and
+ (b.product_id == line.product_id or
+ (b.product_tmpl_id == line.product_id.product_tmpl_id and not b.product_id)))
+ if relevant_bom:
+ line.display_qty_widget = False
+ continue
+ if line.state == 'draft' and line.product_type == 'consu':
+ components = line.product_id.get_components()
+ if components and components != [line.product_id.id]:
+ line.display_qty_widget = True
+
+ def _compute_qty_delivered(self):
+ super(SaleOrderLine, self)._compute_qty_delivered()
+ for order_line in self:
+ if order_line.qty_delivered_method == 'stock_move':
+ boms = order_line.move_ids.filtered(lambda m: m.state != 'cancel').mapped('bom_line_id.bom_id')
+ dropship = False
+ if not boms and any(m._is_dropshipped() for m in order_line.move_ids):
+ boms = boms._bom_find(product=order_line.product_id, company_id=order_line.company_id.id, bom_type='phantom')
+ dropship = True
+ # We fetch the BoMs of type kits linked to the order_line,
+ # the we keep only the one related to the finished produst.
+ # This bom shoud be the only one since bom_line_id was written on the moves
+ relevant_bom = boms.filtered(lambda b: b.type == 'phantom' and
+ (b.product_id == order_line.product_id or
+ (b.product_tmpl_id == order_line.product_id.product_tmpl_id and not b.product_id)))
+ if relevant_bom:
+ # In case of dropship, we use a 'all or nothing' policy since 'bom_line_id' was
+ # not written on a move coming from a PO.
+ # FIXME: if the components of a kit have different suppliers, multiple PO
+ # are generated. If one PO is confirmed and all the others are in draft, receiving
+ # the products for this PO will set the qty_delivered. We might need to check the
+ # state of all PO as well... but sale_mrp doesn't depend on purchase.
+ if dropship:
+ moves = order_line.move_ids.filtered(lambda m: m.state != 'cancel')
+ if moves and all(m.state == 'done' for m in moves):
+ order_line.qty_delivered = order_line.product_uom_qty
+ else:
+ order_line.qty_delivered = 0.0
+ continue
+ moves = order_line.move_ids.filtered(lambda m: m.state == 'done' and not m.scrapped)
+ filters = {
+ 'incoming_moves': lambda m: m.location_dest_id.usage == 'customer' and (not m.origin_returned_move_id or (m.origin_returned_move_id and m.to_refund)),
+ 'outgoing_moves': lambda m: m.location_dest_id.usage != 'customer' and m.to_refund
+ }
+ order_qty = order_line.product_uom._compute_quantity(order_line.product_uom_qty, relevant_bom.product_uom_id)
+ qty_delivered = moves._compute_kit_quantities(order_line.product_id, order_qty, relevant_bom, filters)
+ order_line.qty_delivered = relevant_bom.product_uom_id._compute_quantity(qty_delivered, order_line.product_uom)
+
+ # If no relevant BOM is found, fall back on the all-or-nothing policy. This happens
+ # when the product sold is made only of kits. In this case, the BOM of the stock moves
+ # do not correspond to the product sold => no relevant BOM.
+ elif boms:
+ if all(m.state == 'done' for m in order_line.move_ids):
+ order_line.qty_delivered = order_line.product_uom_qty
+ else:
+ order_line.qty_delivered = 0.0
+
+ def _get_bom_component_qty(self, bom):
+ bom_quantity = self.product_uom._compute_quantity(1, bom.product_uom_id)
+ boms, lines = bom.explode(self.product_id, bom_quantity)
+ components = {}
+ for line, line_data in lines:
+ product = line.product_id.id
+ uom = line.product_uom_id
+ qty = line_data['qty']
+ if components.get(product, False):
+ if uom.id != components[product]['uom']:
+ from_uom = uom
+ to_uom = self.env['uom.uom'].browse(components[product]['uom'])
+ qty = from_uom._compute_quantity(qty, to_uom)
+ components[product]['qty'] += qty
+ else:
+ # To be in the uom reference of the product
+ to_uom = self.env['product.product'].browse(product).uom_id
+ if uom.id != to_uom.id:
+ from_uom = uom
+ qty = from_uom._compute_quantity(qty, to_uom)
+ components[product] = {'qty': qty, 'uom': to_uom.id}
+ return components
+
+ def _get_qty_procurement(self, previous_product_uom_qty=False):
+ self.ensure_one()
+ # Specific case when we change the qty on a SO for a kit product.
+ # We don't try to be too smart and keep a simple approach: we compare the quantity before
+ # and after update, and return the difference. We don't take into account what was already
+ # sent, or any other exceptional case.
+ bom = self.env['mrp.bom']._bom_find(product=self.product_id, bom_type='phantom')
+ if bom and previous_product_uom_qty:
+ return previous_product_uom_qty and previous_product_uom_qty.get(self.id, 0.0)
+ return super(SaleOrderLine, self)._get_qty_procurement(previous_product_uom_qty=previous_product_uom_qty)
diff --git a/addons/sale_mrp/security/ir.model.access.csv b/addons/sale_mrp/security/ir.model.access.csv
new file mode 100644
index 00000000..82711385
--- /dev/null
+++ b/addons/sale_mrp/security/ir.model.access.csv
@@ -0,0 +1,7 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_mrp_bom_user,mrp.bom,mrp.model_mrp_bom,sales_team.group_sale_salesman,1,0,0,0
+access_sale_order_manufacturing_user,sale.order manufacturing.user,sale.model_sale_order,mrp.group_mrp_user,1,1,0,0
+access_sale_order_line_manufacturing_user,sale.order.line manufacturing.user,sale.model_sale_order_line,mrp.group_mrp_user,1,1,0,0
+access_mrp_production_salesman,mrp.production salesman,mrp.model_mrp_production,sales_team.group_sale_salesman,1,1,1,0
+access_mrp_production_workcenter_line_salesman,mrp.workorder salesman,mrp.model_mrp_workorder,sales_team.group_sale_salesman,1,0,1,0
+access_mrp_bom_line_salesman,mrp.bom.line,mrp.model_mrp_bom_line,sales_team.group_sale_salesman,1,0,0,0
diff --git a/addons/sale_mrp/tests/__init__.py b/addons/sale_mrp/tests/__init__.py
new file mode 100644
index 00000000..56a3cc3f
--- /dev/null
+++ b/addons/sale_mrp/tests/__init__.py
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import test_sale_mrp_flow
+from . import test_sale_mrp_kit_bom
+from . import test_sale_mrp_lead_time
+from . import test_sale_mrp_procurement
+from . import test_multistep_manufacturing \ No newline at end of file
diff --git a/addons/sale_mrp/tests/test_multistep_manufacturing.py b/addons/sale_mrp/tests/test_multistep_manufacturing.py
new file mode 100644
index 00000000..b0ab1d09
--- /dev/null
+++ b/addons/sale_mrp/tests/test_multistep_manufacturing.py
@@ -0,0 +1,129 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.tests import Form
+from odoo.addons.mrp.tests.common import TestMrpCommon
+
+
+class TestMultistepManufacturing(TestMrpCommon):
+
+ def setUp(self):
+ super(TestMultistepManufacturing, self).setUp()
+
+ self.env.ref('stock.route_warehouse0_mto').active = True
+ self.MrpProduction = self.env['mrp.production']
+ # Create warehouse
+ warehouse_form = Form(self.env['stock.warehouse'])
+ warehouse_form.name = 'Test'
+ warehouse_form.code = 'Test'
+ self.warehouse = warehouse_form.save()
+
+ self.uom_unit = self.env.ref('uom.product_uom_unit')
+
+ # Create manufactured product
+ product_form = Form(self.env['product.product'])
+ product_form.name = 'Stick'
+ product_form.uom_id = self.uom_unit
+ product_form.uom_po_id = self.uom_unit
+ product_form.route_ids.clear()
+ product_form.route_ids.add(self.warehouse.manufacture_pull_id.route_id)
+ product_form.route_ids.add(self.warehouse.mto_pull_id.route_id)
+ self.product_manu = product_form.save()
+
+ # Create raw product for manufactured product
+ product_form = Form(self.env['product.product'])
+ product_form.name = 'Raw Stick'
+ product_form.uom_id = self.uom_unit
+ product_form.uom_po_id = self.uom_unit
+ self.product_raw = product_form.save()
+
+ # Create bom for manufactured product
+ bom_product_form = Form(self.env['mrp.bom'])
+ bom_product_form.product_id = self.product_manu
+ bom_product_form.product_tmpl_id = self.product_manu.product_tmpl_id
+ bom_product_form.product_qty = 1.0
+ bom_product_form.type = 'normal'
+ with bom_product_form.bom_line_ids.new() as bom_line:
+ bom_line.product_id = self.product_raw
+ bom_line.product_qty = 2.0
+ self.bom_prod_manu = bom_product_form.save()
+
+ # Create sale order
+ sale_form = Form(self.env['sale.order'])
+ sale_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ sale_form.picking_policy = 'direct'
+ sale_form.warehouse_id = self.warehouse
+ with sale_form.order_line.new() as line:
+ line.name = self.product_manu.name
+ line.product_id = self.product_manu
+ line.product_uom_qty = 1.0
+ line.product_uom = self.uom_unit
+ line.price_unit = 10.0
+ self.sale_order = sale_form.save()
+
+ def test_00_manufacturing_step_one(self):
+ """ Testing for Step-1 """
+ # Change steps of manufacturing.
+ with Form(self.warehouse) as warehouse:
+ warehouse.manufacture_steps = 'mrp_one_step'
+ # Confirm sale order.
+ self.sale_order.action_confirm()
+ # Check all procurements for created sale order
+ mo_procurement = self.MrpProduction.search([('origin', '=', self.sale_order.name)])
+ # Get manufactured procurement
+ self.assertEqual(mo_procurement.location_src_id.id, self.warehouse.lot_stock_id.id, "Source loction does not match.")
+ self.assertEqual(mo_procurement.location_dest_id.id, self.warehouse.lot_stock_id.id, "Destination location does not match.")
+ self.assertEqual(len(mo_procurement), 1, "No Procurement !")
+
+ def test_01_manufacturing_step_two(self):
+ """ Testing for Step-2 """
+ with Form(self.warehouse) as warehouse:
+ warehouse.manufacture_steps = 'pbm'
+ self.sale_order.action_confirm()
+ # Get manufactured procurement
+ mo_procurement = self.MrpProduction.search([('origin', '=', self.sale_order.name)])
+ self.assertEqual(mo_procurement.location_src_id.id, self.warehouse.pbm_loc_id.id, "Source loction does not match.")
+ self.assertEqual(mo_procurement.location_dest_id.id, self.warehouse.lot_stock_id.id, "Destination location does not match.")
+
+ self.assertEqual(len(mo_procurement), 1, "No Procurement !")
+
+ def test_cancel_multilevel_manufacturing(self):
+ """ Testing for multilevel Manufacturing orders.
+ When user creates multi-level manufacturing orders,
+ and then cancelles child manufacturing order,
+ an activity should be generated on parent MO, to notify user that
+ demands from child MO has been cancelled.
+ """
+
+ product_form = Form(self.env['product.product'])
+ product_form.name = 'Screw'
+ self.product_screw = product_form.save()
+
+ # Add routes for manufacturing and make to order to the raw material product
+ with Form(self.product_raw) as p1:
+ p1.route_ids.clear()
+ p1.route_ids.add(self.warehouse_1.manufacture_pull_id.route_id)
+ p1.route_ids.add(self.warehouse_1.mto_pull_id.route_id)
+
+ # New BoM for raw material product, it will generate another Production order i.e. child Production order
+ bom_product_form = Form(self.env['mrp.bom'])
+ bom_product_form.product_id = self.product_raw
+ bom_product_form.product_tmpl_id = self.product_raw.product_tmpl_id
+ bom_product_form.product_qty = 1.0
+ with bom_product_form.bom_line_ids.new() as bom_line:
+ bom_line.product_id = self.product_screw
+ bom_line.product_qty = 5.0
+ self.bom_prod_manu = bom_product_form.save()
+
+ # create MO from sale order.
+ self.sale_order.action_confirm()
+ # Find child MO.
+ child_manufaturing = self.env['mrp.production'].search([('product_id', '=', self.product_raw.id)])
+ self.assertTrue((len(child_manufaturing.ids) == 1), 'Manufacturing order of raw material must be generated.')
+ # Cancel child MO.
+ child_manufaturing.action_cancel()
+ manufaturing_from_so = self.env['mrp.production'].search([('product_id', '=', self.product_manu.id)])
+ # Check if activity is generated or not on parent MO.
+ exception = self.env['mail.activity'].search([('res_model', '=', 'mrp.production'),
+ ('res_id', '=', manufaturing_from_so.id)])
+ self.assertEqual(len(exception.ids), 1, 'When user cancelled child manufacturing, exception must be generated on parent manufacturing.')
diff --git a/addons/sale_mrp/tests/test_sale_mrp_flow.py b/addons/sale_mrp/tests/test_sale_mrp_flow.py
new file mode 100644
index 00000000..7534c2f0
--- /dev/null
+++ b/addons/sale_mrp/tests/test_sale_mrp_flow.py
@@ -0,0 +1,1644 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.addons.stock_account.tests.test_anglo_saxon_valuation_reconciliation_common import ValuationReconciliationTestCommon
+from odoo.tests import common, Form
+from odoo.exceptions import UserError
+from odoo.tools import mute_logger, float_compare
+
+
+# these tests create accounting entries, and therefore need a chart of accounts
+@common.tagged('post_install', '-at_install')
+class TestSaleMrpFlow(ValuationReconciliationTestCommon):
+
+ @classmethod
+ def setUpClass(cls, chart_template_ref=None):
+ super().setUpClass(chart_template_ref=chart_template_ref)
+ cls.env.ref('stock.route_warehouse0_mto').active = True
+
+ # Useful models
+ cls.StockMove = cls.env['stock.move']
+ cls.UoM = cls.env['uom.uom']
+ cls.MrpProduction = cls.env['mrp.production']
+ cls.Inventory = cls.env['stock.inventory']
+ cls.InventoryLine = cls.env['stock.inventory.line']
+ cls.ProductCategory = cls.env['product.category']
+
+ cls.categ_unit = cls.env.ref('uom.product_uom_categ_unit')
+ cls.categ_kgm = cls.env.ref('uom.product_uom_categ_kgm')
+
+ cls.uom_kg = cls.env['uom.uom'].search([('category_id', '=', cls.categ_kgm.id), ('uom_type', '=', 'reference')], limit=1)
+ cls.uom_kg.write({
+ 'name': 'Test-KG',
+ 'rounding': 0.000001})
+ cls.uom_gm = cls.UoM.create({
+ 'name': 'Test-G',
+ 'category_id': cls.categ_kgm.id,
+ 'uom_type': 'smaller',
+ 'factor': 1000.0,
+ 'rounding': 0.001})
+ cls.uom_unit = cls.env['uom.uom'].search([('category_id', '=', cls.categ_unit.id), ('uom_type', '=', 'reference')], limit=1)
+ cls.uom_unit.write({
+ 'name': 'Test-Unit',
+ 'rounding': 0.01})
+ cls.uom_dozen = cls.UoM.create({
+ 'name': 'Test-DozenA',
+ 'category_id': cls.categ_unit.id,
+ 'factor_inv': 12,
+ 'uom_type': 'bigger',
+ 'rounding': 0.001})
+
+ # Creating all components
+ cls.component_a = cls._cls_create_product('Comp A', cls.uom_unit)
+ cls.component_b = cls._cls_create_product('Comp B', cls.uom_unit)
+ cls.component_c = cls._cls_create_product('Comp C', cls.uom_unit)
+ cls.component_d = cls._cls_create_product('Comp D', cls.uom_unit)
+ cls.component_e = cls._cls_create_product('Comp E', cls.uom_unit)
+ cls.component_f = cls._cls_create_product('Comp F', cls.uom_unit)
+ cls.component_g = cls._cls_create_product('Comp G', cls.uom_unit)
+
+ # Create a kit 'kit_1' :
+ # -----------------------
+ #
+ # kit_1 --|- component_a x2
+ # |- component_b x1
+ # |- component_c x3
+
+ cls.kit_1 = cls._cls_create_product('Kit 1', cls.uom_unit)
+
+ cls.bom_kit_1 = cls.env['mrp.bom'].create({
+ 'product_tmpl_id': cls.kit_1.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+
+ BomLine = cls.env['mrp.bom.line']
+ BomLine.create({
+ 'product_id': cls.component_a.id,
+ 'product_qty': 2.0,
+ 'bom_id': cls.bom_kit_1.id})
+ BomLine.create({
+ 'product_id': cls.component_b.id,
+ 'product_qty': 1.0,
+ 'bom_id': cls.bom_kit_1.id})
+ BomLine.create({
+ 'product_id': cls.component_c.id,
+ 'product_qty': 3.0,
+ 'bom_id': cls.bom_kit_1.id})
+
+ # Create a kit 'kit_parent' :
+ # ---------------------------
+ #
+ # kit_parent --|- kit_2 x2 --|- component_d x1
+ # | |- kit_1 x2 -------|- component_a x2
+ # | |- component_b x1
+ # | |- component_c x3
+ # |
+ # |- kit_3 x1 --|- component_f x1
+ # | |- component_g x2
+ # |
+ # |- component_e x1
+
+ # Creating all kits
+ cls.kit_2 = cls._cls_create_product('Kit 2', cls.uom_unit)
+ cls.kit_3 = cls._cls_create_product('kit 3', cls.uom_unit)
+ cls.kit_parent = cls._cls_create_product('Kit Parent', cls.uom_unit)
+
+ # Linking the kits and the components via some 'phantom' BoMs
+ bom_kit_2 = cls.env['mrp.bom'].create({
+ 'product_tmpl_id': cls.kit_2.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+
+ BomLine.create({
+ 'product_id': cls.component_d.id,
+ 'product_qty': 1.0,
+ 'bom_id': bom_kit_2.id})
+ BomLine.create({
+ 'product_id': cls.kit_1.id,
+ 'product_qty': 2.0,
+ 'bom_id': bom_kit_2.id})
+
+ bom_kit_parent = cls.env['mrp.bom'].create({
+ 'product_tmpl_id': cls.kit_parent.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+
+ BomLine.create({
+ 'product_id': cls.component_e.id,
+ 'product_qty': 1.0,
+ 'bom_id': bom_kit_parent.id})
+ BomLine.create({
+ 'product_id': cls.kit_2.id,
+ 'product_qty': 2.0,
+ 'bom_id': bom_kit_parent.id})
+
+ bom_kit_3 = cls.env['mrp.bom'].create({
+ 'product_tmpl_id': cls.kit_3.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+
+ BomLine.create({
+ 'product_id': cls.component_f.id,
+ 'product_qty': 1.0,
+ 'bom_id': bom_kit_3.id})
+ BomLine.create({
+ 'product_id': cls.component_g.id,
+ 'product_qty': 2.0,
+ 'bom_id': bom_kit_3.id})
+
+ BomLine.create({
+ 'product_id': cls.kit_3.id,
+ 'product_qty': 2.0,
+ 'bom_id': bom_kit_parent.id})
+
+ @classmethod
+ def _cls_create_product(cls, name, uom_id, routes=()):
+ p = Form(cls.env['product.product'])
+ p.name = name
+ p.type = 'product'
+ p.uom_id = uom_id
+ p.uom_po_id = uom_id
+ p.route_ids.clear()
+ for r in routes:
+ p.route_ids.add(r)
+ return p.save()
+
+ def _create_product(self, name, uom_id, routes=()):
+ p = Form(self.env['product.product'])
+ p.name = name
+ p.type = 'product'
+ p.uom_id = uom_id
+ p.uom_po_id = uom_id
+ p.route_ids.clear()
+ for r in routes:
+ p.route_ids.add(r)
+ return p.save()
+
+ # Helper to process quantities based on a dict following this structure :
+ #
+ # qty_to_process = {
+ # product_id: qty
+ # }
+
+ def _process_quantities(self, moves, quantities_to_process):
+ """ Helper to process quantities based on a dict following this structure :
+ qty_to_process = {
+ product_id: qty
+ }
+ """
+ moves_to_process = moves.filtered(lambda m: m.product_id in quantities_to_process.keys())
+ for move in moves_to_process:
+ move.write({'quantity_done': quantities_to_process[move.product_id]})
+
+ def _assert_quantities(self, moves, quantities_to_process):
+ """ Helper to check expected quantities based on a dict following this structure :
+ qty_to_process = {
+ product_id: qty
+ ...
+ }
+ """
+ moves_to_process = moves.filtered(lambda m: m.product_id in quantities_to_process.keys())
+ for move in moves_to_process:
+ self.assertEqual(move.product_uom_qty, quantities_to_process[move.product_id])
+
+ def _create_move_quantities(self, qty_to_process, components, warehouse):
+ """ Helper to creates moves in order to update the quantities of components
+ on a specific warehouse. This ensure that all compute fields are triggered.
+ The structure of qty_to_process should be the following :
+
+ qty_to_process = {
+ component: (qty, uom),
+ ...
+ }
+ """
+ for comp in components:
+ f = Form(self.env['stock.move'])
+ f.name = 'Test Receipt Components'
+ f.location_id = self.env.ref('stock.stock_location_suppliers')
+ f.location_dest_id = warehouse.lot_stock_id
+ f.product_id = comp
+ f.product_uom = qty_to_process[comp][1]
+ f.product_uom_qty = qty_to_process[comp][0]
+ move = f.save()
+ move._action_confirm()
+ move._action_assign()
+ move_line = move.move_line_ids[0]
+ move_line.qty_done = qty_to_process[comp][0]
+ move._action_done()
+
+ def test_00_sale_mrp_flow(self):
+ """ Test sale to mrp flow with diffrent unit of measure."""
+
+
+ # Create product A, B, C, D.
+ # --------------------------
+ route_manufacture = self.company_data['default_warehouse'].manufacture_pull_id.route_id
+ route_mto = self.company_data['default_warehouse'].mto_pull_id.route_id
+ product_a = self._create_product('Product A', self.uom_unit, routes=[route_manufacture, route_mto])
+ product_c = self._create_product('Product C', self.uom_kg)
+ product_b = self._create_product('Product B', self.uom_dozen, routes=[route_manufacture, route_mto])
+ product_d = self._create_product('Product D', self.uom_unit, routes=[route_manufacture, route_mto])
+
+ # ------------------------------------------------------------------------------------------
+ # Bill of materials for product A, B, D.
+ # ------------------------------------------------------------------------------------------
+
+ # Bill of materials for Product A.
+ with Form(self.env['mrp.bom']) as f:
+ f.product_tmpl_id = product_a.product_tmpl_id
+ f.product_qty = 2
+ f.product_uom_id = self.uom_dozen
+ with f.bom_line_ids.new() as line:
+ line.product_id = product_b
+ line.product_qty = 3
+ line.product_uom_id = self.uom_unit
+ with f.bom_line_ids.new() as line:
+ line.product_id = product_c
+ line.product_qty = 300.5
+ line.product_uom_id = self.uom_gm
+ with f.bom_line_ids.new() as line:
+ line.product_id = product_d
+ line.product_qty = 4
+ line.product_uom_id = self.uom_unit
+
+ # Bill of materials for Product B.
+ with Form(self.env['mrp.bom']) as f:
+ f.product_tmpl_id = product_b.product_tmpl_id
+ f.product_qty = 1
+ f.product_uom_id = self.uom_unit
+ f.type = 'phantom'
+ with f.bom_line_ids.new() as line:
+ line.product_id = product_c
+ line.product_qty = 0.400
+ line.product_uom_id = self.uom_kg
+
+ # Bill of materials for Product D.
+ with Form(self.env['mrp.bom']) as f:
+ f.product_tmpl_id = product_d.product_tmpl_id
+ f.product_qty = 1
+ f.product_uom_id = self.uom_unit
+ with f.bom_line_ids.new() as line:
+ line.product_id = product_c
+ line.product_qty = 1
+ line.product_uom_id = self.uom_kg
+
+ # ----------------------------------------
+ # Create sales order of 10 Dozen product A.
+ # ----------------------------------------
+
+ order_form = Form(self.env['sale.order'])
+ order_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ with order_form.order_line.new() as line:
+ line.product_id = product_a
+ line.product_uom = self.uom_dozen
+ line.product_uom_qty = 10
+ order = order_form.save()
+ order.action_confirm()
+
+ # ===============================================================================
+ # Sales order of 10 Dozen product A should create production order
+ # like ..
+ # ===============================================================================
+ # Product A 10 Dozen.
+ # Product C 6 kg
+ # As product B phantom in bom A, product A will consume product C
+ # ================================================================
+ # For 1 unit product B it will consume 400 gm
+ # then for 15 unit (Product B 3 unit per 2 Dozen product A)
+ # product B it will consume [ 6 kg ] product C)
+ # Product A will consume 6 kg product C.
+ #
+ # [15 * 400 gm ( 6 kg product C)] = 6 kg product C
+ #
+ # Product C 1502.5 gm.
+ # [
+ # For 2 Dozen product A will consume 300.5 gm product C
+ # then for 10 Dozen product A will consume 1502.5 gm product C.
+ # ]
+ #
+ # product D 20 Unit.
+ # [
+ # For 2 dozen product A will consume 4 unit product D
+ # then for 10 Dozen product A will consume 20 unit of product D.
+ # ]
+ # --------------------------------------------------------------------------------
+
+ # <><><><><><><><><><><><><><><><><><><><>
+ # Check manufacturing order for product A.
+ # <><><><><><><><><><><><><><><><><><><><>
+
+ # Check quantity, unit of measure and state of manufacturing order.
+ # -----------------------------------------------------------------
+ self.env['procurement.group'].run_scheduler()
+ mnf_product_a = self.env['mrp.production'].search([('product_id', '=', product_a.id)])
+
+ self.assertTrue(mnf_product_a, 'Manufacturing order not created.')
+ self.assertEqual(mnf_product_a.product_qty, 120, 'Wrong product quantity in manufacturing order.')
+ self.assertEqual(mnf_product_a.product_uom_id, self.uom_unit, 'Wrong unit of measure in manufacturing order.')
+ self.assertEqual(mnf_product_a.state, 'confirmed', 'Manufacturing order should be confirmed.')
+
+ # ------------------------------------------------------------------------------------------
+ # Check 'To consume line' for production order of product A.
+ # ------------------------------------------------------------------------------------------
+
+ # Check 'To consume line' with product c and uom kg.
+ # -------------------------------------------------
+
+ moves = self.StockMove.search([
+ ('raw_material_production_id', '=', mnf_product_a.id),
+ ('product_id', '=', product_c.id),
+ ('product_uom', '=', self.uom_kg.id)])
+
+ # Check total consume line with product c and uom kg.
+ self.assertEqual(len(moves), 1, 'Production move lines are not generated proper.')
+ list_qty = {move.product_uom_qty for move in moves}
+ self.assertEqual(list_qty, {6.0}, "Wrong product quantity in 'To consume line' of manufacturing order.")
+ # Check state of consume line with product c and uom kg.
+ for move in moves:
+ self.assertEqual(move.state, 'confirmed', "Wrong state in 'To consume line' of manufacturing order.")
+
+ # Check 'To consume line' with product c and uom gm.
+ # ---------------------------------------------------
+
+ move = self.StockMove.search([
+ ('raw_material_production_id', '=', mnf_product_a.id),
+ ('product_id', '=', product_c.id),
+ ('product_uom', '=', self.uom_gm.id)])
+
+ # Check total consume line of product c with gm.
+ self.assertEqual(len(move), 1, 'Production move lines are not generated proper.')
+ # Check quantity should be with 1502.5 ( 2 Dozen product A consume 300.5 gm then 10 Dozen (300.5 * (10/2)).
+ self.assertEqual(move.product_uom_qty, 1502.5, "Wrong product quantity in 'To consume line' of manufacturing order.")
+ # Check state of consume line with product c with and uom gm.
+ self.assertEqual(move.state, 'confirmed', "Wrong state in 'To consume line' of manufacturing order.")
+
+ # Check 'To consume line' with product D.
+ # ---------------------------------------
+
+ move = self.StockMove.search([
+ ('raw_material_production_id', '=', mnf_product_a.id),
+ ('product_id', '=', product_d.id)])
+
+ # Check total consume line with product D.
+ self.assertEqual(len(move), 1, 'Production lines are not generated proper.')
+
+ # <><><><><><><><><><><><><><><><><><><><><><>
+ # Manufacturing order for product D (20 unit).
+ # <><><><><><><><><><><><><><><><><><><><><><>
+
+ # FP Todo: find a better way to look for the production order
+ mnf_product_d = self.MrpProduction.search([('product_id', '=', product_d.id)], order='id desc', limit=1)
+ # Check state of production order D.
+ self.assertEqual(mnf_product_d.state, 'confirmed', 'Manufacturing order should be confirmed.')
+
+ # Check 'To consume line' state, quantity, uom of production order (product D).
+ # -----------------------------------------------------------------------------
+
+ move = self.StockMove.search([('raw_material_production_id', '=', mnf_product_d.id), ('product_id', '=', product_c.id)])
+ self.assertEqual(move.product_uom_qty, 20, "Wrong product quantity in 'To consume line' of manufacturing order.")
+ self.assertEqual(move.product_uom.id, self.uom_kg.id, "Wrong unit of measure in 'To consume line' of manufacturing order.")
+ self.assertEqual(move.state, 'confirmed', "Wrong state in 'To consume line' of manufacturing order.")
+
+ # -------------------------------
+ # Create inventory for product c.
+ # -------------------------------
+ # Need 20 kg product c to produce 20 unit product D.
+ # --------------------------------------------------
+
+ inventory = self.Inventory.create({
+ 'name': 'Inventory Product KG',
+ 'product_ids': [(4, product_c.id)]})
+
+ inventory.action_start()
+ self.assertFalse(inventory.line_ids, "Inventory line should not created.")
+ self.InventoryLine.create({
+ 'inventory_id': inventory.id,
+ 'product_id': product_c.id,
+ 'product_uom_id': self.uom_kg.id,
+ 'product_qty': 20,
+ 'location_id': self.company_data['default_warehouse'].lot_stock_id.id})
+ inventory.action_validate()
+
+ # --------------------------------------------------
+ # Assign product c to manufacturing order of product D.
+ # --------------------------------------------------
+
+ mnf_product_d.action_assign()
+ self.assertEqual(mnf_product_d.reservation_state, 'assigned', 'Availability should be assigned')
+ self.assertEqual(move.state, 'assigned', "Wrong state in 'To consume line' of manufacturing order.")
+
+ # ------------------
+ # produce product D.
+ # ------------------
+
+ mo_form = Form(mnf_product_d)
+ mo_form.qty_producing = 20
+ mnf_product_d = mo_form.save()
+ mnf_product_d._post_inventory()
+
+ # Check state of manufacturing order.
+ self.assertEqual(mnf_product_d.state, 'done', 'Manufacturing order should still be in progress state.')
+ # Check available quantity of product D.
+ self.assertEqual(product_d.qty_available, 20, 'Wrong quantity available of product D.')
+
+ # -----------------------------------------------------------------
+ # Check product D assigned or not to production order of product A.
+ # -----------------------------------------------------------------
+
+ self.assertEqual(mnf_product_a.state, 'confirmed', 'Manufacturing order should be confirmed.')
+ move = self.StockMove.search([('raw_material_production_id', '=', mnf_product_a.id), ('product_id', '=', product_d.id)])
+ self.assertEqual(move.state, 'assigned', "Wrong state in 'To consume line' of manufacturing order.")
+
+ # Create inventory for product C.
+ # ------------------------------
+ # Need product C ( 20 kg + 6 kg + 1502.5 gm = 27.5025 kg)
+ # -------------------------------------------------------
+ inventory = self.Inventory.create({
+ 'name': 'Inventory Product C KG',
+ 'product_ids': [(4, product_c.id)]})
+
+ inventory.action_start()
+ self.assertFalse(inventory.line_ids, "Inventory line should not created.")
+ self.InventoryLine.create({
+ 'inventory_id': inventory.id,
+ 'product_id': product_c.id,
+ 'product_uom_id': self.uom_kg.id,
+ 'product_qty': 27.5025,
+ 'location_id': self.company_data['default_warehouse'].lot_stock_id.id})
+ inventory.action_validate()
+
+ # Assign product to manufacturing order of product A.
+ # ---------------------------------------------------
+
+ mnf_product_a.action_assign()
+ self.assertEqual(mnf_product_a.reservation_state, 'assigned', 'Manufacturing order inventory state should be available.')
+ moves = self.StockMove.search([('raw_material_production_id', '=', mnf_product_a.id), ('product_id', '=', product_c.id)])
+
+ # Check product c move line state.
+ for move in moves:
+ self.assertEqual(move.state, 'assigned', "Wrong state in 'To consume line' of manufacturing order.")
+
+ # Produce product A.
+ # ------------------
+
+ mo_form = Form(mnf_product_a)
+ mo_form.qty_producing = mo_form.product_qty
+ mnf_product_a = mo_form.save()
+ mnf_product_a._post_inventory()
+ # Check state of manufacturing order product A.
+ self.assertEqual(mnf_product_a.state, 'done', 'Manufacturing order should still be in the progress state.')
+ # Check product A avaialble quantity should be 120.
+ self.assertEqual(product_a.qty_available, 120, 'Wrong quantity available of product A.')
+
+ def test_01_sale_mrp_delivery_kit(self):
+ """ Test delivered quantity on SO based on delivered quantity in pickings."""
+ # intial so
+ product = self.env['product.product'].create({
+ 'name': 'Table Kit',
+ 'type': 'consu',
+ 'invoice_policy': 'delivery',
+ 'categ_id': self.env.ref('product.product_category_all').id,
+ })
+ # Remove the MTO route as purchase is not installed and since the procurement removal the exception is directly raised
+ product.write({'route_ids': [(6, 0, [self.company_data['default_warehouse'].manufacture_pull_id.route_id.id])]})
+
+ product_wood_panel = self.env['product.product'].create({
+ 'name': 'Wood Panel',
+ 'type': 'product',
+ })
+ product_desk_bolt = self.env['product.product'].create({
+ 'name': 'Bolt',
+ 'type': 'product',
+ })
+ self.env['mrp.bom'].create({
+ 'product_tmpl_id': product.product_tmpl_id.id,
+ 'product_uom_id': self.env.ref('uom.product_uom_unit').id,
+ 'sequence': 2,
+ 'type': 'phantom',
+ 'bom_line_ids': [
+ (0, 0, {
+ 'product_id': product_wood_panel.id,
+ 'product_qty': 1,
+ 'product_uom_id': self.env.ref('uom.product_uom_unit').id,
+ }), (0, 0, {
+ 'product_id': product_desk_bolt.id,
+ 'product_qty': 4,
+ 'product_uom_id': self.env.ref('uom.product_uom_unit').id,
+ })
+ ]
+ })
+
+ partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ # if `delivery` module is installed, a default property is set for the carrier to use
+ # However this will lead to an extra line on the SO (the delivery line), which will force
+ # the SO to have a different flow (and `invoice_state` value)
+ if 'property_delivery_carrier_id' in partner:
+ partner.property_delivery_carrier_id = False
+
+ f = Form(self.env['sale.order'])
+ f.partner_id = partner
+ with f.order_line.new() as line:
+ line.product_id = product
+ line.product_uom_qty = 5
+ so = f.save()
+
+ # confirm our standard so, check the picking
+ so.action_confirm()
+ self.assertTrue(so.picking_ids, 'Sale MRP: no picking created for "invoice on delivery" storable products')
+
+ # invoice in on delivery, nothing should be invoiced
+ with self.assertRaises(UserError):
+ so._create_invoices()
+ self.assertEqual(so.invoice_status, 'no', 'Sale MRP: so invoice_status should be "nothing to invoice" after invoicing')
+
+ # deliver partially (1 of each instead of 5), check the so's invoice_status and delivered quantities
+ pick = so.picking_ids
+ pick.move_lines.write({'quantity_done': 1})
+ wiz_act = pick.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save()
+ wiz.process()
+ self.assertEqual(so.invoice_status, 'no', 'Sale MRP: so invoice_status should be "no" after partial delivery of a kit')
+ del_qty = sum(sol.qty_delivered for sol in so.order_line)
+ self.assertEqual(del_qty, 0.0, 'Sale MRP: delivered quantity should be zero after partial delivery of a kit')
+ # deliver remaining products, check the so's invoice_status and delivered quantities
+ self.assertEqual(len(so.picking_ids), 2, 'Sale MRP: number of pickings should be 2')
+ pick_2 = so.picking_ids.filtered('backorder_id')
+ for move in pick_2.move_lines:
+ if move.product_id.id == product_desk_bolt.id:
+ move.write({'quantity_done': 19})
+ else:
+ move.write({'quantity_done': 4})
+ pick_2.button_validate()
+
+ del_qty = sum(sol.qty_delivered for sol in so.order_line)
+ self.assertEqual(del_qty, 5.0, 'Sale MRP: delivered quantity should be 5.0 after complete delivery of a kit')
+ self.assertEqual(so.invoice_status, 'to invoice', 'Sale MRP: so invoice_status should be "to invoice" after complete delivery of a kit')
+
+ def test_02_sale_mrp_anglo_saxon(self):
+ """Test the price unit of a kit"""
+ # This test will check that the correct journal entries are created when a stockable product in real time valuation
+ # and in fifo cost method is sold in a company using anglo-saxon.
+ # For this test, let's consider a product category called Test category in real-time valuation and real price costing method
+ # Let's also consider a finished product with a bom with two components: component1(cost = 20) and component2(cost = 10)
+ # These products are in the Test category
+ # The bom consists of 2 component1 and 1 component2
+ # The invoice policy of the finished product is based on delivered quantities
+ self.env.company.currency_id = self.env.ref('base.USD')
+ self.uom_unit = self.UoM.create({
+ 'name': 'Test-Unit',
+ 'category_id': self.categ_unit.id,
+ 'factor': 1,
+ 'uom_type': 'bigger',
+ 'rounding': 1.0})
+ self.company = self.company_data['company']
+ self.company.anglo_saxon_accounting = True
+ self.partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ self.category = self.env.ref('product.product_category_1').copy({'name': 'Test category','property_valuation': 'real_time', 'property_cost_method': 'fifo'})
+ account_type = self.env['account.account.type'].create({'name': 'RCV type', 'type': 'other', 'internal_group': 'asset'})
+ self.account_receiv = self.env['account.account'].create({'name': 'Receivable', 'code': 'RCV00' , 'user_type_id': account_type.id, 'reconcile': True})
+ account_expense = self.env['account.account'].create({'name': 'Expense', 'code': 'EXP00' , 'user_type_id': account_type.id, 'reconcile': True})
+ account_output = self.env['account.account'].create({'name': 'Output', 'code': 'OUT00' , 'user_type_id': account_type.id, 'reconcile': True})
+ account_valuation = self.env['account.account'].create({'name': 'Valuation', 'code': 'STV00' , 'user_type_id': account_type.id, 'reconcile': True})
+ self.partner.property_account_receivable_id = self.account_receiv
+ self.category.property_account_income_categ_id = self.account_receiv
+ self.category.property_account_expense_categ_id = account_expense
+ self.category.property_stock_account_input_categ_id = self.account_receiv
+ self.category.property_stock_account_output_categ_id = account_output
+ self.category.property_stock_valuation_account_id = account_valuation
+ self.category.property_stock_journal = self.env['account.journal'].create({'name': 'Stock journal', 'type': 'sale', 'code': 'STK00'})
+
+ Product = self.env['product.product']
+ self.finished_product = Product.create({
+ 'name': 'Finished product',
+ 'type': 'product',
+ 'uom_id': self.uom_unit.id,
+ 'invoice_policy': 'delivery',
+ 'categ_id': self.category.id})
+ self.component1 = Product.create({
+ 'name': 'Component 1',
+ 'type': 'product',
+ 'uom_id': self.uom_unit.id,
+ 'categ_id': self.category.id,
+ 'standard_price': 20})
+ self.component2 = Product.create({
+ 'name': 'Component 2',
+ 'type': 'product',
+ 'uom_id': self.uom_unit.id,
+ 'categ_id': self.category.id,
+ 'standard_price': 10})
+
+ # Create quants with sudo to avoid:
+ # "You are not allowed to create 'Quants' (stock.quant) records. No group currently allows this operation."
+ self.env['stock.quant'].sudo().create({
+ 'product_id': self.component1.id,
+ 'location_id': self.company_data['default_warehouse'].lot_stock_id.id,
+ 'quantity': 6.0,
+ })
+ self.env['stock.quant'].sudo().create({
+ 'product_id': self.component2.id,
+ 'location_id': self.company_data['default_warehouse'].lot_stock_id.id,
+ 'quantity': 3.0,
+ })
+ self.bom = self.env['mrp.bom'].create({
+ 'product_tmpl_id': self.finished_product.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+ BomLine = self.env['mrp.bom.line']
+ BomLine.create({
+ 'product_id': self.component1.id,
+ 'product_qty': 2.0,
+ 'bom_id': self.bom.id})
+ BomLine.create({
+ 'product_id': self.component2.id,
+ 'product_qty': 1.0,
+ 'bom_id': self.bom.id})
+
+ # Create a SO for a specific partner for three units of the finished product
+ so_vals = {
+ 'partner_id': self.partner.id,
+ 'partner_invoice_id': self.partner.id,
+ 'partner_shipping_id': self.partner.id,
+ 'order_line': [(0, 0, {
+ 'name': self.finished_product.name,
+ 'product_id': self.finished_product.id,
+ 'product_uom_qty': 3,
+ 'product_uom': self.finished_product.uom_id.id,
+ 'price_unit': self.finished_product.list_price
+ })],
+ 'pricelist_id': self.env.ref('product.list0').id,
+ 'company_id': self.company.id,
+ }
+ self.so = self.env['sale.order'].create(so_vals)
+ # Validate the SO
+ self.so.action_confirm()
+ # Deliver the three finished products
+ pick = self.so.picking_ids
+ # To check the products on the picking
+ self.assertEqual(pick.move_lines.mapped('product_id'), self.component1 | self.component2)
+ wiz_act = pick.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save()
+ wiz.process()
+ # Create the invoice
+ self.so._create_invoices()
+ self.invoice = self.so.invoice_ids
+ # Changed the invoiced quantity of the finished product to 2
+ move_form = Form(self.invoice)
+ with move_form.invoice_line_ids.edit(0) as line_form:
+ line_form.quantity = 2.0
+ self.invoice = move_form.save()
+ self.invoice.action_post()
+ aml = self.invoice.line_ids
+ aml_expense = aml.filtered(lambda l: l.is_anglo_saxon_line and l.debit > 0)
+ aml_output = aml.filtered(lambda l: l.is_anglo_saxon_line and l.credit > 0)
+ # Check that the cost of Good Sold entries are equal to 2* (2 * 20 + 1 * 10) = 100
+ self.assertEqual(aml_expense.debit, 100, "Cost of Good Sold entry missing or mismatching")
+ self.assertEqual(aml_output.credit, 100, "Cost of Good Sold entry missing or mismatching")
+
+ def test_03_sale_mrp_simple_kit_qty_delivered(self):
+ """ Test that the quantities delivered are correct when
+ a simple kit is ordered with multiple backorders
+ """
+
+ # kit_1 structure:
+ # ================
+
+ # kit_1 ---|- component_a x2
+ # |- component_b x1
+ # |- component_c x3
+
+ # Updating the quantities in stock to prevent
+ # a 'Not enough inventory' warning message.
+ stock_location = self.company_data['default_warehouse'].lot_stock_id
+ self.env['stock.quant']._update_available_quantity(self.component_a, stock_location, 20)
+ self.env['stock.quant']._update_available_quantity(self.component_b, stock_location, 10)
+ self.env['stock.quant']._update_available_quantity(self.component_c, stock_location, 30)
+
+ # Creation of a sale order for x10 kit_1
+ partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ f = Form(self.env['sale.order'])
+ f.partner_id = partner
+ with f.order_line.new() as line:
+ line.product_id = self.kit_1
+ line.product_uom_qty = 10.0
+
+ # Confirming the SO to trigger the picking creation
+ so = f.save()
+ so.action_confirm()
+
+ # Check picking creation
+ self.assertEqual(len(so.picking_ids), 1)
+ picking_original = so.picking_ids[0]
+ move_lines = picking_original.move_lines
+
+ # Check if the correct amount of stock.moves are created
+ self.assertEqual(len(move_lines), 3)
+
+ # Check if BoM is created and is for a 'Kit'
+ bom_from_k1 = self.env['mrp.bom']._bom_find(product=self.kit_1)
+ self.assertEqual(self.bom_kit_1.id, bom_from_k1.id)
+ self.assertEqual(bom_from_k1.type, 'phantom')
+
+ # Check there's only 1 order line on the SO and it's for x10 'kit_1'
+ order_lines = so.order_line
+ self.assertEqual(len(order_lines), 1)
+ order_line = order_lines[0]
+ self.assertEqual(order_line.product_id.id, self.kit_1.id)
+ self.assertEqual(order_line.product_uom_qty, 10.0)
+
+ # Check if correct qty is ordered for each component of the kit
+ expected_quantities = {
+ self.component_a: 20,
+ self.component_b: 10,
+ self.component_c: 30,
+ }
+ self._assert_quantities(move_lines, expected_quantities)
+
+ # Process only x1 of the first component then create a backorder for the missing components
+ picking_original.move_lines.sorted()[0].write({'quantity_done': 1})
+
+ wiz_act = so.picking_ids[0].button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save().process()
+
+ # Check that the backorder was created, no kit should be delivered at this point
+ self.assertEqual(len(so.picking_ids), 2)
+ backorder_1 = so.picking_ids - picking_original
+ self.assertEqual(backorder_1.backorder_id.id, picking_original.id)
+ self.assertEqual(order_line.qty_delivered, 0)
+
+ # Process only x6 each componenent in the picking
+ # Then create a backorder for the missing components
+ backorder_1.move_lines.write({'quantity_done': 6})
+ wiz_act = backorder_1.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save().process()
+
+ # Check that a backorder is created
+ self.assertEqual(len(so.picking_ids), 3)
+ backorder_2 = so.picking_ids - picking_original - backorder_1
+ self.assertEqual(backorder_2.backorder_id.id, backorder_1.id)
+
+ # With x6 unit of each components, we can only make 2 kits.
+ # So only 2 kits should be delivered
+ self.assertEqual(order_line.qty_delivered, 2)
+
+ # Process x3 more unit of each components :
+ # - Now only 3 kits should be delivered
+ # - A backorder will be created, the SO should have 3 picking_ids linked to it.
+ backorder_2.move_lines.write({'quantity_done': 3})
+
+ wiz_act = backorder_2.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save().process()
+
+ self.assertEqual(len(so.picking_ids), 4)
+ backorder_3 = so.picking_ids - picking_original - backorder_2 - backorder_1
+ self.assertEqual(backorder_3.backorder_id.id, backorder_2.id)
+ self.assertEqual(order_line.qty_delivered, 3)
+
+ # Adding missing components
+ qty_to_process = {
+ self.component_a: 10,
+ self.component_b: 1,
+ self.component_c: 21,
+ }
+ self._process_quantities(backorder_3.move_lines, qty_to_process)
+
+ # Validating the last backorder now it's complete
+ backorder_3.button_validate()
+ order_line._compute_qty_delivered()
+
+ # All kits should be delivered
+ self.assertEqual(order_line.qty_delivered, 10)
+
+ def test_04_sale_mrp_kit_qty_delivered(self):
+ """ Test that the quantities delivered are correct when
+ a kit with subkits is ordered with multiple backorders and returns
+ """
+
+ # 'kit_parent' structure:
+ # ---------------------------
+ #
+ # kit_parent --|- kit_2 x2 --|- component_d x1
+ # | |- kit_1 x2 -------|- component_a x2
+ # | |- component_b x1
+ # | |- component_c x3
+ # |
+ # |- kit_3 x1 --|- component_f x1
+ # | |- component_g x2
+ # |
+ # |- component_e x1
+
+ # Updating the quantities in stock to prevent
+ # a 'Not enough inventory' warning message.
+ stock_location = self.company_data['default_warehouse'].lot_stock_id
+ self.env['stock.quant']._update_available_quantity(self.component_a, stock_location, 56)
+ self.env['stock.quant']._update_available_quantity(self.component_b, stock_location, 28)
+ self.env['stock.quant']._update_available_quantity(self.component_c, stock_location, 84)
+ self.env['stock.quant']._update_available_quantity(self.component_d, stock_location, 14)
+ self.env['stock.quant']._update_available_quantity(self.component_e, stock_location, 7)
+ self.env['stock.quant']._update_available_quantity(self.component_f, stock_location, 14)
+ self.env['stock.quant']._update_available_quantity(self.component_g, stock_location, 28)
+
+ # Creation of a sale order for x7 kit_parent
+ partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ f = Form(self.env['sale.order'])
+ f.partner_id = partner
+ with f.order_line.new() as line:
+ line.product_id = self.kit_parent
+ line.product_uom_qty = 7.0
+
+ so = f.save()
+ so.action_confirm()
+
+ # Check picking creation, its move lines should concern
+ # only components. Also checks that the quantities are corresponding
+ # to the SO
+ self.assertEqual(len(so.picking_ids), 1)
+ order_line = so.order_line[0]
+ picking_original = so.picking_ids[0]
+ move_lines = picking_original.move_lines
+ products = move_lines.mapped('product_id')
+ kits = [self.kit_parent, self.kit_3, self.kit_2, self.kit_1]
+ components = [self.component_a, self.component_b, self.component_c, self.component_d, self.component_e, self.component_f, self.component_g]
+ expected_quantities = {
+ self.component_a: 56.0,
+ self.component_b: 28.0,
+ self.component_c: 84.0,
+ self.component_d: 14.0,
+ self.component_e: 7.0,
+ self.component_f: 14.0,
+ self.component_g: 28.0
+ }
+
+ self.assertEqual(len(move_lines), 7)
+ self.assertTrue(not any(kit in products for kit in kits))
+ self.assertTrue(all(component in products for component in components))
+ self._assert_quantities(move_lines, expected_quantities)
+
+ # Process only 7 units of each component
+ qty_to_process = 7
+ move_lines.write({'quantity_done': qty_to_process})
+
+ # Create a backorder for the missing componenents
+ wiz_act = picking_original.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save().process()
+
+ # Check that a backorded is created
+ self.assertEqual(len(so.picking_ids), 2)
+ backorder_1 = so.picking_ids - picking_original
+ self.assertEqual(backorder_1.backorder_id.id, picking_original.id)
+
+ # Even if some components are delivered completely,
+ # no KitParent should be delivered
+ self.assertEqual(order_line.qty_delivered, 0)
+
+ # Process just enough components to make 1 kit_parent
+ qty_to_process = {
+ self.component_a: 1,
+ self.component_c: 5,
+ }
+ self._process_quantities(backorder_1.move_lines, qty_to_process)
+
+ # Create a backorder for the missing componenents
+ wiz_act = backorder_1.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save().process()
+
+ # Only 1 kit_parent should be delivered at this point
+ self.assertEqual(order_line.qty_delivered, 1)
+
+ # Check that the second backorder is created
+ self.assertEqual(len(so.picking_ids), 3)
+ backorder_2 = so.picking_ids - picking_original - backorder_1
+ self.assertEqual(backorder_2.backorder_id.id, backorder_1.id)
+
+ # Set the components quantities that backorder_2 should have
+ expected_quantities = {
+ self.component_a: 48,
+ self.component_b: 21,
+ self.component_c: 72,
+ self.component_d: 7,
+ self.component_f: 7,
+ self.component_g: 21
+ }
+
+ # Check that the computed quantities are matching the theorical ones.
+ # Since component_e was totally processed, this componenent shouldn't be
+ # present in backorder_2
+ self.assertEqual(len(backorder_2.move_lines), 6)
+ move_comp_e = backorder_2.move_lines.filtered(lambda m: m.product_id.id == self.component_e.id)
+ self.assertFalse(move_comp_e)
+ self._assert_quantities(backorder_2.move_lines, expected_quantities)
+
+ # Process enough components to make x3 kit_parents
+ qty_to_process = {
+ self.component_a: 16,
+ self.component_b: 5,
+ self.component_c: 24,
+ self.component_g: 5
+ }
+ self._process_quantities(backorder_2.move_lines, qty_to_process)
+
+ # Create a backorder for the missing componenents
+ wiz_act = backorder_2.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save().process()
+
+ # Check that x3 kit_parents are indeed delivered
+ self.assertEqual(order_line.qty_delivered, 3)
+
+ # Check that the third backorder is created
+ self.assertEqual(len(so.picking_ids), 4)
+ backorder_3 = so.picking_ids - (picking_original + backorder_1 + backorder_2)
+ self.assertEqual(backorder_3.backorder_id.id, backorder_2.id)
+
+ # Check the components quantities that backorder_3 should have
+ expected_quantities = {
+ self.component_a: 32,
+ self.component_b: 16,
+ self.component_c: 48,
+ self.component_d: 7,
+ self.component_f: 7,
+ self.component_g: 16
+ }
+ self._assert_quantities(backorder_3.move_lines, expected_quantities)
+
+ # Process all missing components
+ self._process_quantities(backorder_3.move_lines, expected_quantities)
+
+ # Validating the last backorder now it's complete.
+ # All kits should be delivered
+ backorder_3.button_validate()
+ self.assertEqual(order_line.qty_delivered, 7.0)
+
+ # Return all components processed by backorder_3
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=backorder_3.ids, active_id=backorder_3.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
+ for return_move in return_wiz.product_return_moves:
+ return_move.write({
+ 'quantity': expected_quantities[return_move.product_id],
+ 'to_refund': True
+ })
+ res = return_wiz.create_returns()
+ return_pick = self.env['stock.picking'].browse(res['res_id'])
+
+ # Process all components and validate the picking
+ wiz_act = return_pick.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save()
+ wiz.process()
+
+ # Now quantity delivered should be 3 again
+ self.assertEqual(order_line.qty_delivered, 3)
+
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=return_pick.ids, active_id=return_pick.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
+ for move in return_wiz.product_return_moves:
+ move.quantity = expected_quantities[move.product_id]
+ res = return_wiz.create_returns()
+ return_of_return_pick = self.env['stock.picking'].browse(res['res_id'])
+
+ # Process all components except one of each
+ for move in return_of_return_pick.move_lines:
+ move.write({
+ 'quantity_done': expected_quantities[move.product_id] - 1,
+ 'to_refund': True
+ })
+
+ wiz_act = return_of_return_pick.button_validate()
+ Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save().process()
+
+ # As one of each component is missing, only 6 kit_parents should be delivered
+ self.assertEqual(order_line.qty_delivered, 6)
+
+ # Check that the 4th backorder is created.
+ self.assertEqual(len(so.picking_ids), 7)
+ backorder_4 = so.picking_ids - (picking_original + backorder_1 + backorder_2 + backorder_3 + return_of_return_pick + return_pick)
+ self.assertEqual(backorder_4.backorder_id.id, return_of_return_pick.id)
+
+ # Check the components quantities that backorder_4 should have
+ for move in backorder_4.move_lines:
+ self.assertEqual(move.product_qty, 1)
+
+ @mute_logger('odoo.tests.common.onchange')
+ def test_05_mrp_sale_kit_availability(self):
+ """
+ Check that the 'Not enough inventory' warning message shows correct
+ informations when a kit is ordered
+ """
+
+ warehouse_1 = self.env['stock.warehouse'].create({
+ 'name': 'Warehouse 1',
+ 'code': 'WH1'
+ })
+ warehouse_2 = self.env['stock.warehouse'].create({
+ 'name': 'Warehouse 2',
+ 'code': 'WH2'
+ })
+
+ # Those are all componenents needed to make kit_parents
+ components = [self.component_a, self.component_b, self.component_c, self.component_d, self.component_e,
+ self.component_f, self.component_g]
+
+ # Set enough quantities to make 1 kit_uom_in_kit in WH1
+ self.env['stock.quant']._update_available_quantity(self.component_a, warehouse_1.lot_stock_id, 8)
+ self.env['stock.quant']._update_available_quantity(self.component_b, warehouse_1.lot_stock_id, 4)
+ self.env['stock.quant']._update_available_quantity(self.component_c, warehouse_1.lot_stock_id, 12)
+ self.env['stock.quant']._update_available_quantity(self.component_d, warehouse_1.lot_stock_id, 2)
+ self.env['stock.quant']._update_available_quantity(self.component_e, warehouse_1.lot_stock_id, 1)
+ self.env['stock.quant']._update_available_quantity(self.component_f, warehouse_1.lot_stock_id, 2)
+ self.env['stock.quant']._update_available_quantity(self.component_g, warehouse_1.lot_stock_id, 4)
+
+ # Set quantities on WH2, but not enough to make 1 kit_parent
+ self.env['stock.quant']._update_available_quantity(self.component_a, warehouse_2.lot_stock_id, 7)
+ self.env['stock.quant']._update_available_quantity(self.component_b, warehouse_2.lot_stock_id, 3)
+ self.env['stock.quant']._update_available_quantity(self.component_c, warehouse_2.lot_stock_id, 12)
+ self.env['stock.quant']._update_available_quantity(self.component_d, warehouse_2.lot_stock_id, 1)
+ self.env['stock.quant']._update_available_quantity(self.component_e, warehouse_2.lot_stock_id, 1)
+ self.env['stock.quant']._update_available_quantity(self.component_f, warehouse_2.lot_stock_id, 1)
+ self.env['stock.quant']._update_available_quantity(self.component_g, warehouse_2.lot_stock_id, 4)
+
+ # Creation of a sale order for x7 kit_parent
+ qty_ordered = 7
+ f = Form(self.env['sale.order'])
+ f.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ f.warehouse_id = warehouse_2
+ with f.order_line.new() as line:
+ line.product_id = self.kit_parent
+ line.product_uom_qty = qty_ordered
+ so = f.save()
+ order_line = so.order_line[0]
+
+ # Check that not enough enough quantities are available in the warehouse set in the SO
+ # but there are enough quantities in Warehouse 1 for 1 kit_parent
+ kit_parent_wh_order = self.kit_parent.with_context(warehouse=so.warehouse_id.id)
+
+ # Check that not enough enough quantities are available in the warehouse set in the SO
+ # but there are enough quantities in Warehouse 1 for 1 kit_parent
+ self.assertEqual(kit_parent_wh_order.virtual_available, 0)
+ kit_parent_wh_order.invalidate_cache()
+ kit_parent_wh1 = self.kit_parent.with_context(warehouse=warehouse_1.id)
+ self.assertEqual(kit_parent_wh1.virtual_available, 1)
+
+ # Check there arn't enough quantities available for the sale order
+ self.assertTrue(float_compare(order_line.virtual_available_at_date - order_line.product_uom_qty, 0, precision_rounding=line.product_uom.rounding) == -1)
+
+ # We receive enoug of each component in Warehouse 2 to make 3 kit_parent
+ qty_to_process = {
+ self.component_a: (17, self.uom_unit),
+ self.component_b: (12, self.uom_unit),
+ self.component_c: (25, self.uom_unit),
+ self.component_d: (5, self.uom_unit),
+ self.component_e: (2, self.uom_unit),
+ self.component_f: (5, self.uom_unit),
+ self.component_g: (8, self.uom_unit),
+ }
+ self._create_move_quantities(qty_to_process, components, warehouse_2)
+
+ # As 'Warehouse 2' is the warehouse linked to the SO, 3 kits should be available
+ # But the quantity available in Warehouse 1 should stay 1
+ kit_parent_wh_order = self.kit_parent.with_context(warehouse=so.warehouse_id.id)
+ self.assertEqual(kit_parent_wh_order.virtual_available, 3)
+ kit_parent_wh_order.invalidate_cache()
+ kit_parent_wh1 = self.kit_parent.with_context(warehouse=warehouse_1.id)
+ self.assertEqual(kit_parent_wh1.virtual_available, 1)
+
+ # Check there arn't enough quantities available for the sale order
+ self.assertTrue(float_compare(order_line.virtual_available_at_date - order_line.product_uom_qty, 0, precision_rounding=line.product_uom.rounding) == -1)
+
+ # We receive enough of each component in Warehouse 2 to make 7 kit_parent
+ qty_to_process = {
+ self.component_a: (32, self.uom_unit),
+ self.component_b: (16, self.uom_unit),
+ self.component_c: (48, self.uom_unit),
+ self.component_d: (8, self.uom_unit),
+ self.component_e: (4, self.uom_unit),
+ self.component_f: (8, self.uom_unit),
+ self.component_g: (16, self.uom_unit),
+ }
+ self._create_move_quantities(qty_to_process, components, warehouse_2)
+
+ # Enough quantities should be available, no warning message should be displayed
+ kit_parent_wh_order = self.kit_parent.with_context(warehouse=so.warehouse_id.id)
+ self.assertEqual(kit_parent_wh_order.virtual_available, 7)
+
+ def test_06_kit_qty_delivered_mixed_uom(self):
+ """
+ Check that the quantities delivered are correct when a kit involves
+ multiple UoMs on its components
+ """
+ # Create some components
+ component_uom_unit = self._create_product('Comp Unit', self.uom_unit)
+ component_uom_dozen = self._create_product('Comp Dozen', self.uom_dozen)
+ component_uom_kg = self._create_product('Comp Kg', self.uom_kg)
+
+ # Create a kit 'kit_uom_1' :
+ # -----------------------
+ #
+ # kit_uom_1 --|- component_uom_unit x2 Test-Dozen
+ # |- component_uom_dozen x1 Test-Dozen
+ # |- component_uom_kg x3 Test-G
+
+ kit_uom_1 = self._create_product('Kit 1', self.uom_unit)
+
+ bom_kit_uom_1 = self.env['mrp.bom'].create({
+ 'product_tmpl_id': kit_uom_1.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+
+ BomLine = self.env['mrp.bom.line']
+ BomLine.create({
+ 'product_id': component_uom_unit.id,
+ 'product_qty': 2.0,
+ 'product_uom_id': self.uom_dozen.id,
+ 'bom_id': bom_kit_uom_1.id})
+ BomLine.create({
+ 'product_id': component_uom_dozen.id,
+ 'product_qty': 1.0,
+ 'product_uom_id': self.uom_dozen.id,
+ 'bom_id': bom_kit_uom_1.id})
+ BomLine.create({
+ 'product_id': component_uom_kg.id,
+ 'product_qty': 3.0,
+ 'product_uom_id': self.uom_gm.id,
+ 'bom_id': bom_kit_uom_1.id})
+
+ # Updating the quantities in stock to prevent
+ # a 'Not enough inventory' warning message.
+ stock_location = self.company_data['default_warehouse'].lot_stock_id
+ self.env['stock.quant']._update_available_quantity(component_uom_unit, stock_location, 240)
+ self.env['stock.quant']._update_available_quantity(component_uom_dozen, stock_location, 10)
+ self.env['stock.quant']._update_available_quantity(component_uom_kg, stock_location, 0.03)
+
+ # Creation of a sale order for x10 kit_1
+ partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ f = Form(self.env['sale.order'])
+ f.partner_id = partner
+ with f.order_line.new() as line:
+ line.product_id = kit_uom_1
+ line.product_uom_qty = 10.0
+
+ so = f.save()
+ so.action_confirm()
+
+ picking_original = so.picking_ids[0]
+ move_lines = picking_original.move_lines
+ order_line = so.order_line[0]
+
+ # Check that the quantities on the picking are the one expected for each components
+ for ml in move_lines:
+ corr_bom_line = bom_kit_uom_1.bom_line_ids.filtered(lambda b: b.product_id.id == ml.product_id.id)
+ computed_qty = ml.product_uom._compute_quantity(ml.product_uom_qty, corr_bom_line.product_uom_id)
+ self.assertEqual(computed_qty, order_line.product_uom_qty * corr_bom_line.product_qty)
+
+ # Processe enough componenents in the picking to make 2 kit_uom_1
+ # Then create a backorder for the missing components
+ qty_to_process = {
+ component_uom_unit: 48,
+ component_uom_dozen: 3,
+ component_uom_kg: 0.006
+ }
+ self._process_quantities(move_lines, qty_to_process)
+ res = move_lines.picking_id.button_validate()
+ Form(self.env[res['res_model']].with_context(res['context'])).save().process()
+
+ # Check that a backorder is created
+ self.assertEqual(len(so.picking_ids), 2)
+ backorder_1 = so.picking_ids - picking_original
+ self.assertEqual(backorder_1.backorder_id.id, picking_original.id)
+
+ # Only 2 kits should be delivered
+ self.assertEqual(order_line.qty_delivered, 2)
+
+ # Adding missing components
+ qty_to_process = {
+ component_uom_unit: 192,
+ component_uom_dozen: 7,
+ component_uom_kg: 0.024
+ }
+ self._process_quantities(backorder_1.move_lines, qty_to_process)
+
+ # Validating the last backorder now it's complete
+ backorder_1.button_validate()
+ order_line._compute_qty_delivered()
+ # All kits should be delivered
+ self.assertEqual(order_line.qty_delivered, 10)
+
+ @mute_logger('odoo.tests.common.onchange')
+ def test_07_kit_availability_mixed_uom(self):
+ """
+ Check that the 'Not enough inventory' warning message displays correct
+ informations when a kit with multiple UoMs on its components is ordered
+ """
+
+ # Create some components
+ component_uom_unit = self._create_product('Comp Unit', self.uom_unit)
+ component_uom_dozen = self._create_product('Comp Dozen', self.uom_dozen)
+ component_uom_kg = self._create_product('Comp Kg', self.uom_kg)
+ component_uom_gm = self._create_product('Comp g', self.uom_gm)
+ components = [component_uom_unit, component_uom_dozen, component_uom_kg, component_uom_gm]
+
+ # Create a kit 'kit_uom_in_kit' :
+ # -----------------------
+ # kit_uom_in_kit --|- component_uom_gm x3 Test-KG
+ # |- kit_uom_1 x2 Test-Dozen --|- component_uom_unit x2 Test-Dozen
+ # |- component_uom_dozen x1 Test-Dozen
+ # |- component_uom_kg x5 Test-G
+
+ kit_uom_1 = self._create_product('Sub Kit 1', self.uom_unit)
+ kit_uom_in_kit = self._create_product('Parent Kit', self.uom_unit)
+
+ bom_kit_uom_1 = self.env['mrp.bom'].create({
+ 'product_tmpl_id': kit_uom_1.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+
+ BomLine = self.env['mrp.bom.line']
+ BomLine.create({
+ 'product_id': component_uom_unit.id,
+ 'product_qty': 2.0,
+ 'product_uom_id': self.uom_dozen.id,
+ 'bom_id': bom_kit_uom_1.id})
+ BomLine.create({
+ 'product_id': component_uom_dozen.id,
+ 'product_qty': 1.0,
+ 'product_uom_id': self.uom_dozen.id,
+ 'bom_id': bom_kit_uom_1.id})
+ BomLine.create({
+ 'product_id': component_uom_kg.id,
+ 'product_qty': 5.0,
+ 'product_uom_id': self.uom_gm.id,
+ 'bom_id': bom_kit_uom_1.id})
+
+ bom_kit_uom_in_kit = self.env['mrp.bom'].create({
+ 'product_tmpl_id': kit_uom_in_kit.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'})
+
+ BomLine.create({
+ 'product_id': component_uom_gm.id,
+ 'product_qty': 3.0,
+ 'product_uom_id': self.uom_kg.id,
+ 'bom_id': bom_kit_uom_in_kit.id})
+ BomLine.create({
+ 'product_id': kit_uom_1.id,
+ 'product_qty': 2.0,
+ 'product_uom_id': self.uom_dozen.id,
+ 'bom_id': bom_kit_uom_in_kit.id})
+
+ # Create a simple warehouse to receives some products
+ warehouse_1 = self.env['stock.warehouse'].create({
+ 'name': 'Warehouse 1',
+ 'code': 'WH1'
+ })
+
+ # Set enough quantities to make 1 kit_uom_in_kit in WH1
+ self.env['stock.quant']._update_available_quantity(component_uom_unit, warehouse_1.lot_stock_id, 576)
+ self.env['stock.quant']._update_available_quantity(component_uom_dozen, warehouse_1.lot_stock_id, 24)
+ self.env['stock.quant']._update_available_quantity(component_uom_kg, warehouse_1.lot_stock_id, 0.12)
+ self.env['stock.quant']._update_available_quantity(component_uom_gm, warehouse_1.lot_stock_id, 3000)
+
+ # Creation of a sale order for x5 kit_uom_in_kit
+ qty_ordered = 5
+ f = Form(self.env['sale.order'])
+ f.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ f.warehouse_id = warehouse_1
+ with f.order_line.new() as line:
+ line.product_id = kit_uom_in_kit
+ line.product_uom_qty = qty_ordered
+
+ so = f.save()
+ order_line = so.order_line[0]
+
+ # Check that not enough enough quantities are available in the warehouse set in the SO
+ # but there are enough quantities in Warehouse 1 for 1 kit_parent
+ kit_uom_in_kit.with_context(warehouse=warehouse_1.id)._compute_quantities()
+ virtual_available_wh_order = kit_uom_in_kit.virtual_available
+ self.assertEqual(virtual_available_wh_order, 1)
+
+ # Check there arn't enough quantities available for the sale order
+ self.assertTrue(float_compare(order_line.virtual_available_at_date - order_line.product_uom_qty, 0, precision_rounding=line.product_uom.rounding) == -1)
+
+ # We receive enough of each component in Warehouse 1 to make 3 kit_uom_in_kit.
+ # Moves are created instead of only updating the quant quantities in order to trigger every compute fields.
+ qty_to_process = {
+ component_uom_unit: (1152, self.uom_unit),
+ component_uom_dozen: (48, self.uom_dozen),
+ component_uom_kg: (0.24, self.uom_kg),
+ component_uom_gm: (6000, self.uom_gm)
+ }
+ self._create_move_quantities(qty_to_process, components, warehouse_1)
+
+ # Check there arn't enough quantities available for the sale order
+ self.assertTrue(float_compare(order_line.virtual_available_at_date - order_line.product_uom_qty, 0, precision_rounding=line.product_uom.rounding) == -1)
+ kit_uom_in_kit.with_context(warehouse=warehouse_1.id)._compute_quantities()
+ virtual_available_wh_order = kit_uom_in_kit.virtual_available
+ self.assertEqual(virtual_available_wh_order, 3)
+
+ # We process enough quantities to have enough kit_uom_in_kit available for the sale order.
+ self._create_move_quantities(qty_to_process, components, warehouse_1)
+
+ # We check that enough quantities were processed to sell 5 kit_uom_in_kit
+ kit_uom_in_kit.with_context(warehouse=warehouse_1.id)._compute_quantities()
+ self.assertEqual(kit_uom_in_kit.virtual_available, 5)
+
+ def test_10_sale_mrp_kits_routes(self):
+
+ # Create a kit 'kit_1' :
+ # -----------------------
+ #
+ # kit_1 --|- component_shelf1 x3
+ # |- component_shelf2 x2
+
+ stock_location_components = self.env['stock.location'].create({
+ 'name': 'Shelf 1',
+ 'location_id': self.company_data['default_warehouse'].lot_stock_id.id,
+ })
+ stock_location_14 = self.env['stock.location'].create({
+ 'name': 'Shelf 2',
+ 'location_id': self.company_data['default_warehouse'].lot_stock_id.id,
+ })
+
+ kit_1 = self._create_product('Kit1', self.uom_unit)
+ component_shelf1 = self._create_product('Comp Shelf1', self.uom_unit)
+ component_shelf2 = self._create_product('Comp Shelf2', self.uom_unit)
+
+ with Form(self.env['mrp.bom']) as bom:
+ bom.product_tmpl_id = kit_1.product_tmpl_id
+ bom.product_qty = 1
+ bom.product_uom_id = self.uom_unit
+ bom.type = 'phantom'
+ with bom.bom_line_ids.new() as line:
+ line.product_id = component_shelf1
+ line.product_qty = 3
+ line.product_uom_id = self.uom_unit
+ with bom.bom_line_ids.new() as line:
+ line.product_id = component_shelf2
+ line.product_qty = 2
+ line.product_uom_id = self.uom_unit
+
+ # Creating 2 specific routes for each of the components of the kit
+ route_shelf1 = self.env['stock.location.route'].create({
+ 'name': 'Shelf1 -> Customer',
+ 'product_selectable': True,
+ 'rule_ids': [(0, 0, {
+ 'name': 'Shelf1 -> Customer',
+ 'action': 'pull',
+ 'picking_type_id': self.company_data['default_warehouse'].in_type_id.id,
+ 'location_src_id': stock_location_components.id,
+ 'location_id': self.ref('stock.stock_location_customers'),
+ })],
+ })
+
+ route_shelf2 = self.env['stock.location.route'].create({
+ 'name': 'Shelf2 -> Customer',
+ 'product_selectable': True,
+ 'rule_ids': [(0, 0, {
+ 'name': 'Shelf2 -> Customer',
+ 'action': 'pull',
+ 'picking_type_id': self.company_data['default_warehouse'].in_type_id.id,
+ 'location_src_id': stock_location_14.id,
+ 'location_id': self.ref('stock.stock_location_customers'),
+ })],
+ })
+
+ component_shelf1.write({
+ 'route_ids': [(4, route_shelf1.id)]})
+ component_shelf2.write({
+ 'route_ids': [(4, route_shelf2.id)]})
+
+ # Set enough quantities to make 1 kit_uom_in_kit in WH1
+ self.env['stock.quant']._update_available_quantity(component_shelf1, self.company_data['default_warehouse'].lot_stock_id, 15)
+ self.env['stock.quant']._update_available_quantity(component_shelf2, self.company_data['default_warehouse'].lot_stock_id, 10)
+
+ # Creating a sale order for 5 kits and confirming it
+ order_form = Form(self.env['sale.order'])
+ order_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ with order_form.order_line.new() as line:
+ line.product_id = kit_1
+ line.product_uom = self.uom_unit
+ line.product_uom_qty = 5
+ order = order_form.save()
+ order.action_confirm()
+
+ # Now we check that the routes of the components were applied, in order to make sure the routes set
+ # on the kit itself are ignored
+ self.assertEqual(len(order.picking_ids), 2)
+ self.assertEqual(len(order.picking_ids[0].move_lines), 1)
+ self.assertEqual(len(order.picking_ids[1].move_lines), 1)
+ moves = order.picking_ids.mapped('move_lines')
+ move_shelf1 = moves.filtered(lambda m: m.product_id == component_shelf1)
+ move_shelf2 = moves.filtered(lambda m: m.product_id == component_shelf2)
+ self.assertEqual(move_shelf1.location_id.id, stock_location_components.id)
+ self.assertEqual(move_shelf1.location_dest_id.id, self.ref('stock.stock_location_customers'))
+ self.assertEqual(move_shelf2.location_id.id, stock_location_14.id)
+ self.assertEqual(move_shelf2.location_dest_id.id, self.ref('stock.stock_location_customers'))
+
+ def test_11_sale_mrp_explode_kits_uom_quantities(self):
+
+ # Create a kit 'kit_1' :
+ # -----------------------
+ #
+ # 2x Dozens kit_1 --|- component_unit x6 Units
+ # |- component_kg x7 Kg
+
+ kit_1 = self._create_product('Kit1', self.uom_unit)
+ component_unit = self._create_product('Comp Unit', self.uom_unit)
+ component_kg = self._create_product('Comp Kg', self.uom_kg)
+
+ with Form(self.env['mrp.bom']) as bom:
+ bom.product_tmpl_id = kit_1.product_tmpl_id
+ bom.product_qty = 2
+ bom.product_uom_id = self.uom_dozen
+ bom.type = 'phantom'
+ with bom.bom_line_ids.new() as line:
+ line.product_id = component_unit
+ line.product_qty = 6
+ line.product_uom_id = self.uom_unit
+ with bom.bom_line_ids.new() as line:
+ line.product_id = component_kg
+ line.product_qty = 7
+ line.product_uom_id = self.uom_kg
+
+ # Create a simple warehouse to receives some products
+ warehouse_1 = self.env['stock.warehouse'].create({
+ 'name': 'Warehouse 1',
+ 'code': 'WH1'
+ })
+ # Set enough quantities to make 1 Test-Dozen kit_uom_in_kit
+ self.env['stock.quant']._update_available_quantity(component_unit, warehouse_1.lot_stock_id, 12)
+ self.env['stock.quant']._update_available_quantity(component_kg, warehouse_1.lot_stock_id, 14)
+
+ # Creating a sale order for 3 Units of kit_1 and confirming it
+ order_form = Form(self.env['sale.order'])
+ order_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ order_form.warehouse_id = warehouse_1
+ with order_form.order_line.new() as line:
+ line.product_id = kit_1
+ line.product_uom = self.uom_unit
+ line.product_uom_qty = 2
+ order = order_form.save()
+ order.action_confirm()
+
+ # Now we check that the routes of the components were applied, in order to make sure the routes set
+ # on the kit itself are ignored
+ self.assertEqual(len(order.picking_ids), 1)
+ self.assertEqual(len(order.picking_ids[0].move_lines), 2)
+
+ # Finally, we check the quantities for each component on the picking
+ move_component_unit = order.picking_ids[0].move_lines.filtered(lambda m: m.product_id == component_unit)
+ move_component_kg = order.picking_ids[0].move_lines - move_component_unit
+ self.assertEqual(move_component_unit.product_uom_qty, 0.5)
+ self.assertEqual(move_component_kg.product_uom_qty, 0.58)
+
+ def test_product_type_service_1(self):
+ route_manufacture = self.company_data['default_warehouse'].manufacture_pull_id.route_id.id
+ route_mto = self.company_data['default_warehouse'].mto_pull_id.route_id.id
+ self.uom_unit = self.env.ref('uom.product_uom_unit')
+
+ # Create finished product
+ finished_product = self.env['product.product'].create({
+ 'name': 'Geyser',
+ 'type': 'product',
+ 'route_ids': [(4, route_mto), (4, route_manufacture)],
+ })
+
+ # Create service type product
+ product_raw = self.env['product.product'].create({
+ 'name': 'raw Geyser',
+ 'type': 'service',
+ })
+
+ # Create bom for finish product
+ bom = self.env['mrp.bom'].create({
+ 'product_id': finished_product.id,
+ 'product_tmpl_id': finished_product.product_tmpl_id.id,
+ 'product_uom_id': self.env.ref('uom.product_uom_unit').id,
+ 'product_qty': 1.0,
+ 'type': 'normal',
+ 'bom_line_ids': [(5, 0), (0, 0, {'product_id': product_raw.id})]
+ })
+
+ # Create sale order
+ sale_form = Form(self.env['sale.order'])
+ sale_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ with sale_form.order_line.new() as line:
+ line.name = finished_product.name
+ line.product_id = finished_product
+ line.product_uom_qty = 1.0
+ line.product_uom = self.uom_unit
+ line.price_unit = 10.0
+ sale_order = sale_form.save()
+
+ sale_order.action_confirm()
+
+ mo = self.env['mrp.production'].search([('product_id', '=', finished_product.id)])
+
+ self.assertTrue(mo, 'Manufacturing order created.')
+
+ def test_cancel_flow_1(self):
+ """ Sell a MTO/manufacture product.
+
+ Cancel the delivery and the production order. Then duplicate
+ the delivery. Another production order should be created."""
+ route_manufacture = self.company_data['default_warehouse'].manufacture_pull_id.route_id.id
+ route_mto = self.company_data['default_warehouse'].mto_pull_id.route_id.id
+ self.uom_unit = self.env.ref('uom.product_uom_unit')
+
+ # Create finished product
+ finished_product = self.env['product.product'].create({
+ 'name': 'Geyser',
+ 'type': 'product',
+ 'route_ids': [(4, route_mto), (4, route_manufacture)],
+ })
+
+ product_raw = self.env['product.product'].create({
+ 'name': 'raw Geyser',
+ 'type': 'product',
+ })
+
+ # Create bom for finish product
+ bom = self.env['mrp.bom'].create({
+ 'product_id': finished_product.id,
+ 'product_tmpl_id': finished_product.product_tmpl_id.id,
+ 'product_uom_id': self.env.ref('uom.product_uom_unit').id,
+ 'product_qty': 1.0,
+ 'type': 'normal',
+ 'bom_line_ids': [(5, 0), (0, 0, {'product_id': product_raw.id})]
+ })
+
+ # Create sale order
+ sale_form = Form(self.env['sale.order'])
+ sale_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ with sale_form.order_line.new() as line:
+ line.name = finished_product.name
+ line.product_id = finished_product
+ line.product_uom_qty = 1.0
+ line.product_uom = self.uom_unit
+ line.price_unit = 10.0
+ sale_order = sale_form.save()
+
+ sale_order.action_confirm()
+
+ mo = self.env['mrp.production'].search([('product_id', '=', finished_product.id)])
+ delivery = sale_order.picking_ids
+ delivery.action_cancel()
+ mo.action_cancel()
+ copied_delivery = delivery.copy()
+ copied_delivery.action_confirm()
+ mos = self.env['mrp.production'].search([('product_id', '=', finished_product.id)])
+ self.assertEqual(len(mos), 1)
+ self.assertEqual(mos.state, 'cancel')
+
+ def test_cancel_flow_2(self):
+ """ Sell a MTO/manufacture product.
+
+ Cancel the production order and the delivery. Then duplicate
+ the delivery. Another production order should be created."""
+ route_manufacture = self.company_data['default_warehouse'].manufacture_pull_id.route_id.id
+ route_mto = self.company_data['default_warehouse'].mto_pull_id.route_id.id
+ self.uom_unit = self.env.ref('uom.product_uom_unit')
+
+ # Create finished product
+ finished_product = self.env['product.product'].create({
+ 'name': 'Geyser',
+ 'type': 'product',
+ 'route_ids': [(4, route_mto), (4, route_manufacture)],
+ })
+
+ product_raw = self.env['product.product'].create({
+ 'name': 'raw Geyser',
+ 'type': 'product',
+ })
+
+ # Create bom for finish product
+ bom = self.env['mrp.bom'].create({
+ 'product_id': finished_product.id,
+ 'product_tmpl_id': finished_product.product_tmpl_id.id,
+ 'product_uom_id': self.env.ref('uom.product_uom_unit').id,
+ 'product_qty': 1.0,
+ 'type': 'normal',
+ 'bom_line_ids': [(5, 0), (0, 0, {'product_id': product_raw.id})]
+ })
+
+ # Create sale order
+ sale_form = Form(self.env['sale.order'])
+ sale_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ with sale_form.order_line.new() as line:
+ line.name = finished_product.name
+ line.product_id = finished_product
+ line.product_uom_qty = 1.0
+ line.product_uom = self.uom_unit
+ line.price_unit = 10.0
+ sale_order = sale_form.save()
+
+ sale_order.action_confirm()
+
+ mo = self.env['mrp.production'].search([('product_id', '=', finished_product.id)])
+ delivery = sale_order.picking_ids
+ mo.action_cancel()
+ delivery.action_cancel()
+ copied_delivery = delivery.copy()
+ copied_delivery.action_confirm()
+ mos = self.env['mrp.production'].search([('product_id', '=', finished_product.id)])
+ self.assertEqual(len(mos), 1)
+ self.assertEqual(mos.state, 'cancel')
diff --git a/addons/sale_mrp/tests/test_sale_mrp_kit_bom.py b/addons/sale_mrp/tests/test_sale_mrp_kit_bom.py
new file mode 100644
index 00000000..4c1978a9
--- /dev/null
+++ b/addons/sale_mrp/tests/test_sale_mrp_kit_bom.py
@@ -0,0 +1,166 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.tests.common import TransactionCase, Form
+
+
+class TestSaleMrpKitBom(TransactionCase):
+
+ def _create_product(self, name, type, price):
+ return self.env['product.product'].create({
+ 'name': name,
+ 'type': type,
+ 'standard_price': price,
+ })
+
+ def test_sale_mrp_kit_bom_cogs(self):
+ """Check invoice COGS aml after selling and delivering a product
+ with Kit BoM having another product with Kit BoM as component"""
+
+ # ----------------------------------------------
+ # BoM of Kit A:
+ # - BoM Type: Kit
+ # - Quantity: 3
+ # - Components:
+ # * 2 x Kit B
+ # * 1 x Component A (Cost: $3)
+ #
+ # BoM of Kit B:
+ # - BoM Type: Kit
+ # - Quantity: 10
+ # - Components:
+ # * 2 x Component B (Cost: $4)
+ # * 3 x Component BB (Cost: $5)
+ # ----------------------------------------------
+
+ self.env.user.company_id.anglo_saxon_accounting = True
+ self.stock_input_account = self.env['account.account'].create({
+ 'name': 'Stock Input',
+ 'code': 'StockIn',
+ 'user_type_id': self.env.ref('account.data_account_type_current_assets').id,
+ })
+ self.stock_output_account = self.env['account.account'].create({
+ 'name': 'Stock Output',
+ 'code': 'StockOut',
+ 'reconcile': True,
+ 'user_type_id': self.env.ref('account.data_account_type_current_assets').id,
+ })
+ self.stock_valuation_account = self.env['account.account'].create({
+ 'name': 'Stock Valuation',
+ 'code': 'StockVal',
+ 'user_type_id': self.env.ref('account.data_account_type_current_assets').id,
+ })
+ self.expense_account = self.env['account.account'].create({
+ 'name': 'Expense Account',
+ 'code': 'Exp',
+ 'user_type_id': self.env.ref('account.data_account_type_expenses').id,
+ })
+ self.income_account = self.env['account.account'].create({
+ 'name': 'Income Account',
+ 'code': 'Inc',
+ 'user_type_id': self.env.ref('account.data_account_type_expenses').id,
+ })
+ self.stock_journal = self.env['account.journal'].create({
+ 'name': 'Stock Journal',
+ 'code': 'STJTEST',
+ 'type': 'general',
+ })
+ self.recv_account = self.env['account.account'].create({
+ 'name': 'account receivable',
+ 'code': 'RECV',
+ 'user_type_id': self.env.ref('account.data_account_type_receivable').id,
+ 'reconcile': True,
+ })
+ self.pay_account = self.env['account.account'].create({
+ 'name': 'account payable',
+ 'code': 'PAY',
+ 'user_type_id': self.env.ref('account.data_account_type_payable').id,
+ 'reconcile': True,
+ })
+ self.customer = self.env['res.partner'].create({
+ 'name': 'customer',
+ 'property_account_receivable_id': self.recv_account.id,
+ 'property_account_payable_id': self.pay_account.id,
+ })
+ self.journal_sale = self.env['account.journal'].create({
+ 'name': 'Sale Journal - Test',
+ 'code': 'AJ-SALE',
+ 'type': 'sale',
+ 'company_id': self.env.user.company_id.id,
+ })
+
+ self.component_a = self._create_product('Component A', 'consu', 3.00)
+ self.component_b = self._create_product('Component B', 'consu', 4.00)
+ self.component_bb = self._create_product('Component BB', 'consu', 5.00)
+ self.kit_a = self._create_product('Kit A', 'product', 0.00)
+ self.kit_b = self._create_product('Kit B', 'consu', 0.00)
+
+ self.kit_a.write({
+ 'categ_id': self.env.ref('product.product_category_all').id,
+ 'property_account_expense_id': self.expense_account.id,
+ 'property_account_income_id': self.income_account.id,
+ })
+ self.kit_a.categ_id.write({
+ 'property_stock_account_input_categ_id': self.stock_input_account.id,
+ 'property_stock_account_output_categ_id': self.stock_output_account.id,
+ 'property_stock_valuation_account_id': self.stock_valuation_account.id,
+ 'property_stock_journal': self.stock_journal.id,
+ 'property_valuation': 'real_time',
+ })
+
+ # Create BoM for Kit A
+ bom_product_form = Form(self.env['mrp.bom'])
+ bom_product_form.product_id = self.kit_a
+ bom_product_form.product_tmpl_id = self.kit_a.product_tmpl_id
+ bom_product_form.product_qty = 3.0
+ bom_product_form.type = 'phantom'
+ with bom_product_form.bom_line_ids.new() as bom_line:
+ bom_line.product_id = self.kit_b
+ bom_line.product_qty = 2.0
+ with bom_product_form.bom_line_ids.new() as bom_line:
+ bom_line.product_id = self.component_a
+ bom_line.product_qty = 1.0
+ self.bom_a = bom_product_form.save()
+
+ # Create BoM for Kit B
+ bom_product_form = Form(self.env['mrp.bom'])
+ bom_product_form.product_id = self.kit_b
+ bom_product_form.product_tmpl_id = self.kit_b.product_tmpl_id
+ bom_product_form.product_qty = 10.0
+ bom_product_form.type = 'phantom'
+ with bom_product_form.bom_line_ids.new() as bom_line:
+ bom_line.product_id = self.component_b
+ bom_line.product_qty = 2.0
+ with bom_product_form.bom_line_ids.new() as bom_line:
+ bom_line.product_id = self.component_bb
+ bom_line.product_qty = 3.0
+ self.bom_b = bom_product_form.save()
+
+ so = self.env['sale.order'].create({
+ 'partner_id': self.customer.id,
+ 'order_line': [
+ (0, 0, {
+ 'name': self.kit_a.name,
+ 'product_id': self.kit_a.id,
+ 'product_uom_qty': 1.0,
+ 'product_uom': self.kit_a.uom_id.id,
+ 'price_unit': 1,
+ 'tax_id': False,
+ })],
+ })
+ so.action_confirm()
+ so.picking_ids.move_lines.quantity_done = 1
+ so.picking_ids.button_validate()
+
+ invoice = so.with_context(default_journal_id=self.journal_sale.id)._create_invoices()
+ invoice.action_post()
+
+ # Check the resulting accounting entries
+ amls = invoice.line_ids
+ self.assertEqual(len(amls), 4)
+ stock_out_aml = amls.filtered(lambda aml: aml.account_id == self.stock_output_account)
+ self.assertEqual(stock_out_aml.debit, 0)
+ self.assertAlmostEqual(stock_out_aml.credit, 2.53)
+ cogs_aml = amls.filtered(lambda aml: aml.account_id == self.expense_account)
+ self.assertAlmostEqual(cogs_aml.debit, 2.53)
+ self.assertEqual(cogs_aml.credit, 0)
diff --git a/addons/sale_mrp/tests/test_sale_mrp_lead_time.py b/addons/sale_mrp/tests/test_sale_mrp_lead_time.py
new file mode 100644
index 00000000..e9d0e171
--- /dev/null
+++ b/addons/sale_mrp/tests/test_sale_mrp_lead_time.py
@@ -0,0 +1,162 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from datetime import timedelta
+
+from odoo import fields
+from odoo.addons.stock.tests.common2 import TestStockCommon
+
+from odoo.tests import Form
+
+
+class TestSaleMrpLeadTime(TestStockCommon):
+
+ def setUp(self):
+ super(TestSaleMrpLeadTime, self).setUp()
+ self.env.ref('stock.route_warehouse0_mto').active = True
+ # Update the product_1 with type, route, Manufacturing Lead Time and Customer Lead Time
+ with Form(self.product_1) as p1:
+ p1.type = 'product'
+ p1.produce_delay = 5.0
+ p1.sale_delay = 5.0
+ p1.route_ids.clear()
+ p1.route_ids.add(self.warehouse_1.manufacture_pull_id.route_id)
+ p1.route_ids.add(self.warehouse_1.mto_pull_id.route_id)
+
+ # Update the product_2 with type
+ with Form(self.product_2) as p2:
+ p2.type = 'consu'
+
+ # Create Bill of materials for product_1
+ with Form(self.env['mrp.bom']) as bom:
+ bom.product_tmpl_id = self.product_1.product_tmpl_id
+ bom.product_qty = 2
+ with bom.bom_line_ids.new() as line:
+ line.product_id = self.product_2
+ line.product_qty = 4
+
+ def test_00_product_company_level_delays(self):
+ """ In order to check schedule date, set product's Manufacturing Lead Time
+ and Customer Lead Time and also set company's Manufacturing Lead Time
+ and Sales Safety Days."""
+
+ company = self.env.ref('base.main_company')
+
+ # Update company with Manufacturing Lead Time and Sales Safety Days
+ company.write({'manufacturing_lead': 3.0,
+ 'security_lead': 3.0})
+
+ # Create sale order of product_1
+ order_form = Form(self.env['sale.order'])
+ order_form.partner_id = self.partner_1
+ with order_form.order_line.new() as line:
+ line.product_id = self.product_1
+ line.product_uom_qty = 10
+ order = order_form.save()
+ # Confirm sale order
+ order.action_confirm()
+
+ # Check manufacturing order created or not
+ manufacturing_order = self.env['mrp.production'].search([('product_id', '=', self.product_1.id), ('move_dest_ids', 'in', order.picking_ids[0].move_lines.ids)])
+ self.assertTrue(manufacturing_order, 'Manufacturing order should be created.')
+
+ # Check schedule date of picking
+ deadline_picking = fields.Datetime.from_string(order.date_order) + timedelta(days=self.product_1.sale_delay)
+ out_date = deadline_picking - timedelta(days=company.security_lead)
+ self.assertAlmostEqual(
+ order.picking_ids[0].scheduled_date, out_date,
+ delta=timedelta(seconds=1),
+ msg='Schedule date of picking should be equal to: Order date + Customer Lead Time - Sales Safety Days.'
+ )
+ self.assertAlmostEqual(
+ order.picking_ids[0].date_deadline, deadline_picking,
+ delta=timedelta(seconds=1),
+ msg='Deadline date of picking should be equal to: Order date + Customer Lead Time.'
+ )
+
+ # Check schedule date and deadline of manufacturing order
+ mo_scheduled = out_date - timedelta(days=self.product_1.produce_delay) - timedelta(days=company.manufacturing_lead)
+ self.assertAlmostEqual(
+ fields.Datetime.from_string(manufacturing_order.date_planned_start), mo_scheduled,
+ delta=timedelta(seconds=1),
+ msg="Schedule date of manufacturing order should be equal to: Schedule date of picking - product's Manufacturing Lead Time - company's Manufacturing Lead Time."
+ )
+ self.assertAlmostEqual(
+ fields.Datetime.from_string(manufacturing_order.date_deadline), deadline_picking,
+ delta=timedelta(seconds=1),
+ msg="Deadline date of manufacturing order should be equal to the deadline of sale picking"
+ )
+
+ def test_01_product_route_level_delays(self):
+ """ In order to check schedule dates, set product's Manufacturing Lead Time
+ and Customer Lead Time and also set warehouse route's delay."""
+
+ # Update warehouse_1 with Outgoing Shippings pick + pack + ship
+ self.warehouse_1.write({'delivery_steps': 'pick_pack_ship'})
+
+ # Set delay on pull rule
+ for pull_rule in self.warehouse_1.delivery_route_id.rule_ids:
+ pull_rule.write({'delay': 2})
+
+ # Create sale order of product_1
+ order_form = Form(self.env['sale.order'])
+ order_form.partner_id = self.partner_1
+ order_form.warehouse_id = self.warehouse_1
+ with order_form.order_line.new() as line:
+ line.product_id = self.product_1
+ line.product_uom_qty = 6
+ order = order_form.save()
+ # Confirm sale order
+ order.action_confirm()
+
+ # Run scheduler
+ self.env['procurement.group'].run_scheduler()
+
+ # Check manufacturing order created or not
+ manufacturing_order = self.env['mrp.production'].search([('product_id', '=', self.product_1.id)])
+ self.assertTrue(manufacturing_order, 'Manufacturing order should be created.')
+
+ # Check the picking crated or not
+ self.assertTrue(order.picking_ids, "Pickings should be created.")
+
+ # Check schedule date of ship type picking
+ out = order.picking_ids.filtered(lambda r: r.picking_type_id == self.warehouse_1.out_type_id)
+ out_min_date = fields.Datetime.from_string(out.scheduled_date)
+ out_date = fields.Datetime.from_string(order.date_order) + timedelta(days=self.product_1.sale_delay) - timedelta(days=out.move_lines[0].rule_id.delay)
+ self.assertAlmostEqual(
+ out_min_date, out_date,
+ delta=timedelta(seconds=10),
+ msg='Schedule date of ship type picking should be equal to: order date + Customer Lead Time - pull rule delay.'
+ )
+
+ # Check schedule date of pack type picking
+ pack = order.picking_ids.filtered(lambda r: r.picking_type_id == self.warehouse_1.pack_type_id)
+ pack_min_date = fields.Datetime.from_string(pack.scheduled_date)
+ pack_date = out_date - timedelta(days=pack.move_lines[0].rule_id.delay)
+ self.assertAlmostEqual(
+ pack_min_date, pack_date,
+ delta=timedelta(seconds=10),
+ msg='Schedule date of pack type picking should be equal to: Schedule date of ship type picking - pull rule delay.'
+ )
+
+ # Check schedule date of pick type picking
+ pick = order.picking_ids.filtered(lambda r: r.picking_type_id == self.warehouse_1.pick_type_id)
+ pick_min_date = fields.Datetime.from_string(pick.scheduled_date)
+ self.assertAlmostEqual(
+ pick_min_date, pack_date,
+ delta=timedelta(seconds=10),
+ msg='Schedule date of pick type picking should be equal to: Schedule date of pack type picking.'
+ )
+
+ # Check schedule date and deadline date of manufacturing order
+ mo_scheduled = out_date - timedelta(days=self.product_1.produce_delay) - timedelta(days=self.warehouse_1.delivery_route_id.rule_ids[0].delay) - timedelta(days=self.env.ref('base.main_company').manufacturing_lead)
+ self.assertAlmostEqual(
+ fields.Datetime.from_string(manufacturing_order.date_planned_start), mo_scheduled,
+ delta=timedelta(seconds=1),
+ msg="Schedule date of manufacturing order should be equal to: Schedule date of picking - product's Manufacturing Lead Time- delay pull_rule."
+ )
+ self.assertAlmostEqual(
+ manufacturing_order.date_deadline, order.picking_ids[0].date_deadline,
+ delta=timedelta(seconds=1),
+ msg="Deadline date of manufacturing order should be equal to the deadline of sale picking"
+ )
diff --git a/addons/sale_mrp/tests/test_sale_mrp_procurement.py b/addons/sale_mrp/tests/test_sale_mrp_procurement.py
new file mode 100644
index 00000000..4de6c6d0
--- /dev/null
+++ b/addons/sale_mrp/tests/test_sale_mrp_procurement.py
@@ -0,0 +1,172 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+import time
+
+from odoo.tests.common import TransactionCase, Form
+from odoo.tools import mute_logger
+
+
+class TestSaleMrpProcurement(TransactionCase):
+
+ def test_sale_mrp(self):
+ self.env.ref('stock.route_warehouse0_mto').active = True
+ warehouse0 = self.env.ref('stock.warehouse0')
+ # In order to test the sale_mrp module in OpenERP, I start by creating a new product 'Slider Mobile'
+ # I define product category Mobile Products Sellable.
+
+ with mute_logger('odoo.tests.common.onchange'):
+ # Suppress warning on "Changing your cost method" when creating a
+ # product category
+ pc = Form(self.env['product.category'])
+ pc.name = 'Mobile Products Sellable'
+ product_category_allproductssellable0 = pc.save()
+
+ uom_unit = self.env.ref('uom.product_uom_unit')
+
+ self.assertIn("seller_ids", self.env['product.template'].fields_get())
+
+ # I define product for Slider Mobile.
+ product = Form(self.env['product.template'])
+
+ product.categ_id = product_category_allproductssellable0
+ product.list_price = 200.0
+ product.name = 'Slider Mobile'
+ product.type = 'product'
+ product.uom_id = uom_unit
+ product.uom_po_id = uom_unit
+ product.route_ids.clear()
+ product.route_ids.add(warehouse0.manufacture_pull_id.route_id)
+ product.route_ids.add(warehouse0.mto_pull_id.route_id)
+ product_template_slidermobile0 = product.save()
+
+ product_template_slidermobile0.standard_price = 189
+
+ product_component = Form(self.env['product.product'])
+ product_component.name = 'Battery'
+ product_product_bettery = product_component.save()
+
+ with Form(self.env['mrp.bom']) as bom:
+ bom.product_tmpl_id = product_template_slidermobile0
+ with bom.bom_line_ids.new() as line:
+ line.product_id = product_product_bettery
+ line.product_qty = 4
+
+ # I create a sale order for product Slider mobile
+ so_form = Form(self.env['sale.order'])
+ so_form.partner_id = self.env['res.partner'].create({'name': 'Another Test Partner'})
+ with so_form.order_line.new() as line:
+ line.product_id = product_template_slidermobile0.product_variant_ids
+ line.price_unit = 200
+ line.product_uom_qty = 500.0
+ line.customer_lead = 7.0
+ sale_order_so0 = so_form.save()
+
+ # I confirm the sale order
+ sale_order_so0.action_confirm()
+
+ # I verify that a manufacturing order has been generated, and that its name and reference are correct
+ mo = self.env['mrp.production'].search([('origin', 'like', sale_order_so0.name)], limit=1)
+ self.assertTrue(mo, 'Manufacturing order has not been generated')
+
+ def test_sale_mrp_pickings(self):
+ """ Test sale of multiple mrp products in MTO
+ to avoid generating multiple deliveries
+ to the customer location
+ """
+ self.env.ref('stock.route_warehouse0_mto').active = True
+ # Create warehouse
+ self.customer_location = self.env['ir.model.data'].xmlid_to_res_id('stock.stock_location_customers')
+ self.warehouse = self.env['stock.warehouse'].create({
+ 'name': 'Test Warehouse',
+ 'code': 'TWH'
+ })
+
+ self.uom_unit = self.env.ref('uom.product_uom_unit')
+
+ # Create raw product for manufactured product
+ product_form = Form(self.env['product.product'])
+ product_form.name = 'Raw Stick'
+ product_form.type = 'product'
+ product_form.uom_id = self.uom_unit
+ product_form.uom_po_id = self.uom_unit
+ self.raw_product = product_form.save()
+
+ # Create manufactured product
+ product_form = Form(self.env['product.product'])
+ product_form.name = 'Stick'
+ product_form.uom_id = self.uom_unit
+ product_form.uom_po_id = self.uom_unit
+ product_form.type = 'product'
+ product_form.route_ids.clear()
+ product_form.route_ids.add(self.warehouse.manufacture_pull_id.route_id)
+ product_form.route_ids.add(self.warehouse.mto_pull_id.route_id)
+ self.finished_product = product_form.save()
+
+ # Create manifactured product which uses another manifactured
+ product_form = Form(self.env['product.product'])
+ product_form.name = 'Arrow'
+ product_form.type = 'product'
+ product_form.route_ids.clear()
+ product_form.route_ids.add(self.warehouse.manufacture_pull_id.route_id)
+ product_form.route_ids.add(self.warehouse.mto_pull_id.route_id)
+ self.complex_product = product_form.save()
+
+ ## Create raw product for manufactured product
+ product_form = Form(self.env['product.product'])
+ product_form.name = 'Raw Iron'
+ product_form.type = 'product'
+ product_form.uom_id = self.uom_unit
+ product_form.uom_po_id = self.uom_unit
+ self.raw_product_2 = product_form.save()
+
+ # Create bom for manufactured product
+ bom_product_form = Form(self.env['mrp.bom'])
+ bom_product_form.product_id = self.finished_product
+ bom_product_form.product_tmpl_id = self.finished_product.product_tmpl_id
+ bom_product_form.product_qty = 1.0
+ bom_product_form.type = 'normal'
+ with bom_product_form.bom_line_ids.new() as bom_line:
+ bom_line.product_id = self.raw_product
+ bom_line.product_qty = 2.0
+
+ self.bom = bom_product_form.save()
+
+ ## Create bom for manufactured product
+ bom_product_form = Form(self.env['mrp.bom'])
+ bom_product_form.product_id = self.complex_product
+ bom_product_form.product_tmpl_id = self.complex_product.product_tmpl_id
+ with bom_product_form.bom_line_ids.new() as line:
+ line.product_id = self.finished_product
+ line.product_qty = 1.0
+ with bom_product_form.bom_line_ids.new() as line:
+ line.product_id = self.raw_product_2
+ line.product_qty = 1.0
+
+ self.complex_bom = bom_product_form.save()
+
+ with Form(self.warehouse) as warehouse:
+ warehouse.manufacture_steps = 'pbm_sam'
+
+ so_form = Form(self.env['sale.order'])
+ so_form.partner_id = self.env['res.partner'].create({'name': 'Another Test Partner'})
+ with so_form.order_line.new() as line:
+ line.product_id = self.complex_product
+ line.price_unit = 1
+ line.product_uom_qty = 1
+ with so_form.order_line.new() as line:
+ line.product_id = self.finished_product
+ line.price_unit = 1
+ line.product_uom_qty = 1
+ sale_order_so0 = so_form.save()
+
+ sale_order_so0.action_confirm()
+
+ pickings = sale_order_so0.picking_ids
+
+ # One delivery...
+ self.assertEqual(len(pickings), 1)
+
+ # ...with two products
+ move_lines = pickings[0].move_lines
+ self.assertEqual(len(move_lines), 2)
diff --git a/addons/sale_mrp/views/mrp_production_views.xml b/addons/sale_mrp/views/mrp_production_views.xml
new file mode 100644
index 00000000..114b532f
--- /dev/null
+++ b/addons/sale_mrp/views/mrp_production_views.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo><data>
+ <record id="mrp_production_form_view_sale" model="ir.ui.view">
+ <field name="name">mrp.production.inherited.form.sale</field>
+ <field name="model">mrp.production</field>
+ <field name="priority">64</field>
+ <field name="inherit_id" ref="mrp.mrp_production_form_view"/>
+ <field name="arch" type="xml">
+ <xpath expr="//button[@name='action_view_mrp_production_childs']" position="before">
+ <button class="oe_stat_button" name="action_view_sale_orders" type="object" icon="fa-dollar" attrs="{'invisible': [('sale_order_count', '=', 0)]}" groups="sales_team.group_sale_salesman">
+ <div class="o_field_widget o_stat_info">
+ <span class="o_stat_value"><field name="sale_order_count"/></span>
+ <span class="o_stat_text">Sale</span>
+ </div>
+ </button>
+ </xpath>
+ </field>
+ </record>
+</data></odoo> \ No newline at end of file
diff --git a/addons/sale_mrp/views/sale_order_views.xml b/addons/sale_mrp/views/sale_order_views.xml
new file mode 100644
index 00000000..8777431f
--- /dev/null
+++ b/addons/sale_mrp/views/sale_order_views.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo><data>
+ <record id="sale_order_form_mrp" model="ir.ui.view">
+ <field name="name">sale.order.inherited.form.mrp</field>
+ <field name="model">sale.order</field>
+ <field name="inherit_id" ref="sale.view_order_form"/>
+ <field name="arch" type="xml">
+ <xpath expr="//div[@name='button_box']" position="inside">
+ <button class="oe_stat_button" name="action_view_mrp_production" type="object" icon="fa-wrench" attrs="{'invisible': [('mrp_production_count', '=', 0)]}" groups="mrp.group_mrp_user">
+ <div class="o_field_widget o_stat_info">
+ <span class="o_stat_value"><field name="mrp_production_count"/></span>
+ <span class="o_stat_text">Manufacturing</span>
+ </div>
+ </button>
+ </xpath>
+ </field>
+ </record>
+</data></odoo> \ No newline at end of file