diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000..2609681
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import models
+from . import report
diff --git a/__manifest__.py b/__manifest__.py
new file mode 100644
index 0000000..07bcedb
--- /dev/null
+++ b/__manifest__.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+
+{
+ 'name': 'Purchase and MRP Management',
+ 'version': '1.0',
+ 'category': 'Inventory/Purchase',
+ 'description': """
+This module provides facility to the user to install mrp and purchase modules at a time.
+========================================================================================
+
+It is basically used when we want to keep track of production orders generated
+from purchase order.
+ """,
+ 'data': [
+ 'views/mrp_bom_views.xml',
+ 'views/purchase_order_views.xml',
+ 'views/mrp_production_views.xml',
+ 'views/stock_orderpoint_views.xml',
+ 'security/ir.model.access.csv',
+ ],
+ 'demo': [
+ 'data/purchase_mrp_demo.xml',
+ ],
+ 'depends': ['mrp', 'purchase_stock'],
+ 'installable': True,
+ 'auto_install': True,
+ 'assets': {
+ 'web.assets_backend': [
+ 'mrp/static/src/**/*.js',
+ ],
+ },
+ 'license': 'LGPL-3',
+}
diff --git a/data/purchase_mrp_demo.xml b/data/purchase_mrp_demo.xml
new file mode 100644
index 0000000..70c9626
--- /dev/null
+++ b/data/purchase_mrp_demo.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/i18n/ar.po b/i18n/ar.po
new file mode 100644
index 0000000..2653d79
--- /dev/null
+++ b/i18n/ar.po
@@ -0,0 +1,138 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Arabic (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "التصنيع "
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "المشتريات "
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "تقرير النظرة العامة لقائمة المواد "
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "قائمة المواد"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "بند قائمة المواد"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "يجب أن تكون حصة تكلفة المكونات موجبة أو مساوية للصفر. "
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "حصة التكلفة (%) "
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "عدد مصادر أوامر التصنيع "
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "عدد أوامر الشراء المنشأة "
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "عنصر اليومية"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "تقرير النظرة العامة على أمر التصنيع "
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "مصدر التصنيع لـ %s "
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"لم يتمكن أودو من إنشاء القيود الأنجلو ساكسونية. التقييم الإجمالي لـ %s هو "
+"صفر. "
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "أمر الإنتاج"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "أمر شراء"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "بند أمر الشراء"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "أمر شراء تم إنشاؤه من %s "
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "حركة المخزون"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"نسبة تكلفة إعادة تقسيم المكوِّن عند شراء عدة. يجب أن يكون إجمالي تكلفة كافة "
+"المكونات مساوياً لـ 100. "
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "لا يمكن أن يتخطى إجمالي حصة التكلفة للمكونات لقائمة المواد 100. "
diff --git a/i18n/az.po b/i18n/az.po
new file mode 100644
index 0000000..eddbe3b
--- /dev/null
+++ b/i18n/az.po
@@ -0,0 +1,131 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Jumshud Sultanov , 2022
+# erpgo translator , 2022
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.5alpha1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2022-09-22 05:54+0000\n"
+"Last-Translator: erpgo translator , 2022\n"
+"Language-Team: Azerbaijani (https://app.transifex.com/odoo/teams/41243/az/)\n"
+"Language: az\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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Məhsul Resepti"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Məhsul Resepti siyahısı"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Jurnal Sətirləri"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "İstehsal Sifarişi"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Stokun Hərəkəti"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/bg.po b/i18n/bg.po
new file mode 100644
index 0000000..6a0fd73
--- /dev/null
+++ b/i18n/bg.po
@@ -0,0 +1,138 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Igor Sheludko , 2023
+# Martin Trigaux, 2023
+# KeyVillage, 2023
+# Весел Карастоянов , 2023
+# Maria Boyadjieva , 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Maria Boyadjieva , 2023\n"
+"Language-Team: Bulgarian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Доставки"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Фактура за покупка на материали"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Ред на Списък с материали"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Счетоводна Операция"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Производствена поръчка"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Поръчка"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Ред на поръчка за покупка"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Движение в склада"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/bs.po b/i18n/bs.po
new file mode 100644
index 0000000..91f0281
--- /dev/null
+++ b/i18n/bs.po
@@ -0,0 +1,129 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Martin Trigaux, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13: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"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Stavka nabavne narudžbe"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Kretanje zalihe"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/ca.po b/i18n/ca.po
new file mode 100644
index 0000000..7b871b4
--- /dev/null
+++ b/i18n/ca.po
@@ -0,0 +1,143 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# CristianCruzParra, 2023
+# Ivan Espinola, 2023
+# Josep Anton Belchi, 2023
+# marcescu, 2023
+# Quim - eccit , 2023
+# Manel Fernandez Ramirez , 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Manel Fernandez Ramirez , 2023\n"
+"Language-Team: Catalan (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Fabricat"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Comprat"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Informe de visió general del LDM"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Llista de material"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Línia de Llista de Materials"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "El cost compartit dels components ha de ser positiu o igual a zero."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Cost compartit (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Recompte d'hores extres"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Comptador del PO generat"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Apunt comptable"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Ordre de producció %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo no és capaç de generar les entrades de saxons anglòfons. La valoració "
+"total%s és zero"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordre de producció"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Comanda de compra"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Línia de la comanda de compra"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Ordre de compra generat a partir de %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Moviment d'estoc"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"El percentatge del cost de repartició del component quan es compra un kit.El"
+" cost total de tots els components ha de ser igual a 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "La quota de cost total per a un component de BoM ha de ser 100"
diff --git a/i18n/cs.po b/i18n/cs.po
new file mode 100644
index 0000000..0562fd8
--- /dev/null
+++ b/i18n/cs.po
@@ -0,0 +1,137 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Ivana Bartonkova, 2023
+# Jakub Smolka, 2023
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Czech (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Výroba"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Nákup"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Přehled kusovníku"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Kusovník"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Položka kusovníku"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Počet MO zdrojů"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Počet vygenerovaných PO"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Účetní položka"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Výkaz výrobních příkazů"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Výrobní zdroj %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo není schopen generovat anglosaské záznamy. Celkové ocenění %s je nula."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Výrobní příkaz"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Nákupní objednávka"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Položka nákupní objednávky"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Nákupní objednávka vygenerovaná z %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Pohyb zásob"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/da.po b/i18n/da.po
new file mode 100644
index 0000000..2b7a1d8
--- /dev/null
+++ b/i18n/da.po
@@ -0,0 +1,136 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Martin Trigaux, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Martin Trigaux, 2023\n"
+"Language-Team: Danish (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Produktion"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Indkøb"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Stykliste"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Stykliste linje"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Antal Produktionsordre Kilde"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Antal genereret Købsordre"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Journalpost"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Produktionskilde for %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo er ikke i stand til at generere anglesaksiske posteringer. Den totale "
+"evaluering af %s er nul."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Produktionsordre"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Indkøbsordre"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Indkøbsordrelinie"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Købsordre genereret fra %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Lagerflytning"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/de.po b/i18n/de.po
new file mode 100644
index 0000000..651a968
--- /dev/null
+++ b/i18n/de.po
@@ -0,0 +1,140 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: German (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Fertigung"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Einkäufe"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Stücklistenübersichtsbericht"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Stückliste"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Stücklistenposition"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Der Kostenanteil der Komponenten muss positiv oder gleich Null sein."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Kostenanteil (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Anzahl der FA-Referenzen"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Anzahl generierter Bestellungen"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Buchungszeile"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Übersichtsbericht der Fertigungsaufträge"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Fertigungsquelle von %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo ist nicht in der Lage, die angelsächsischen Einträge zu generieren. Die"
+" Gesamtbewertung von %s ist Null."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Fertigungsauftrag"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Bestellung"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Bestellzeile"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Bestellung generiert aus %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Lagerbuchung"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Der prozentuale Anteil der Kosten für die Komponenten beim Kauf eines "
+"Bausatzes, wobei die Gesamtkosten für alle Komponenten gleich 100 sein "
+"müssen."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"Der Gesamtkostenanteil für die Komponenten einer Stückliste muss 100 sein."
diff --git a/i18n/el.po b/i18n/el.po
new file mode 100644
index 0000000..3360ef1
--- /dev/null
+++ b/i18n/el.po
@@ -0,0 +1,129 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Martin Trigaux, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2018-09-18 09:49+0000\n"
+"Last-Translator: Martin Trigaux, 2018\n"
+"Language-Team: Greek (https://www.transifex.com/odoo/teams/41243/el/)\n"
+"Language: el\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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Γραμμή Παραγγελίας Αγοράς"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Κίνηση Αποθέματος"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/es.po b/i18n/es.po
new file mode 100644
index 0000000..1e19e08
--- /dev/null
+++ b/i18n/es.po
@@ -0,0 +1,143 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+# Larissa Manderfeld, 2024
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Larissa Manderfeld, 2024\n"
+"Language-Team: Spanish (https://app.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=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Fabricación"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Compras"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Informe de resumen de LdM"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Lista de materiales"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Línea de Lista de Materiales"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+"El coste compartido de los componentes tiene que ser positivo o igual a "
+"cero."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Reparto de costes (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Cuenta de MO fuente"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Cuenta de órdenes de compra generadas"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Apunte contable"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Informe del resumen de la orden de fabricación"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Fuente de fabricación de %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo no puede generar los asientos anglosajones. La valuación total de %s es"
+" cero."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Orden de producción"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Orden de compra"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Línea de orden de compra"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Pedido de compra generada a partir de %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento de existencias"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"El porcentaje del coste de repartición del componente cuando se compra un "
+"kit. El total del coste de todos los componentes debe ser igual a 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"El total del reparto de costes para un componente de la lista de materiales "
+"debe ser 100"
diff --git a/i18n/es_419.po b/i18n/es_419.po
new file mode 100644
index 0000000..48379ba
--- /dev/null
+++ b/i18n/es_419.po
@@ -0,0 +1,143 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+# Fernanda Alvarez, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Fernanda Alvarez, 2023\n"
+"Language-Team: Spanish (Latin America) (https://app.transifex.com/odoo/teams/41243/es_419/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: es_419\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Fabricación"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Compras"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Reporte de resumen de la lista de materiales"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Lista de materiales"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Línea de lista de materiales"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+"El costo compartido de los componentes tiene que ser positivo o igual a "
+"cero."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Reparto de costos (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Número de órdenes de fabricación fuente"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Número de órdenes de compra generadas"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Apunte contable"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Reporte del resumen de la orden de fabricación"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Fuente de fabricación de %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo no puede generar los asientos anglosajones. La valuación total de %s es"
+" cero."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Orden de producción"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Orden de compra"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Línea de la orden de compra"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Orden de compra generada a partir de %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento de existencias"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"El porcentaje del costo de repartición del componente cuando se compra un "
+"kit. El total del costo de todos los componentes debe ser igual a 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"El total del reparto de costos para un componente de la lista de materiales "
+"debe ser 100"
diff --git a/i18n/et.po b/i18n/et.po
new file mode 100644
index 0000000..7db99e9
--- /dev/null
+++ b/i18n/et.po
@@ -0,0 +1,143 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Patrick-Jordan Kiudorv, 2023
+# Martin Trigaux, 2023
+# Eneli Õigus , 2023
+# Martin Aavastik , 2023
+# Piia Paurson , 2023
+# Triine Aavik , 2023
+# JanaAvalah, 2023
+# Mihkel avalah, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Mihkel avalah, 2023\n"
+"Language-Team: Estonian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Tootmine"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Ostud"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Retseptide ülevaatlik aruanne"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Retsept"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Retsepti rida"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Komponentide kuluosa peab olema positiivne või võrdne nulliga."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Kulude osakaal (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Tootmistellimuse algallikate arv"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Loodud ostutellimuste arv"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Andmiku kanderida"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Tootmistellimuse koondraport "
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Tootmise allikas %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr "Odoo ei saa anglosaksi kirjeid genereerida. Kogu väärtus %s on null."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Tootmiskäsk"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Ostutellimus"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Ostutellimuse rida"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Ostutellimus on genereeritud %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Laoliikumine"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Komponentide ümberjaotamise maksumuse protsent komplekti ostmisel. Kõikide "
+"komponentide maksumus kokku peab olema võrdne 100-ga."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "Retseptide komponendi kogukulu osa peab olema 100"
diff --git a/i18n/fa.po b/i18n/fa.po
new file mode 100644
index 0000000..b987ad7
--- /dev/null
+++ b/i18n/fa.po
@@ -0,0 +1,137 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Yousef Shadmanesh , 2023
+# Martin Trigaux, 2023
+# Hanna Kheradroosta, 2023
+# Hamed Mohammadi , 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Hamed Mohammadi , 2023\n"
+"Language-Team: Persian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "تولید"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "خریدها"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "صورت مواد اولیه"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "سطر صورت مواد اولیه"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "سهم هزینه (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "تعداد منبع MO"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "تعداد PO ایجاد شده"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "آیتم دفترروزنامه"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "منبع تولید %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr "Odoo قادر به تولید ورودی های آنگلوساکسون نیست. ارزش کل %s صفر است."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "سفارش تولید"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "سفارش خرید"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "سطر سفارش خرید"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "سفارش خرید از %s ایجاد شد"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "انتقال موجودی"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/fi.po b/i18n/fi.po
new file mode 100644
index 0000000..515dc26
--- /dev/null
+++ b/i18n/fi.po
@@ -0,0 +1,144 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Kari Lindgren , 2023
+# Jarmo Kortetjärvi , 2023
+# Martin Trigaux, 2023
+# Jussi Lehto , 2023
+# Tuomo Aura , 2023
+# Ossi Mantylahti , 2024
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Ossi Mantylahti , 2024\n"
+"Language-Team: Finnish (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Valmistus"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Ostot"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Osaluettelon yleiskatsausraportti"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Osaluettelo"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Osaluettelon rivi"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Komponenttien kustannusosuuden on oltava positiivinen tai nolla."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Kustannusosuus (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Valmistustilauksien lähteen määrä"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Luotujen ostotilausten määrä"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Päiväkirjatapahtuma"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Tuotantotilauksen yleiskatsausraportti"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Valmistuksen lähde %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo ei pysty luomaan anglosaksisia merkintöjä. Kokonaisarvosana %s on "
+"nolla."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Valmistustilaus"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Ostotilaus"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Ostotilausrivi"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Ostotilaus muodostettu lähteestä %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Varastosiirto"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Prosenttiosuus komponenttien jakokustannuksista, kun ostat paketin. Kaikkien"
+" komponenttien kokonaiskustannusten on oltava yhtä suuret kuin 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"Osaluettelon komponenttien kokonaiskustannusten on oltava 100 prosenttia"
diff --git a/i18n/fr.po b/i18n/fr.po
new file mode 100644
index 0000000..bc41c2c
--- /dev/null
+++ b/i18n/fr.po
@@ -0,0 +1,140 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: French (https://app.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=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Fabrication"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Achats"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Rapport de vue d'ensemble de la nomenclature"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Nomenclature"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Ligne de nomenclature"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Le partage des coûts des composants doit être positif ou égal à zéro."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Partage des coûts (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Nombre d'OF d'origine"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Nombre de bons de commande générés"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Écriture comptable"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Rapport de vue d'ensemble des ordres de fabrication"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Source de fabrication de %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo n'est pas capable de générer les écritures anglo-saxonnes. La "
+"valorisation totale de %s est zéro"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordre de production"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Bon de commande fournisseur"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Ligne de bon de commande"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Bon de commande généré de %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Mouvement de stock"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Le pourcentage du coût de répartition du composant en achetant un kit. Le "
+"total de tous les coûts des composants doit être égal à 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"Le coût de partage total pour les composants d'une nomenclature doit être "
+"100."
diff --git a/i18n/gu.po b/i18n/gu.po
new file mode 100644
index 0000000..c603e80
--- /dev/null
+++ b/i18n/gu.po
@@ -0,0 +1,126 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2018-08-24 09:05+0000\n"
+"Language-Team: Gujarati (https://www.transifex.com/odoo/teams/41243/gu/)\n"
+"Language: gu\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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Journal Item"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/he.po b/i18n/he.po
new file mode 100644
index 0000000..7d3ad15
--- /dev/null
+++ b/i18n/he.po
@@ -0,0 +1,140 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# ZVI BLONDER , 2023
+# NoaFarkash, 2023
+# Yihya Hugirat , 2023
+# דודי מלכה , 2023
+# Ha Ketem , 2023
+# Lilach Gilliam , 2023
+# yael terner, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: yael terner, 2023\n"
+"Language-Team: Hebrew (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "ייצור"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "רכישות"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "עץ מוצר"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "שורת עץ מוצר "
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "נתח עלות (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "מספר הזמנות הרכש שנוצרו"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "תנועת יומן"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "מקור ייצור של %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "הוראת ייצור"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "הזמנת רכש"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "שורת הזמנת רכש"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "הזמנת רכש שנוצרה מ%s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "תנועת מלאי"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/hr.po b/i18n/hr.po
new file mode 100644
index 0000000..ad32d0f
--- /dev/null
+++ b/i18n/hr.po
@@ -0,0 +1,132 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Martin Trigaux, 2022
+# Bole , 2022
+# Tina Milas, 2022
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.5alpha1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2022-09-22 05:54+0000\n"
+"Last-Translator: Tina Milas, 2022\n"
+"Language-Team: Croatian (https://app.transifex.com/odoo/teams/41243/hr/)\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Proizvodnja"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Nabave"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Sastavnica"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Stavka sastavnice"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Broj izvornih PN"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Broj generiranih naloga za nabavu"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Stavka dnevnika"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Proizvodni izvor za %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Proizvodni nalog"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Nalog za nabavu"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Stavka naloga nabave"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Nalog za nabavu generiran iz %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Skladišni prijenos"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/hu.po b/i18n/hu.po
new file mode 100644
index 0000000..2a965a3
--- /dev/null
+++ b/i18n/hu.po
@@ -0,0 +1,136 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# gezza , 2023
+# Tamás Németh , 2023
+# krnkris, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: krnkris, 2023\n"
+"Language-Team: Hungarian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Termelés"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Beszerzések"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Anyagjegyzék"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Anyagjegyzék tétel"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Napló tétel"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Termelési rendelés"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Beszerzési megrendelés"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Beszerzési rendelés tétel"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Beszerzési rendelés generálva ebből: %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Készletmozgás"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/id.po b/i18n/id.po
new file mode 100644
index 0000000..a54bf56
--- /dev/null
+++ b/i18n/id.po
@@ -0,0 +1,137 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Indonesian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Manufaktur"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Purchase"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Laporan Gambaran Umum BOM"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Daftar Kebutuhan Material (BOM)"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Baris BOM"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Cost share komponen harus positif atau sama dengan nol."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Cost Share (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Jumlah Sumber MO"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Jumlah SPB yang dibuat"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Item Jurnal"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Laporan Gambaran Umum MO"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Sumber Manufaktur untuk %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo tidak dapat membuat entri anglo saxon. Valuasi total %s adalah nol."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Order Produksi"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Order Pembelian"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Baris Order Pembelian"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Purchase Order dibuat dari %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Pergerakan Stok"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Persentase biaya repartition komponen saat membeli kit. Total ongkos "
+"komponen harus sama dengan 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "Total cost share untuk komponen BOM harus 100"
diff --git a/i18n/is.po b/i18n/is.po
new file mode 100644
index 0000000..7753d4f
--- /dev/null
+++ b/i18n/is.po
@@ -0,0 +1,126 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.5alpha1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2022-09-22 05:54+0000\n"
+"Language-Team: Icelandic (https://www.transifex.com/odoo/teams/41243/is/)\n"
+"Language: is\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);\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Stock Move"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/it.po b/i18n/it.po
new file mode 100644
index 0000000..cecb32c
--- /dev/null
+++ b/i18n/it.po
@@ -0,0 +1,141 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Italian (https://app.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=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Produzione"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Acquisti"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Resoconto panoramica DB"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Distinta base"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Riga distinta base"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+"La quota totale dei costi dei componenti deve essere positiva o uguale a "
+"zero."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Quota dei costi (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Numero di OdP alla fonte"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Numero di OdA generati"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Movimento contabile"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Resoconto panoramico ordini di produzione"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Fonte produzione di %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo non è in grado di generare le registrazioni anglosassoni. La "
+"valutazione totale di %s è zero."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordine di produzione"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Ordine di acquisto"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Riga ordine di acquisto"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Ordine di acquisto generato da %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimento di magazzino"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Percentuale del costo di ripartizione dei componenti quando si acquista un "
+"kit. Il totale del costo di tutti i componenti deve essere pari a 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"La quota totale del costo per il componente di una DiBa deve essere 100"
diff --git a/i18n/ja.po b/i18n/ja.po
new file mode 100644
index 0000000..3fc02e6
--- /dev/null
+++ b/i18n/ja.po
@@ -0,0 +1,134 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Japanese (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "製造"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "購入"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "部品表概要レポート"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "部品表"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "部品表明細"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "構成品原価シェアは正の値または0と等しい必要があります。"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "原価シェア (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "製造オーダソース数"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "生成された購買オーダ数"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "仕訳項目"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "製造オーダ概要レポート"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr " %sの製造ソース"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr "ODooはアングロサクソン人のエントリを生成できません。 %s の総評価は0です。"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "製造オーダ"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "購買オーダ"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "購買オーダ明細"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr " %sから生成された購買オーダ"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "在庫移動"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr "キットを購買する際の構成品の再分割原価の割合。全構成品の原価の合計が100に等しい必要があります。"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "部品表の構成品の原価シェア合計は100である必要があります。"
diff --git a/i18n/km.po b/i18n/km.po
new file mode 100644
index 0000000..77c4c90
--- /dev/null
+++ b/i18n/km.po
@@ -0,0 +1,126 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~11.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13: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"
+"Language: km\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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/ko.po b/i18n/ko.po
new file mode 100644
index 0000000..de6d4dc
--- /dev/null
+++ b/i18n/ko.po
@@ -0,0 +1,134 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Korean (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "제조"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "구매완료"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "자재명세서 전체 보고서"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "자재명세서"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "자재명세서 내역"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "구성 요소의 배분 원가는 양수 또는 0이어야 합니다."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "원가 배분 (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "원본 제조요청서 수"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "발행된 구매발주서 수"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "전표 항목"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "제조요청서 전체 보고서"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "%s의 제조 원본"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr "Odoo는 앵글로 색슨 항목을 생성할 수 없습니다. %s의 총 평가는 0입니다."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "생산 주문"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "구매 주문"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "발주서 내역"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "%s에서 구매발주서 생성"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "재고 이동"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr "키트 구매시 부속품을 다시 배분하는 비용의 백분율입니다. 모든 부속품 원가의 합계는 100이어야 합니다."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "자재명세서 상의 부속품의 배분 원가 총비율은 100이어야 합니다."
diff --git a/i18n/lb.po b/i18n/lb.po
new file mode 100644
index 0000000..6d79be0
--- /dev/null
+++ b/i18n/lb.po
@@ -0,0 +1,126 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server saas~12.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2019-08-26 09:13+0000\n"
+"Language-Team: Luxembourgish (https://www.transifex.com/odoo/teams/41243/lb/)\n"
+"Language: lb\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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/lt.po b/i18n/lt.po
new file mode 100644
index 0000000..705164b
--- /dev/null
+++ b/i18n/lt.po
@@ -0,0 +1,137 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Jonas Zinkevicius , 2023
+# Martin Trigaux, 2023
+# Linas Versada , 2023
+# UAB "Draugiški sprendimai" , 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: UAB \"Draugiški sprendimai\" , 2023\n"
+"Language-Team: Lithuanian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Gamyba"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Pirkimai"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Komplektavimo specifikacija"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Komplektavimo specifikacijos eilutė"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Žurnalo įrašas"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Gamybos užsakymas"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Pirkimo užsakymas"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Pirkimo užsakymo eilutė "
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Atsargų perkėlimas"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/lv.po b/i18n/lv.po
new file mode 100644
index 0000000..7392c1b
--- /dev/null
+++ b/i18n/lv.po
@@ -0,0 +1,138 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Konstantins Zabogonskis , 2023
+# Arnis Putniņš , 2023
+# Martin Trigaux, 2023
+# Will Sensors, 2024
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Will Sensors, 2024\n"
+"Language-Team: Latvian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Iepirkumi"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Recepte"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Kontējums"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo nespēj ģenerēt anglosakšu ierakstus. Kopējais %s novērtējums ir nulle."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ražošanas orderis"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Pirkuma Pasūtījums"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Pasūtījuma rinda"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "No %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Krājumu kustība"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/mn.po b/i18n/mn.po
new file mode 100644
index 0000000..a95bc27
--- /dev/null
+++ b/i18n/mn.po
@@ -0,0 +1,133 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Martin Trigaux, 2022
+# Minj P , 2022
+# Batmunkh Ganbat , 2022
+# Baskhuu Lodoikhuu , 2022
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.5alpha1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2022-09-22 05:54+0000\n"
+"Last-Translator: Baskhuu Lodoikhuu , 2022\n"
+"Language-Team: Mongolian (https://app.transifex.com/odoo/teams/41243/mn/)\n"
+"Language: mn\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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Худалдан авалт"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Орц"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Орцын мөр"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Журналын бичилт"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Үйлдвэрлэлийн захиалга"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Худалдан авалтын захиалга"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Худалдан авалтын захиалгын мөр"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Барааны хөдөлгөөн"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/nb.po b/i18n/nb.po
new file mode 100644
index 0000000..843ab74
--- /dev/null
+++ b/i18n/nb.po
@@ -0,0 +1,132 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Lars Aam , 2022
+# Marius Stedjan , 2022
+# Martin Trigaux, 2022
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.5alpha1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2022-09-22 05:54+0000\n"
+"Last-Translator: Martin Trigaux, 2022\n"
+"Language-Team: Norwegian Bokmål (https://app.transifex.com/odoo/teams/41243/nb/)\n"
+"Language: nb\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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Stykkliste"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Material linje for stykkliste"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Kost fordeling (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Journalpost"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Produksjonsordre"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Innkjøpsordre"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Innkjøpsordrelinje"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Lagerbevegelse"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/nl.po b/i18n/nl.po
new file mode 100644
index 0000000..599e66c
--- /dev/null
+++ b/i18n/nl.po
@@ -0,0 +1,141 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Dutch (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Productie"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Inkopen"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Stuklijstoverzichtsrapport"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Stuklijst"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Stuklijstregel"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+"Het kostenaandeel van de onderdelen moet positief zijn of gelijk zijn aan "
+"nul."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Kostenaandeel (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Aantal bronproductieorders"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Aantal gegenereerde PO"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Boekingsregel"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Stuklijstoverzichtsrapport"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Productiebron van %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo kan de Angelsaksische boekingen niet genereren. De totale waardering "
+"van %s is nul."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Productieorder"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Inkooporder"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Inkooporderregel"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Inkooporder gegenereerd van %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Voorraadverplaatsing"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Het percentage van de herverdelingskosten van onderdelen bij aankoop van een"
+" kit. Het totaal van de kosten van alle onderdelen moet gelijk zijn aan 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"Het totale kostenaandeel voor een onderdeel van een stuklijst moet 100 zijn"
diff --git a/i18n/pl.po b/i18n/pl.po
new file mode 100644
index 0000000..5b365c6
--- /dev/null
+++ b/i18n/pl.po
@@ -0,0 +1,138 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Polish (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Produkcja"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Zakupy"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Raport z przeglądu BOM"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Zestawienie materiałowe"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Pozycja zestawienia materiałów"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Udział w kosztach komponentów musi być dodatni lub równy zeru."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Udział w kosztach"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Liczba źródeł MO"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Liczba wygenerowanych PO"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Pozycja zapisu"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Raport z przeglądu MO"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Źródło produkcji %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo nie jest w stanie wygenerować zapisów anglo-saksońskich. Całkowita "
+"wycena wartości %s wynosi zero."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Zamówienie produkcji"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Zamówienie zakupu"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Pozycja zamówienia zakupu"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Zamówienie wygenerowane z %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Przesunięcie"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Procentowy koszt repartycji komponentów przy zakupie zestawu. Suma kosztów "
+"wszystkich komponentów musi być równa 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "Całkowity udział w kosztach komponentu BoM musi wynosić 100"
diff --git a/i18n/pt.po b/i18n/pt.po
new file mode 100644
index 0000000..a592e80
--- /dev/null
+++ b/i18n/pt.po
@@ -0,0 +1,134 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Portuguese (https://app.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=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Compras"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Lista de Material"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Item do Diário"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordem de Produção"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Ordem de Compra"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Linha de Encomenda de Compra"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimento do Stock"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/pt_BR.po b/i18n/pt_BR.po
new file mode 100644
index 0000000..7d54e37
--- /dev/null
+++ b/i18n/pt_BR.po
@@ -0,0 +1,141 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+# Layna Nascimento, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Layna Nascimento, 2023\n"
+"Language-Team: Portuguese (Brazil) (https://app.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=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Fabricação"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Compras"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Relatório geral da LM"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Lista de materiais"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Linha da lista de materiais"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+"A divisão de custos dos componentes deve ser positiva ou igual a zero."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Divisão de custos (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Contagem de origens de ordens de produção"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Contagem de pedidos de compra gerados"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Item do diário"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Relatório geral de OP"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Origem de fabricação de %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"O Odoo não pode gerar as entradas anglo-saxônicas. A valoração total de %s é"
+" zero."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Ordem de produção"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Pedido de compra"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Linha do pedido de compra"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Pedido de compra gerado a partir de %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Movimentação de estoque"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"A porcentagem da divisão de custos de componente ao comprar um kit. O custo "
+"total de todos os componentes tem que ser igual a 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"O total da divisão de custos de componentes de uma LM deve ser igual a 100"
diff --git a/i18n/purchase_mrp.pot b/i18n/purchase_mrp.pot
new file mode 100644
index 0000000..55e7d73
--- /dev/null
+++ b/i18n/purchase_mrp.pot
@@ -0,0 +1,130 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 21:55+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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/ro.po b/i18n/ro.po
new file mode 100644
index 0000000..000e24b
--- /dev/null
+++ b/i18n/ro.po
@@ -0,0 +1,133 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Hongu Cosmin , 2022
+# Foldi Robert , 2022
+# Martin Trigaux, 2022
+# Dorin Hongu , 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.5alpha1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2022-09-22 05:54+0000\n"
+"Last-Translator: Dorin Hongu , 2023\n"
+"Language-Team: Romanian (https://app.transifex.com/odoo/teams/41243/ro/)\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "De fabricație"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Achiziții"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Raport general LDM"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Listă de materiale"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Linie Factură Materiale"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Partajare cost (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Element jurnal"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr "Odoo nu este capabil să genereze intrări anglo saxon. Evaluarea totală a%s este 0."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Comanda de Producție"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Comandă de achiziție"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Linie comandă de achiziție"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Comandă de achiziție generată din %s "
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Mișcare stoc"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/ru.po b/i18n/ru.po
new file mode 100644
index 0000000..33e8ccb
--- /dev/null
+++ b/i18n/ru.po
@@ -0,0 +1,138 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2024
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2024\n"
+"Language-Team: Russian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Производство"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Закупки"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Обзорный отчет по BOM"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Ведомость материалов"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Строка Спецификации"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Доля затрат на компоненты должна быть положительной или равной нулю."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Доля расходов (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Количество МО Источник"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Количество сгенерированных PO"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Наименование в журнале"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Обзорный отчет МО"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Производство Источник %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo не может генерировать англо-саксонские записи. Общая оценка %s равна "
+"нулю."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Заказ на производство"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Заказа на покупку"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Позиция заказа на покупку"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Заказ на поставку, сформированный из %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Движение запасов"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Процент стоимости перераспределения компонентов при покупке набора. Сумма "
+"стоимости всех компонентов должна быть равна 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "Общая доля затрат на компонент Банка Москвы должна составлять 100"
diff --git a/i18n/sk.po b/i18n/sk.po
new file mode 100644
index 0000000..e09a858
--- /dev/null
+++ b/i18n/sk.po
@@ -0,0 +1,134 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Slovak (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Nákup"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Kusovník materiálu"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Rozpiska materiálu"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Položka účtovnej knihy"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Výrobná objednávka"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Objednávka"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Riadok nákupnej objednávky"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Pohyb skladu"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/sl.po b/i18n/sl.po
new file mode 100644
index 0000000..b69da83
--- /dev/null
+++ b/i18n/sl.po
@@ -0,0 +1,134 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Martin Trigaux, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Martin Trigaux, 2023\n"
+"Language-Team: Slovenian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Kosovnica"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Postavka"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Proizvodni nalog"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Nabavni nalog"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Postavka nabavnega naloga"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Premik zaloge"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/sr.po b/i18n/sr.po
new file mode 100644
index 0000000..fa9465b
--- /dev/null
+++ b/i18n/sr.po
@@ -0,0 +1,141 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Martin Trigaux, 2023
+# Dragan Vukosavljevic , 2023
+# Milan Bojovic , 2023
+# コフスタジオ, 2024
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: コフスタジオ, 2024\n"
+"Language-Team: Serbian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Proizvodnja"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Nabavke"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "BOM Overview Report"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Racun Materijala"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Bill of Material Line"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Components cost share have to be positive or equals to zero."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Cost Share (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Count of MO Source"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Count of generated PO"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Stavka izveštaja"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Manufacturing Source of %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Nalog za proizvodnju"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Nalog za nabavku"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Linija naloga za nabavku"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Purchase Order generated from %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Premeštanje zaliha"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "The total cost share for a BoM's component have to be 100"
diff --git a/i18n/sr@latin.po b/i18n/sr@latin.po
new file mode 100644
index 0000000..5609da3
--- /dev/null
+++ b/i18n/sr@latin.po
@@ -0,0 +1,129 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Nemanja Dragovic , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.saas~18\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-05-16 13:49+0000\n"
+"PO-Revision-Date: 2017-09-20 09:53+0000\n"
+"Last-Translator: Nemanja Dragovic , 2017\n"
+"Language-Team: Serbian (Latin) (https://www.transifex.com/odoo/teams/41243/sr%40latin/)\n"
+"Language: sr@latin\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr ""
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid "Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero."
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Stavka narudžbenice"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr ""
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "The percentage of the component repartition cost when purchasing a kit.The total of all components' cost have to be equal to 100."
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
diff --git a/i18n/sv.po b/i18n/sv.po
new file mode 100644
index 0000000..8c4797a
--- /dev/null
+++ b/i18n/sv.po
@@ -0,0 +1,144 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Leif Persson , 2023
+# Simon S, 2023
+# Anders Wallenquist , 2023
+# Lasse L, 2023
+# Martin Trigaux, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Martin Trigaux, 2023\n"
+"Language-Team: Swedish (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Tillverkning"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Inköp"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Översiktsrapport för Materiallista"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Produktstruktur"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Materialförteckningsrad"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Komponenternas kostnadsandel måste vara positiv eller lika med noll."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Kostnadsandel (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Antal källor för tillverkningsorder"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Antal genererade inköpsordrar"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Transaktion"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Tillverkningskälla för %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo kan inte generera de anglo-saxiska posterna. Den totala värderingen av "
+"%s är noll."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Tillverkningsorder"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Inköpsorder"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Inköpsorderrad"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Inköpsorder genererad från %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Lagerflytt"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Andelen av komponentens omfördelningskostnad vid inköp av ett kit. Summan av"
+" alla komponenters kostnad måste vara lika med 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"Den totala kostnadsandelen för en komponent i en materiallista måste vara "
+"100"
diff --git a/i18n/th.po b/i18n/th.po
new file mode 100644
index 0000000..dc964e3
--- /dev/null
+++ b/i18n/th.po
@@ -0,0 +1,139 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Thai (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "การผลิต"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "การซื้อ"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "รายงานภาพรวมบิลวัสดุ (BOM)"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "บิลวัสดุ"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "รายการบิลวัสดุ"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "ส่วนแบ่งต้นทุนส่วนประกอบต้องมีค่าเป็นบวกหรือเท่ากับศูนย์"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "ส่วนแบ่งต้นทุน (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "จำนวนแหล่งที่มาของ MO"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "จำนวน PO ที่สร้าง"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "รายการสมุดรายวัน"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "รายงานภาพรวม MO"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "แหล่งที่มาการผลิตของ%s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo ไม่สามารถสร้างรายการ anglo saxon ได้ การประเมินมูลค่ารวมของ %s "
+"เป็นศูนย์"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "คำสั่งผลิต"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "คำสั่งซื้อ"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "รายการคำสั่งซื้อ"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "คำสั่งซื้อที่สร้างจาก%s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "ย้ายสต็อก"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"เปอร์เซ็นต์ของต้นทุนการแบ่งส่วนของส่วนประกอบ เมื่อซื้อชุดอุปกรณ์ "
+"ต้นทุนส่วนประกอบทั้งหมดจะต้องเท่ากับ 100"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr ""
+"ส่วนแบ่งต้นทุนทั้งหมดสำหรับส่วนประกอบของบิลวัสดุ (BoM) จะต้องเท่ากับ 100"
diff --git a/i18n/tr.po b/i18n/tr.po
new file mode 100644
index 0000000..92322f7
--- /dev/null
+++ b/i18n/tr.po
@@ -0,0 +1,143 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Özlem Atalay , 2023
+# İlknur Gözütok, 2023
+# Tugay Hatıl , 2023
+# Ertuğrul Güreş , 2023
+# Ediz Duman , 2023
+# Martin Trigaux, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Martin Trigaux, 2023\n"
+"Language-Team: Turkish (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Üretim"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Satınalma"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "BOM Genel Bakış Raporu"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Ürün Reçetesi"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Ürün Reçetesi Satırları"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Bileşen maliyet oranı pozitif veya sıfıra eşit olmalıdır."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Maliyet Oranı (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "MO Kaynağı Sayısı"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Üretilen PO sayısı"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Yevmiye Kalemi"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr ""
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "%s Üretim Kaynağı"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo, anglo sakson girişlerini oluşturamıyor.%s toplam değerlemesi "
+"sıfırdır. "
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Üretim Emri"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Satınalma Siparişi"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Satınalma Sipariş Satırı"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "%s'den oluşturulan Satın Alma Siparişi"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Stok Hareketi"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Bir kit satın alırken bileşen yeniden bölümleme maliyetinin yüzdesi. Tüm "
+"bileşenlerin maliyetinin toplamı 100'e eşit olmalıdır."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "Bir BoM'un bileşeni için toplam maliyet oranı 100 olmalıdır"
diff --git a/i18n/uk.po b/i18n/uk.po
new file mode 100644
index 0000000..58b387b
--- /dev/null
+++ b/i18n/uk.po
@@ -0,0 +1,139 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Alina Lisnenko , 2023
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Ukrainian (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Виробництво"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Купівлі"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Звіт огляду специфікації"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Специфікація"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Рядок специфікації"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Частка вартості компонентів має бути позитивною або дорівнювати нулю."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Розділена вартість (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Підрахунок джерел MO"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Підрахунок створених PO"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Елемент журналу"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Звіт огляду MO"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Джерело виробництва %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo не доступна для створення англо-саксонських записів. Загальне значення "
+"%s нуль."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Замовлення на виробництво"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Замовлення на купівлю"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Рядок замовлення на купівлю"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Замовлення на купівлю створене з %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Складське переміщення "
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Відсоток вартості перерозподілу компонентів при купівлі комплекту. Загальна "
+"вартість усіх компонентів повинна дорівнювати 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "Загальна частка витрат для компонента специфікації має становити 100"
diff --git a/i18n/vi.po b/i18n/vi.po
new file mode 100644
index 0000000..8346b85
--- /dev/null
+++ b/i18n/vi.po
@@ -0,0 +1,137 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Wil Odoo, 2023\n"
+"Language-Team: Vietnamese (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "Sản xuất"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "Mua hàng"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "Báo cáo tổng quan ĐMNL"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "Định mức nguyên liệu"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "Dòng định mức nguyên liệu"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "Tỷ lệ chi phí linh kiện phải là số dương hoặc bằng 0."
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "Tỷ lệ chi phí (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "Số lượng lệnh sản xuất nguồn"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "Số lượng đơn mua hàng đã tạo"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "Hạng mục bút toán"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "Báo cáo tổng quan ĐMNL"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "Nguồn sản xuất của %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr ""
+"Odoo không thể tạo các bút toán anglo saxon. Tổng giá trị của %s là 0."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "Lệnh sản xuất"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "Đơn mua hàng"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Dòng đơn mua hàng"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "Đơn mua hàng được tạo từ %s"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "Dịch chuyển tồn kho"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr ""
+"Tỷ lệ phần trăm của chi phí phân chia lại linh kiện khi mua một kit. Tổng "
+"chi phí của tất cả linh kiện phải bằng 100."
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "Tổng tỷ lệ chi phí cho các phụ phẩm của ĐMNL không thể vượt quá 100. "
diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po
new file mode 100644
index 0000000..adf0265
--- /dev/null
+++ b/i18n/zh_CN.po
@@ -0,0 +1,136 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2023
+# 湘子 南 <1360857908@qq.com>, 2024
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: 湘子 南 <1360857908@qq.com>, 2024\n"
+"Language-Team: Chinese (China) (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "制造"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "采购"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "BOM总览报表"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "物料清单"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "物料清单明细行"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "分担的费用必须为正数或等于零。"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "成本分摊(%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "统计 MO 来源计数"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "生成PO计数"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "日记账项目"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "生产订单(MO)概述报告"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "制造来源 %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr "ERP 无法生成 anglo saxon 条目。%s 的总估值为零."
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "生产订单"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "采购订单"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "采购订单明细"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "从 %s生成采购订单"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "库存移动"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr "购买套件时组件重新分配成本的百分比。"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "BoM组件的总成本份额必须为100"
diff --git a/i18n/zh_TW.po b/i18n/zh_TW.po
new file mode 100644
index 0000000..df00914
--- /dev/null
+++ b/i18n/zh_TW.po
@@ -0,0 +1,135 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * purchase_mrp
+#
+# Translators:
+# Wil Odoo, 2023
+# Tony Ng, 2024
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-10-26 21:55+0000\n"
+"PO-Revision-Date: 2023-10-26 23:09+0000\n"
+"Last-Translator: Tony Ng, 2024\n"
+"Language-Team: Chinese (Taiwan) (https://app.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: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.purchase_order_form_mrp
+msgid "Manufacturing"
+msgstr "製造"
+
+#. module: purchase_mrp
+#: model_terms:ir.ui.view,arch_db:purchase_mrp.mrp_production_form_view_purchase
+msgid "Purchases"
+msgstr "採購"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_bom_structure
+msgid "BOM Overview Report"
+msgstr "BOM結構清單報表"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom
+msgid "Bill of Material"
+msgstr "物料清單"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_bom_line
+msgid "Bill of Material Line"
+msgstr "BOM明細"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "Components cost share have to be positive or equals to zero."
+msgstr "分擔的費用必須為正數或等於零。"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_bom_line__cost_share
+msgid "Cost Share (%)"
+msgstr "成本分攤 (%)"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_purchase_order__mrp_production_count
+msgid "Count of MO Source"
+msgstr "MO來源數"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,field_description:purchase_mrp.field_mrp_production__purchase_order_count
+msgid "Count of generated PO"
+msgstr "生成的 PO 數量"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_account_move_line
+msgid "Journal Item"
+msgstr "日記賬項目"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_report_mrp_report_mo_overview
+msgid "MO Overview Report"
+msgstr "生產訂單(MO)概覽報告"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/purchase.py:0
+#, python-format
+msgid "Manufacturing Source of %s"
+msgstr "製造訂單來源單據 %s"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/stock_move.py:0
+#, python-format
+msgid ""
+"Odoo is not able to generate the anglo saxon entries. The total valuation of"
+" %s is zero."
+msgstr "Odoo 無法生成盎格魯撒克遜庫存價值傳票。 %s 的總估值為零。"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_mrp_production
+msgid "Production Order"
+msgstr "製造訂單"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order
+msgid "Purchase Order"
+msgstr "採購訂單"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "採購訂單項目"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_production.py:0
+#, python-format
+msgid "Purchase Order generated from %s"
+msgstr "自 %s 生成的採購訂單"
+
+#. module: purchase_mrp
+#: model:ir.model,name:purchase_mrp.model_stock_move
+msgid "Stock Move"
+msgstr "庫存移動"
+
+#. module: purchase_mrp
+#: model:ir.model.fields,help:purchase_mrp.field_mrp_bom_line__cost_share
+msgid ""
+"The percentage of the component repartition cost when purchasing a kit.The "
+"total of all components' cost have to be equal to 100."
+msgstr "購買套件時組件重新分配成本的百分比。"
+
+#. module: purchase_mrp
+#. odoo-python
+#: code:addons/purchase_mrp/models/mrp_bom.py:0
+#, python-format
+msgid "The total cost share for a BoM's component have to be 100"
+msgstr "用料清單組件的總成本份額必須為100"
diff --git a/models/__init__.py b/models/__init__.py
new file mode 100644
index 0000000..7b2d54d
--- /dev/null
+++ b/models/__init__.py
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import account_move
+from . import purchase
+from . import mrp_production
+from . import mrp_bom
+from . import stock_move
diff --git a/models/account_move.py b/models/account_move.py
new file mode 100644
index 0000000..9dbbc19
--- /dev/null
+++ b/models/account_move.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import models
+
+
+class AccountMoveLine(models.Model):
+ _inherit = "account.move.line"
+
+ def _get_stock_valuation_layers(self, move):
+ """ Do not handle the invoice correction for kit. It has to be done
+ manually """
+ layers = super()._get_stock_valuation_layers(move)
+ return layers.filtered(lambda svl: svl.product_id == self.product_id)
diff --git a/models/mrp_bom.py b/models/mrp_bom.py
new file mode 100644
index 0000000..ce296a3
--- /dev/null
+++ b/models/mrp_bom.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, _
+from odoo.exceptions import UserError
+
+
+class MrpBom(models.Model):
+ _inherit = 'mrp.bom'
+
+ @api.constrains('product_id', 'product_tmpl_id', 'bom_line_ids', 'byproduct_ids', 'operation_ids')
+ def _check_bom_lines(self):
+ res = super()._check_bom_lines()
+ for bom in self:
+ if all(not bl.cost_share for bl in bom.bom_line_ids):
+ continue
+ if any(bl.cost_share < 0 for bl in bom.bom_line_ids):
+ raise UserError(_("Components cost share have to be positive or equals to zero."))
+ if sum(bom.bom_line_ids.mapped('cost_share')) != 100:
+ raise UserError(_("The total cost share for a BoM's component have to be 100"))
+ return res
+
+
+class MrpBomLine(models.Model):
+ _inherit = 'mrp.bom.line'
+
+ cost_share = fields.Float(
+ "Cost Share (%)", digits=(5, 2), # decimal = 2 is important for rounding calculations!!
+ help="The percentage of the component repartition cost when purchasing a kit."
+ "The total of all components' cost have to be equal to 100.")
+
+ def _get_cost_share(self):
+ self.ensure_one()
+ if self.cost_share:
+ return self.cost_share / 100
+ bom = self.bom_id
+ bom_lines_without_cost_share = bom.bom_line_ids.filtered(lambda bl: not bl.cost_share)
+ return 1 / len(bom_lines_without_cost_share)
diff --git a/models/mrp_production.py b/models/mrp_production.py
new file mode 100644
index 0000000..7a3a6d8
--- /dev/null
+++ b/models/mrp_production.py
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, Command, fields, models, _
+
+
+class MrpProduction(models.Model):
+ _inherit = 'mrp.production'
+
+ purchase_order_count = fields.Integer(
+ "Count of generated PO",
+ compute='_compute_purchase_order_count',
+ groups='purchase.group_purchase_user')
+
+ @api.depends('procurement_group_id.stock_move_ids.created_purchase_line_ids.order_id', 'procurement_group_id.stock_move_ids.move_orig_ids.purchase_line_id.order_id')
+ def _compute_purchase_order_count(self):
+ for production in self:
+ production.purchase_order_count = len(production.procurement_group_id.stock_move_ids.created_purchase_line_ids.order_id |
+ production.procurement_group_id.stock_move_ids.move_orig_ids.purchase_line_id.order_id)
+
+ def action_view_purchase_orders(self):
+ self.ensure_one()
+ purchase_order_ids = (self.procurement_group_id.stock_move_ids.created_purchase_line_ids.order_id | self.procurement_group_id.stock_move_ids.move_orig_ids.purchase_line_id.order_id).ids
+ action = {
+ 'res_model': 'purchase.order',
+ 'type': 'ir.actions.act_window',
+ }
+ if len(purchase_order_ids) == 1:
+ action.update({
+ 'view_mode': 'form',
+ 'res_id': purchase_order_ids[0],
+ })
+ else:
+ action.update({
+ 'name': _("Purchase Order generated from %s", self.name),
+ 'domain': [('id', 'in', purchase_order_ids)],
+ 'view_mode': 'tree,form',
+ })
+ return action
+
+ def _get_document_iterate_key(self, move_raw_id):
+ iterate_key = super(MrpProduction, self)._get_document_iterate_key(move_raw_id)
+ if not iterate_key and move_raw_id.created_purchase_line_ids:
+ iterate_key = 'created_purchase_line_ids'
+ return iterate_key
+
+ def _prepare_merge_orig_links(self):
+ origs = super()._prepare_merge_orig_links()
+ for move in self.move_raw_ids:
+ if not move.move_orig_ids or not move.created_purchase_line_ids:
+ continue
+ origs[move.bom_line_id.id].setdefault('created_purchase_line_ids', set()).update(move.created_purchase_line_ids.ids)
+ for vals in origs.values():
+ if vals.get('created_purchase_line_ids'):
+ vals['created_purchase_line_ids'] = [Command.set(vals['created_purchase_line_ids'])]
+ else:
+ vals['created_purchase_line_ids'] = []
+ return origs
diff --git a/models/purchase.py b/models/purchase.py
new file mode 100644
index 0000000..38c61c0
--- /dev/null
+++ b/models/purchase.py
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from collections import defaultdict
+
+from odoo import api, fields, models, _
+from odoo.tools import OrderedSet
+
+
+class PurchaseOrder(models.Model):
+ _inherit = 'purchase.order'
+
+ mrp_production_count = fields.Integer(
+ "Count of MO Source",
+ compute='_compute_mrp_production_count',
+ groups='mrp.group_mrp_user')
+
+ @api.depends('order_line.move_dest_ids.group_id.mrp_production_ids')
+ def _compute_mrp_production_count(self):
+ for purchase in self:
+ purchase.mrp_production_count = len(purchase._get_mrp_productions())
+
+ def _get_mrp_productions(self, **kwargs):
+ return self.order_line.move_dest_ids.group_id.mrp_production_ids | self.order_line.move_ids.move_dest_ids.group_id.mrp_production_ids
+
+ def action_view_mrp_productions(self):
+ self.ensure_one()
+ mrp_production_ids = self._get_mrp_productions().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 Source of %s", self.name),
+ 'domain': [('id', 'in', mrp_production_ids)],
+ 'view_mode': 'tree,form',
+ })
+ return action
+
+
+class PurchaseOrderLine(models.Model):
+ _inherit = 'purchase.order.line'
+
+ def _compute_qty_received(self):
+ kit_lines = self.env['purchase.order.line']
+ lines_stock = self.filtered(lambda l: l.qty_received_method == 'stock_moves' and l.move_ids and l.state != 'cancel')
+ product_by_company = defaultdict(OrderedSet)
+ for line in lines_stock:
+ product_by_company[line.company_id].add(line.product_id.id)
+ kits_by_company = {
+ company: self.env['mrp.bom']._bom_find(self.env['product.product'].browse(product_ids), company_id=company.id, bom_type='phantom')
+ for company, product_ids in product_by_company.items()
+ }
+ for line in lines_stock:
+ kit_bom = kits_by_company[line.company_id].get(line.product_id)
+ if kit_bom:
+ moves = line.move_ids.filtered(lambda m: m.state == 'done' and not m.scrapped)
+ order_qty = line.product_uom._compute_quantity(line.product_uom_qty, kit_bom.product_uom_id)
+ filters = {
+ 'incoming_moves': lambda m: m.location_id.usage == 'supplier' and (not m.origin_returned_move_id or (m.origin_returned_move_id and m.to_refund)),
+ 'outgoing_moves': lambda m: m.location_id.usage != 'supplier' and m.to_refund
+ }
+ line.qty_received = moves._compute_kit_quantities(line.product_id, order_qty, kit_bom, filters)
+ kit_lines += line
+ super(PurchaseOrderLine, self - kit_lines)._compute_qty_received()
+
+ def _get_upstream_documents_and_responsibles(self, visited):
+ return [(self.order_id, self.order_id.user_id, visited)]
+
+ def _get_qty_procurement(self):
+ self.ensure_one()
+ # Specific case when we change the qty on a PO 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'].sudo()._bom_find(self.product_id, bom_type='phantom')[self.product_id]
+ if bom and 'previous_product_qty' in self.env.context:
+ return self.env.context['previous_product_qty'].get(self.id, 0.0)
+ return super()._get_qty_procurement()
diff --git a/models/stock_move.py b/models/stock_move.py
new file mode 100644
index 0000000..8f2efcf
--- /dev/null
+++ b/models/stock_move.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import _, models, fields
+from odoo.tools.float_utils import float_is_zero, float_round
+from odoo.exceptions import UserError
+
+
+class StockMove(models.Model):
+ _inherit = 'stock.move'
+
+ def _prepare_phantom_move_values(self, bom_line, product_qty, quantity_done):
+ vals = super(StockMove, self)._prepare_phantom_move_values(bom_line, product_qty, quantity_done)
+ if self.purchase_line_id:
+ vals['purchase_line_id'] = self.purchase_line_id.id
+ return vals
+
+ def _get_price_unit(self):
+ if self.product_id == self.purchase_line_id.product_id or not self.bom_line_id or self._should_ignore_pol_price():
+ return super()._get_price_unit()
+ line = self.purchase_line_id
+ kit_price_unit = line._get_gross_price_unit()
+ if line.currency_id != self.company_id.currency_id:
+ kit_price_unit = line.currency_id._convert(kit_price_unit, self.company_id.currency_id, self.company_id, fields.Date.context_today(self), round=False)
+ cost_share = self.bom_line_id._get_cost_share()
+ price_unit_prec = self.env['decimal.precision'].precision_get('Product Price')
+ return float_round(kit_price_unit * cost_share * line.product_qty / self.product_qty, precision_digits=price_unit_prec)
+
+ def _get_valuation_price_and_qty(self, related_aml, to_curr):
+ valuation_price_unit_total, valuation_total_qty = super()._get_valuation_price_and_qty(related_aml, to_curr)
+ boms = self.env['mrp.bom']._bom_find(related_aml.product_id, company_id=related_aml.company_id.id, bom_type='phantom')
+ if related_aml.product_id in boms:
+ kit_bom = boms[related_aml.product_id]
+ order_qty = related_aml.product_id.uom_id._compute_quantity(related_aml.quantity, kit_bom.product_uom_id)
+ filters = {
+ 'incoming_moves': lambda m: m.location_id.usage == 'supplier' and (not m.origin_returned_move_id or (m.origin_returned_move_id and m.to_refund)),
+ 'outgoing_moves': lambda m: m.location_id.usage != 'supplier' and m.to_refund
+ }
+ valuation_total_qty = self._compute_kit_quantities(related_aml.product_id, order_qty, kit_bom, filters)
+ valuation_total_qty = kit_bom.product_uom_id._compute_quantity(valuation_total_qty, related_aml.product_id.uom_id)
+ if float_is_zero(valuation_total_qty, precision_rounding=related_aml.product_uom_id.rounding or related_aml.product_id.uom_id.rounding):
+ raise UserError(_('Odoo is not able to generate the anglo saxon entries. The total valuation of %s is zero.', related_aml.product_id.display_name))
+ return valuation_price_unit_total, valuation_total_qty
diff --git a/report/__init__.py b/report/__init__.py
new file mode 100644
index 0000000..9fc85c8
--- /dev/null
+++ b/report/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import mrp_report_bom_structure
+from . import mrp_report_mo_overview
diff --git a/report/mrp_report_bom_structure.py b/report/mrp_report_bom_structure.py
new file mode 100644
index 0000000..a9a64c3
--- /dev/null
+++ b/report/mrp_report_bom_structure.py
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, models
+
+class ReportBomStructure(models.AbstractModel):
+ _inherit = 'report.mrp.report_bom_structure'
+
+ @api.model
+ def _format_route_info(self, rules, rules_delay, warehouse, product, bom, quantity):
+ res = super()._format_route_info(rules, rules_delay, warehouse, product, bom, quantity)
+ if self._is_buy_route(rules, product, bom):
+ buy_rules = [rule for rule in rules if rule.action == 'buy']
+ supplier = product._select_seller(quantity=quantity, uom_id=product.uom_id)
+ parent_bom = self.env.context.get('parent_bom')
+ purchase_lead = parent_bom.company_id.days_to_purchase + parent_bom.company_id.po_lead if parent_bom and parent_bom.company_id else 0
+ if supplier:
+ return {
+ 'route_type': 'buy',
+ 'route_name': buy_rules[0].route_id.display_name,
+ 'route_detail': supplier.display_name,
+ 'lead_time': supplier.delay + rules_delay + purchase_lead,
+ 'supplier_delay': supplier.delay + rules_delay + purchase_lead,
+ 'supplier': supplier,
+ }
+ return res
+
+ @api.model
+ def _is_buy_route(self, rules, product, bom):
+ return any(rule for rule in rules if rule.action == 'buy' and product.seller_ids)
+
+ @api.model
+ def _get_resupply_availability(self, route_info, components):
+ if route_info.get('route_type') == 'buy':
+ supplier_delay = route_info.get('supplier_delay', 0)
+ return ('estimated', supplier_delay)
+ return super()._get_resupply_availability(route_info, components)
diff --git a/report/mrp_report_mo_overview.py b/report/mrp_report_mo_overview.py
new file mode 100644
index 0000000..fda4f1f
--- /dev/null
+++ b/report/mrp_report_mo_overview.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+class ReportMoOverview(models.AbstractModel):
+ _inherit = 'report.mrp.report_mo_overview'
+
+ def _get_extra_replenishments(self, product):
+ res = super()._get_extra_replenishments(product)
+ domain = [('state', 'in', ['draft', 'sent', 'to approve']), ('product_id', '=', product.id)]
+ warehouse_id = self.env.context.get('warehouse', False)
+ if warehouse_id:
+ domain += [('order_id.picking_type_id.warehouse_id', '=', warehouse_id)]
+ po_lines = self.env['purchase.order.line'].search(domain, order='date_planned, id')
+
+ for po_line in po_lines:
+ line_qty = po_line.product_qty
+ for move in po_line.move_dest_ids:
+ linked_production = self.env['stock.move'].browse(move._rollup_move_dests()).raw_material_production_id
+ # Only create specific lines for moves directly linked to a manufacturing order
+ if not linked_production:
+ continue
+ prod_qty = min(line_qty, move.product_uom._compute_quantity(move.product_uom_qty, po_line.product_uom))
+ res.append(self._format_extra_replenishment(po_line, prod_qty, linked_production.id))
+ line_qty -= prod_qty
+ if line_qty:
+ res.append(self._format_extra_replenishment(po_line, line_qty))
+
+ return res
+
+ def _format_extra_replenishment(self, po_line, quantity, production_id=False):
+ po = po_line.order_id
+ price = po_line.taxes_id.with_context(round=False).compute_all(
+ po_line.price_unit, currency=po.currency_id, quantity=quantity, product=po_line.product_id, partner=po.partner_id
+ )['total_void']
+ return {
+ '_name': 'purchase.order',
+ 'id': po.id,
+ 'cost': price,
+ 'quantity': quantity,
+ 'uom': po_line.product_uom,
+ 'production_id': production_id
+ }
+
+ def _get_replenishment_receipt(self, doc_in, components):
+ res = super()._get_replenishment_receipt(doc_in, components)
+ if doc_in._name == 'purchase.order':
+ if doc_in.state != 'purchase':
+ return self._format_receipt_date('estimated', doc_in.date_planned)
+ in_pickings = doc_in.picking_ids.filtered(lambda p: p.state not in ('done', 'cancel'))
+ planned_date = max(in_pickings.mapped('scheduled_date')) if in_pickings else doc_in.date_planned
+ return self._format_receipt_date('expected', planned_date)
+ return res
+
+ def _get_resupply_data(self, rules, rules_delay, quantity, uom_id, product, production):
+ res = super()._get_resupply_data(rules, rules_delay, quantity, uom_id, product, production)
+ if any(rule for rule in rules if rule.action == 'buy' and product.seller_ids):
+ supplier = product._select_seller(quantity=quantity, uom_id=product.uom_id)
+ if supplier:
+ return {
+ 'delay': supplier.delay + rules_delay,
+ 'cost': supplier.price * uom_id._compute_quantity(quantity, supplier.product_uom),
+ 'currency': supplier.currency_id,
+ }
+ return res
+
+ def _is_doc_in_done(self, doc_in):
+ if doc_in._name == 'purchase.order':
+ return doc_in.state == 'purchase' and all(move.state in ('done', 'cancel') for move in doc_in.order_line.move_ids)
+ return super()._is_doc_in_done(doc_in)
+
+ def _get_origin(self, move):
+ if move.purchase_line_id:
+ return move.purchase_line_id.order_id
+ return super()._get_origin(move)
+
+ def _get_replenishment_mo_cost(self, product, quantity, uom_id, currency, move_in=False):
+ if move_in and move_in.purchase_line_id:
+ po_line = move_in.purchase_line_id
+ po = po_line.order_id
+ price = po_line.taxes_id.with_context(round=False).compute_all(
+ po_line.price_unit, currency=po.currency_id, quantity=uom_id._compute_quantity(quantity, move_in.purchase_line_id.product_uom),
+ product=po_line.product_id, partner=po.partner_id
+ )['total_void']
+ price = po_line.currency_id._convert(price, currency, (move_in.company_id or self.env.company), fields.Date.today())
+ return currency.round(price)
+ return super()._get_replenishment_mo_cost(product, quantity, uom_id, currency, move_in)
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
new file mode 100644
index 0000000..42ef756
--- /dev/null
+++ b/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_mrp_bom_purchase_user,mrp.bom,mrp.model_mrp_bom,purchase.group_purchase_user,1,0,0,0
+access_mrp_bom_line_purchase_user,mrp.bom.line,mrp.model_mrp_bom_line,purchase.group_purchase_user,1,0,0,0
diff --git a/static/src/components/bom_overview_line/mrp_bom_overview_line.js b/static/src/components/bom_overview_line/mrp_bom_overview_line.js
new file mode 100644
index 0000000..2a27b93
--- /dev/null
+++ b/static/src/components/bom_overview_line/mrp_bom_overview_line.js
@@ -0,0 +1,16 @@
+/** @odoo-module **/
+
+import { patch } from "@web/core/utils/patch";
+import { BomOverviewLine } from "@mrp/components/bom_overview_line/mrp_bom_overview_line";
+
+patch(BomOverviewLine.prototype, {
+ /**
+ * @override
+ */
+ async goToRoute(routeType) {
+ if (routeType == "buy") {
+ return this.goToAction(this.data.link_id, this.data.link_model);
+ }
+ return super.goToRoute(...arguments);
+ }
+});
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..5ba019d
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import test_purchase_mrp_flow
+from . import test_anglo_saxon_valuation
diff --git a/tests/test_anglo_saxon_valuation.py b/tests/test_anglo_saxon_valuation.py
new file mode 100644
index 0000000..e41d2d5
--- /dev/null
+++ b/tests/test_anglo_saxon_valuation.py
@@ -0,0 +1,235 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.fields import Date, Datetime
+from odoo.tools import mute_logger
+from odoo.tests import Form, tagged
+from odoo.addons.account.tests.common import AccountTestInvoicingCommon
+from odoo.addons.stock_account.tests.test_stockvaluation import _create_accounting_data
+
+
+@tagged('post_install', '-at_install')
+class TestAngloSaxonValuationPurchaseMRP(AccountTestInvoicingCommon):
+
+ @classmethod
+ def setUpClass(cls, chart_template_ref=None):
+ super().setUpClass(chart_template_ref=chart_template_ref)
+ cls.vendor01 = cls.env['res.partner'].create({'name': "Super Vendor"})
+
+ cls.stock_input_account, cls.stock_output_account, cls.stock_valuation_account, cls.expense_account, cls.stock_journal = _create_accounting_data(cls.env)
+ cls.avco_category = cls.env['product.category'].create({
+ 'name': 'AVCO',
+ 'property_cost_method': 'average',
+ 'property_valuation': 'real_time',
+ 'property_stock_account_input_categ_id': cls.stock_input_account.id,
+ 'property_stock_account_output_categ_id': cls.stock_output_account.id,
+ 'property_stock_journal': cls.stock_journal.id,
+ 'property_stock_valuation_account_id': cls.stock_valuation_account.id,
+ })
+
+ currency_grp = cls.env.ref('base.group_multi_currency')
+ cls.env.user.write({'groups_id': [(4, currency_grp.id)]})
+
+ cls.env.company.anglo_saxon_accounting = True
+
+ def test_kit_anglo_saxo_price_diff(self):
+ """
+ Suppose an automated-AVCO configuration and a Price Difference Account defined on
+ the product category. When buying a kit of that category at a higher price than its
+ cost, the difference should be published on the Price Difference Account
+ """
+ kit, compo01, compo02 = self.env['product.product'].create([{
+ 'name': name,
+ 'standard_price': price,
+ 'type': 'product',
+ 'categ_id': self.avco_category.id,
+ } for name, price in [('Kit', 0), ('Compo 01', 10), ('Compo 02', 20)]])
+
+ self.env['mrp.bom'].create({
+ 'product_tmpl_id': kit.product_tmpl_id.id,
+ 'type': 'phantom',
+ 'bom_line_ids': [(0, 0, {
+ 'product_id': p.id,
+ 'product_qty': 1,
+ }) for p in [compo01, compo02]]
+ })
+ kit.button_bom_cost()
+
+ po_form = Form(self.env['purchase.order'])
+ po_form.partner_id = self.vendor01
+ with po_form.order_line.new() as pol_form:
+ pol_form.product_id = kit
+ pol_form.price_unit = 100
+ po = po_form.save()
+ po.button_confirm()
+
+ po.picking_ids.button_validate()
+
+ action = po.action_create_invoice()
+ invoice = self.env['account.move'].browse(action['res_id'])
+ invoice.invoice_date = Date.today()
+ invoice.action_post()
+
+ svls = po.order_line.move_ids.stock_valuation_layer_ids
+ self.assertEqual(len(svls), 2, "The invoice should have created two SVL (one by kit's component) for the price diff")
+ self.assertEqual(sum(svls.mapped('value')), 100, "Should be the standard price of both components")
+
+ input_amls = self.env['account.move.line'].search([('account_id', '=', self.stock_input_account.id)])
+ self.assertEqual(sum(input_amls.mapped('balance')), 0)
+
+ def test_buy_deliver_and_return_kit_with_auto_avco_components(self):
+ """
+ A kit K with two AVCO components
+ - C01, cost share 25%
+ - C02, cost share 75%
+ K in Units
+ C01, C02 in Litres
+ Buy and receive 1 kit @ 100
+ Deliver the kit
+ Update the cost shares
+ Return the delivery
+ """
+ stock_location = self.env['stock.location'].search([
+ ('company_id', '=', self.env.company.id),
+ ('name', '=', 'Stock'),
+ ])
+ customer_location = self.env.ref('stock.stock_location_customers')
+ type_out = self.env['stock.picking.type'].search([
+ ('company_id', '=', self.env.company.id),
+ ('name', '=', 'Delivery Orders')])
+ uom_unit = self.env.ref('uom.product_uom_unit')
+ uom_litre = self.env.ref('uom.product_uom_litre')
+
+ component01, component02 = self.env['product.product'].create([{
+ 'name': 'Component %s' % name,
+ 'type': 'product',
+ 'categ_id': self.avco_category.id,
+ 'uom_id': uom_litre.id,
+ 'uom_po_id': uom_litre.id,
+ } for name in ['01', '02']])
+
+ kit = self.env['product.product'].create({
+ 'name': 'Super Kit',
+ 'type': 'consu',
+ 'uom_id': uom_unit.id,
+ 'uom_po_id': uom_unit.id,
+ })
+
+ bom_kit = self.env['mrp.bom'].create({
+ 'product_tmpl_id': kit.product_tmpl_id.id,
+ 'type': 'phantom',
+ 'bom_line_ids': [(0, 0, {
+ 'product_id': component01.id,
+ 'product_qty': 1,
+ 'cost_share': 25,
+ }), (0, 0, {
+ 'product_id': component02.id,
+ 'product_qty': 1,
+ 'cost_share': 75,
+ })],
+ })
+
+ po_form = Form(self.env['purchase.order'])
+ po_form.partner_id = self.vendor01
+ with po_form.order_line.new() as pol_form:
+ pol_form.product_id = kit
+ pol_form.price_unit = 100
+ pol_form.taxes_id.clear()
+ po = po_form.save()
+ po.button_confirm()
+
+ receipt = po.picking_ids
+ receipt.move_line_ids.quantity = 1
+ receipt.button_validate()
+
+ self.assertEqual(receipt.state, 'done')
+ self.assertEqual(receipt.move_line_ids.product_id, component01 | component02)
+ self.assertEqual(po.order_line.qty_received, 1)
+ self.assertEqual(component01.stock_valuation_layer_ids.value, 25)
+ self.assertEqual(component02.stock_valuation_layer_ids.value, 75)
+
+ delivery = self.env['stock.picking'].create({
+ 'picking_type_id': type_out.id,
+ 'location_id': stock_location.id,
+ 'location_dest_id': customer_location.id,
+ 'move_ids': [(0, 0, {
+ 'name': kit.name,
+ 'product_id': kit.id,
+ 'product_uom': kit.uom_id.id,
+ 'product_uom_qty': 1.0,
+ 'location_id': stock_location.id,
+ 'location_dest_id': customer_location.id,
+ })],
+ })
+ delivery.action_confirm()
+ delivery.move_ids.move_line_ids.quantity = 1
+ delivery.button_validate()
+
+ self.assertEqual(component01.stock_valuation_layer_ids.mapped('value'), [25, -25])
+ self.assertEqual(component02.stock_valuation_layer_ids.mapped('value'), [75, -75])
+
+ with mute_logger('odoo.tests.form.onchange'):
+ with Form(bom_kit) as kit_form:
+ with kit_form.bom_line_ids.edit(0) as line:
+ line.cost_share = 30
+ with kit_form.bom_line_ids.edit(1) as line:
+ line.cost_share = 70
+
+ wizard_form = Form(self.env['stock.return.picking'].with_context(active_id=delivery.id, active_model='stock.picking'))
+ wizard = wizard_form.save()
+ action = wizard.create_returns()
+ return_picking = self.env["stock.picking"].browse(action["res_id"])
+ return_picking.move_ids.move_line_ids.quantity = 1
+ return_picking.button_validate()
+
+ self.assertEqual(component01.stock_valuation_layer_ids.mapped('value'), [25, -25, 25])
+ self.assertEqual(component02.stock_valuation_layer_ids.mapped('value'), [75, -75, 75])
+
+ def test_valuation_multicurrency_with_kits(self):
+ """ Purchase a Kit in multi-currency and verify that the amount_currency is correctly computed.
+ """
+
+ # Setup Kit
+ kit, cmp = self.env['product.product'].create([{
+ 'name': name,
+ 'standard_price': 0,
+ 'type': 'product',
+ 'categ_id': self.avco_category.id,
+ } for name in ['Kit', 'Cmp']])
+
+ self.env['mrp.bom'].create({
+ 'product_tmpl_id': kit.product_tmpl_id.id,
+ 'type': 'phantom',
+ 'bom_line_ids': [(0, 0, {'product_id': cmp.id, 'product_qty': 5})]
+ })
+
+ # Setup Currency
+ usd = self.env.ref('base.USD')
+ eur = self.env.ref('base.EUR')
+ self.env['res.currency.rate'].create({
+ 'name': Datetime.today(),
+ 'currency_id': usd.id,
+ 'rate': 1})
+ self.env['res.currency.rate'].create({
+ 'name': Datetime.today(),
+ 'currency_id': eur.id,
+ 'rate': 2})
+
+ # Create Purchase
+ po_form = Form(self.env['purchase.order'])
+ po_form.partner_id = self.vendor01
+ po_form.currency_id = eur
+ with po_form.order_line.new() as pol_form:
+ pol_form.product_id = kit
+ pol_form.price_unit = 100 # $50
+ po = po_form.save()
+ po.button_confirm()
+
+ po.picking_ids.button_validate()
+
+ svl = po.order_line.move_ids.stock_valuation_layer_ids.ensure_one()
+ input_aml = self.env['account.move.line'].search([('account_id', '=', self.stock_valuation_account.id)])
+
+ self.assertEqual(svl.value, 50) # USD
+ self.assertEqual(input_aml.amount_currency, 100) # EUR
+ self.assertEqual(input_aml.balance, 50) # USD
diff --git a/tests/test_purchase_mrp_flow.py b/tests/test_purchase_mrp_flow.py
new file mode 100644
index 0000000..b23c0e1
--- /dev/null
+++ b/tests/test_purchase_mrp_flow.py
@@ -0,0 +1,933 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from datetime import timedelta
+
+from odoo.addons.account.tests.common import AccountTestInvoicingCommon
+from odoo.tests.common import Form
+from odoo.tests import tagged
+from odoo import fields
+from odoo.fields import Command
+
+
+@tagged('post_install', '-at_install')
+class TestPurchaseMrpFlow(AccountTestInvoicingCommon):
+
+ @classmethod
+ def setUpClass(cls, chart_template_ref=None):
+ super().setUpClass(chart_template_ref=chart_template_ref)
+ # Useful models
+ cls.UoM = cls.env['uom.uom']
+ cls.categ_unit = cls.env.ref('uom.product_uom_categ_unit')
+ cls.categ_kgm = cls.env.ref('uom.product_uom_categ_kgm')
+ cls.warehouse = cls.env['stock.warehouse'].search([('company_id', '=', cls.env.company.id)])
+ cls.stock_location = cls.warehouse.lot_stock_id
+
+ grp_uom = cls.env.ref('uom.group_uom')
+ group_user = cls.env.ref('base.group_user')
+ group_user.write({'implied_ids': [(4, grp_uom.id)]})
+ cls.env.user.write({'groups_id': [(4, grp_uom.id)]})
+
+ 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._create_product('Comp A', cls.uom_unit)
+ cls.component_b = cls._create_product('Comp B', cls.uom_unit)
+ cls.component_c = cls._create_product('Comp C', cls.uom_unit)
+ cls.component_d = cls._create_product('Comp D', cls.uom_unit)
+ cls.component_e = cls._create_product('Comp E', cls.uom_unit)
+ cls.component_f = cls._create_product('Comp F', cls.uom_unit)
+ cls.component_g = 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._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._create_product('Kit 2', cls.uom_unit)
+ cls.kit_3 = cls._create_product('kit 3', cls.uom_unit)
+ cls.kit_parent = 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 _create_product(cls, name, uom_id, routes=()):
+ p = Form(cls.env['product.product'])
+ p.name = name
+ p.detailed_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.quantity = quantities_to_process[move.product_id]
+ move.picked = True
+
+ 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.quantity = qty_to_process[comp][0]
+ move._action_done()
+
+ def test_kit_component_cost(self):
+ # Set kit and componnet product to automated FIFO
+ self.kit_1.categ_id.property_cost_method = 'fifo'
+ self.kit_1.categ_id.property_valuation = 'real_time'
+
+ self.kit_1.bom_ids.product_qty = 3
+
+ po = Form(self.env['purchase.order'])
+ po.partner_id = self.env['res.partner'].create({'name': 'Testy'})
+ with po.order_line.new() as line:
+ line.product_id = self.kit_1
+ line.product_qty = 120
+ line.price_unit = 1260
+ po = po.save()
+ po.button_confirm()
+ po.picking_ids.button_validate()
+
+ # Unit price equaly dived among bom lines (cost share not set)
+ # # price further divided by product qty of each component
+ components = [
+ self.component_a,
+ self.component_b,
+ self.component_c,
+ ]
+
+ self.assertEqual(sum([k.standard_price * k.qty_available for k in components]), 120 * 1260)
+
+ def test_kit_component_cost_multi_currency(self):
+ # Set kit and component product to automated FIFO
+ kit = self._create_product('Kit', self.uom_unit)
+ cmp = self._create_product('CMP', self.uom_unit)
+
+ bom_kit = self.env['mrp.bom'].create({
+ 'product_tmpl_id': kit.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'type': 'phantom'
+ })
+ self.env['mrp.bom.line'].create({
+ 'product_id': cmp.id,
+ 'product_qty': 3.0,
+ 'bom_id': bom_kit.id})
+
+ kit.categ_id.property_cost_method = 'fifo'
+ kit.categ_id.property_valuation = 'real_time'
+
+ mock_currency = self.env['res.currency'].create({
+ 'name': 'MOCK',
+ 'symbol': 'MC',
+ })
+ self.env['res.currency.rate'].create({
+ 'name': '2023-01-01',
+ 'company_rate': 100.0,
+ 'currency_id': mock_currency.id,
+ 'company_id': self.env.company.id,
+ })
+
+ po = Form(self.env['purchase.order'])
+ po.partner_id = self.env['res.partner'].create({'name': 'Testy'})
+ po.currency_id = mock_currency
+
+ with po.order_line.new() as line:
+ line.product_id = kit
+ line.product_qty = 1
+ line.price_unit = 300.00
+
+ po = po.save()
+ po.button_confirm()
+ po.picking_ids.button_validate()
+
+ layer = po.picking_ids.move_ids.stock_valuation_layer_ids
+ self.assertEqual(layer.unit_cost, 1)
+
+ def test_01_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
+
+ # Creation of a sale order for x7 kit_parent
+ partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ f = Form(self.env['purchase.order'])
+ f.partner_id = partner
+ with f.order_line.new() as line:
+ line.product_id = self.kit_parent
+ line.product_qty = 7.0
+ line.price_unit = 10
+
+ po = f.save()
+ po.button_confirm()
+
+ # Check picking creation, its move lines should concern
+ # only components. Also checks that the quantities are corresponding
+ # to the PO
+ self.assertEqual(len(po.picking_ids), 1)
+ order_line = po.order_line[0]
+ picking_original = po.picking_ids[0]
+ move_ids = picking_original.move_ids
+ products = move_ids.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_ids), 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_ids, expected_quantities)
+
+ # Process only 7 units of each component
+ qty_to_process = 7
+ move_ids.write({'quantity': qty_to_process, 'picked': True})
+
+ # Create a backorder for the missing componenents
+ pick = po.picking_ids[0]
+ res = pick.button_validate()
+ Form(self.env[res['res_model']].with_context(res['context'])).save().process()
+
+ # Check that a backorded is created
+ self.assertEqual(len(po.picking_ids), 2)
+ backorder_1 = po.picking_ids - picking_original
+ self.assertEqual(backorder_1.backorder_id.id, picking_original.id)
+
+ # Even if some components are received completely,
+ # no KitParent should be received
+ self.assertEqual(order_line.qty_received, 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_ids, qty_to_process)
+
+ # Create a backorder for the missing componenents
+ res = backorder_1.button_validate()
+ Form(self.env[res['res_model']].with_context(res['context'])).save().process()
+
+ # Only 1 kit_parent should be received at this point
+ self.assertEqual(order_line.qty_received, 1)
+
+ # Check that the second backorder is created
+ self.assertEqual(len(po.picking_ids), 3)
+ backorder_2 = po.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_ids), 6)
+ move_comp_e = backorder_2.move_ids.filtered(lambda m: m.product_id.id == self.component_e.id)
+ self.assertFalse(move_comp_e)
+ self._assert_quantities(backorder_2.move_ids, 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_ids, qty_to_process)
+
+ # Create a backorder for the missing componenents
+ res = backorder_2.button_validate()
+ Form(self.env[res['res_model']].with_context(res['context'])).save().process()
+
+ # Check that x3 kit_parents are indeed received
+ self.assertEqual(order_line.qty_received, 3)
+
+ # Check that the third backorder is created
+ self.assertEqual(len(po.picking_ids), 4)
+ backorder_3 = po.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_ids, expected_quantities)
+
+ # Process all missing components
+ self._process_quantities(backorder_3.move_ids, expected_quantities)
+
+ # Validating the last backorder now it's complete.
+ # All kits should be received
+ backorder_3.button_validate()
+ self.assertEqual(order_line.qty_received, 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
+ return_pick.button_validate()
+
+ # Now quantity received should be 3 again
+ self.assertEqual(order_line.qty_received, 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_ids:
+ move.write({
+ 'quantity': expected_quantities[move.product_id] - 1,
+ 'to_refund': True
+ })
+
+ wiz_act = return_of_return_pick.button_validate()
+ wiz = Form(self.env[wiz_act['res_model']].with_context(wiz_act['context'])).save()
+ wiz.process()
+
+ # As one of each component is missing, only 6 kit_parents should be received
+ self.assertEqual(order_line.qty_received, 6)
+
+ # Check that the 4th backorder is created.
+ self.assertEqual(len(po.picking_ids), 7)
+ backorder_4 = po.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_ids:
+ self.assertEqual(move.product_qty, 1)
+
+ def test_concurent_procurements(self):
+ """ Check a production created to fulfill a procurement will not
+ replenish more that needed if others procurements have the same products
+ than the production component. """
+
+ warehouse = self.warehouse
+ buy_route = warehouse.buy_pull_id.route_id
+ manufacture_route = warehouse.manufacture_pull_id.route_id
+
+ vendor1 = self.env['res.partner'].create({'name': 'aaa', 'email': 'from.test@example.com'})
+ supplier_info1 = self.env['product.supplierinfo'].create({
+ 'partner_id': vendor1.id,
+ 'price': 50,
+ })
+
+ component = self.env['product.product'].create({
+ 'name': 'component',
+ 'type': 'product',
+ 'route_ids': [(4, buy_route.id)],
+ 'seller_ids': [(6, 0, [supplier_info1.id])],
+ })
+ finished = self.env['product.product'].create({
+ 'name': 'finished',
+ 'type': 'product',
+ 'route_ids': [(4, manufacture_route.id)],
+ })
+ self.env['stock.warehouse.orderpoint'].create({
+ 'name': 'A RR',
+ 'location_id': warehouse.lot_stock_id.id,
+ 'product_id': component.id,
+ 'route_id': buy_route.id,
+ 'product_min_qty': 0,
+ 'product_max_qty': 0,
+ })
+ self.env['stock.warehouse.orderpoint'].create({
+ 'name': 'A RR',
+ 'location_id': warehouse.lot_stock_id.id,
+ 'product_id': finished.id,
+ 'route_id': manufacture_route.id,
+ 'product_min_qty': 0,
+ 'product_max_qty': 0,
+ })
+
+ self.env['mrp.bom'].create({
+ 'product_id': finished.id,
+ 'product_tmpl_id': finished.product_tmpl_id.id,
+ 'product_uom_id': self.uom_unit.id,
+ 'product_qty': 1.0,
+ 'consumption': 'flexible',
+ 'operation_ids': [
+ ],
+ 'type': 'normal',
+ 'bom_line_ids': [
+ (0, 0, {'product_id': component.id, 'product_qty': 1}),
+ ]})
+
+ # Delivery to trigger replenishment
+ picking_form = Form(self.env['stock.picking'])
+ picking_form.picking_type_id = warehouse.out_type_id
+ with picking_form.move_ids_without_package.new() as move:
+ move.product_id = finished
+ move.product_uom_qty = 3
+ with picking_form.move_ids_without_package.new() as move:
+ move.product_id = component
+ move.product_uom_qty = 2
+ picking = picking_form.save()
+ picking.action_confirm()
+
+ # Find PO
+ purchase = self.env['purchase.order.line'].search([
+ ('product_id', '=', component.id),
+ ]).order_id
+ self.assertTrue(purchase)
+ self.assertEqual(purchase.order_line.product_qty, 5)
+
+ def test_01_purchase_mrp_kit_qty_change(self):
+ self.partner = self.env['res.partner'].create({'name': 'Test Partner'})
+
+ # Create a PO with one unit of the kit product
+ self.po = self.env['purchase.order'].create({
+ 'partner_id': self.partner.id,
+ 'order_line': [(0, 0, {'name': self.kit_1.name, 'product_id': self.kit_1.id, 'product_qty': 1, 'product_uom': self.kit_1.uom_id.id, 'price_unit': 60.0, 'date_planned': fields.Datetime.now()})],
+ })
+ # Validate the PO
+ self.po.button_confirm()
+
+ # Check the component qty in the created picking
+ self.assertEqual(self.po.picking_ids.move_ids_without_package[0].product_uom_qty, 2, "The quantity of components must be created according to the BOM")
+ self.assertEqual(self.po.picking_ids.move_ids_without_package[1].product_uom_qty, 1, "The quantity of components must be created according to the BOM")
+ self.assertEqual(self.po.picking_ids.move_ids_without_package[2].product_uom_qty, 3, "The quantity of components must be created according to the BOM")
+
+ # Update the kit quantity in the PO
+ self.po.order_line[0].product_qty = 2
+ # Check the component qty after the update
+ self.assertEqual(self.po.picking_ids.move_ids_without_package[0].product_uom_qty, 4, "The amount of the kit components must be updated when changing the quantity of the kit.")
+ self.assertEqual(self.po.picking_ids.move_ids_without_package[1].product_uom_qty, 2, "The amount of the kit components must be updated when changing the quantity of the kit.")
+ self.assertEqual(self.po.picking_ids.move_ids_without_package[2].product_uom_qty, 6, "The amount of the kit components must be updated when changing the quantity of the kit.")
+
+ def test_procurement_with_preferred_route(self):
+ """
+ 3-steps receipts. Suppose a product that has both buy and manufacture
+ routes. The user runs an orderpoint with the preferred route defined to
+ "Buy". A purchase order should be generated.
+ """
+ self.warehouse.reception_steps = 'three_steps'
+
+ manu_route = self.warehouse.manufacture_pull_id.route_id
+ buy_route = self.warehouse.buy_pull_id.route_id
+
+ # un-prioritize the buy rules
+ self.env['stock.rule'].search([]).sequence = 1
+ buy_route.rule_ids.sequence = 2
+
+ vendor = self.env['res.partner'].create({'name': 'super vendor'})
+
+ product = self.env['product.product'].create({
+ 'name': 'super product',
+ 'type': 'product',
+ 'seller_ids': [(0, 0, {'partner_id': vendor.id})],
+ 'route_ids': [(4, manu_route.id), (4, buy_route.id)],
+ })
+
+ rr = self.env['stock.warehouse.orderpoint'].create({
+ 'name': product.name,
+ 'location_id': self.warehouse.lot_stock_id.id,
+ 'product_id': product.id,
+ 'product_min_qty': 1,
+ 'product_max_qty': 1,
+ 'route_id': buy_route.id,
+ })
+ rr.action_replenish()
+
+ move_stock, move_check = self.env['stock.move'].search([('product_id', '=', product.id)])
+
+ self.assertRecordValues(move_check | move_stock, [
+ {'location_id': self.warehouse.wh_input_stock_loc_id.id, 'location_dest_id': self.warehouse.wh_qc_stock_loc_id.id, 'state': 'waiting', 'move_dest_ids': move_stock.ids},
+ {'location_id': self.warehouse.wh_qc_stock_loc_id.id, 'location_dest_id': self.warehouse.lot_stock_id.id, 'state': 'waiting', 'move_dest_ids': []},
+ ])
+
+ po = self.env['purchase.order'].search([('partner_id', '=', vendor.id)])
+ self.assertTrue(po)
+
+ po.button_confirm()
+ move_in = po.picking_ids.move_ids
+ self.assertEqual(move_in.move_dest_ids.ids, move_check.ids)
+
+ def test_procurement_with_preferred_route_2(self):
+ """
+ Check that the route set in the product is taken into account
+ when the product have a supplier and bom.
+ """
+ manu_route = self.warehouse.manufacture_pull_id.route_id
+ buy_route = self.warehouse.buy_pull_id.route_id
+
+ vendor = self.env['res.partner'].create({'name': 'super vendor'})
+
+ product = self.env['product.product'].create({
+ 'name': 'super product',
+ 'type': 'product',
+ 'seller_ids': [(0, 0, {'partner_id': vendor.id})],
+ 'route_ids': buy_route,
+ })
+ self.env['mrp.bom'].create({
+ 'product_tmpl_id': product.product_tmpl_id.id,
+ 'product_qty': 1.0,
+ 'product_uom_id': product.uom_id.id,
+ })
+ # create a need of the product with a picking
+ warehouse = self.env['stock.warehouse'].search([('company_id', '=', self.env.company.id)], limit=1)
+ picking = self.env['stock.picking'].create({
+ 'location_id': warehouse.lot_stock_id.id,
+ 'location_dest_id': self.env.ref('stock.stock_location_customers').id,
+ 'picking_type_id': warehouse.out_type_id.id,
+ 'move_ids': [(0, 0, {
+ 'name': product.name,
+ 'product_id': product.id,
+ 'product_uom': product.uom_id.id,
+ 'product_uom_qty': 1,
+ 'location_id': warehouse.lot_stock_id.id,
+ 'location_dest_id': self.env.ref('stock.stock_location_customers').id,
+ })]
+ })
+ picking.action_assign()
+ self.env['stock.warehouse.orderpoint']._get_orderpoint_action()
+ orderpoint_product = self.env['stock.warehouse.orderpoint'].search(
+ [('product_id', '=', product.id)])
+ self.assertEqual(orderpoint_product.route_id, buy_route, "The route buy should be set on the orderpoint")
+ # Delete the orderpoint to generate a new one with the manufacture route
+ orderpoint_product.unlink()
+ # switch the product route to manufacture
+ product.write({'route_ids': [(3, buy_route.id), (4, manu_route.id)]})
+ self.env['stock.warehouse.orderpoint']._get_orderpoint_action()
+ orderpoint_product = self.env['stock.warehouse.orderpoint'].search(
+ [('product_id', '=', product.id)])
+ self.assertEqual(orderpoint_product.route_id, manu_route, "The route manufacture should be set on the orderpoint")
+
+ def test_compute_bom_days_00(self):
+ """Check Days to prepare Manufacturing Order are correctly computed when
+ Security Lead Time and Days to Purchase are set.
+ """
+ purchase_route = self.env.ref("purchase_stock.route_warehouse0_buy")
+ manufacture_route = self.env['stock.route'].search([('name', '=', 'Manufacture')])
+ vendor = self.env['res.partner'].create({'name': 'super vendor'})
+
+ company_1 = self.kit_parent.bom_ids.company_id
+ company_2 = self.env['res.company'].create({
+ 'name': 'TestCompany2',
+ })
+
+ company_1.po_lead = 0
+ company_1.days_to_purchase = 0
+ company_1.manufacturing_lead = 0
+ company_2.po_lead = 0
+ company_2.days_to_purchase = 0
+ company_2.manufacturing_lead = 0
+
+ components = self.component_a | self.component_b | self.component_c | self.component_d | self.component_e | self.component_f | self.component_g
+ kits = self.kit_parent | self.kit_1 | self.kit_2 | self.kit_3
+ kits.route_ids = [(6, 0, manufacture_route.ids)]
+ components.write({
+ 'route_ids': [(6, 0, purchase_route.ids)],
+ 'seller_ids': [(0, 0, {
+ 'partner_id': vendor.id,
+ 'min_qty': 1,
+ 'price': 1,
+ 'delay': 1,
+ })],
+ })
+
+ bom_kit_parent = self.kit_parent.bom_ids
+ bom_kit_parent.action_compute_bom_days()
+ self.assertEqual(bom_kit_parent.days_to_prepare_mo, 1)
+
+ # set "Security Lead Time" for Purchase and manufacturing, and "Days to Purchase"
+ company_1.po_lead = 10
+ company_1.days_to_purchase = 10
+ company_1.manufacturing_lead = 10
+ company_2.po_lead = 20
+ company_2.days_to_purchase = 20
+ company_2.manufacturing_lead = 20
+
+ # check "Security Lead Time" and "Days to Purchase" will also be included if bom has company_id
+ bom_kit_parent.action_compute_bom_days()
+ self.assertEqual(bom_kit_parent.days_to_prepare_mo, 10 + 10 + 10 + 10 + 1)
+
+ self.kit_1.bom_ids.company_id = company_2
+ bom_kit_parent.action_compute_bom_days()
+ self.assertEqual(bom_kit_parent.days_to_prepare_mo, 20 + 20 + 20 + 10 + 1)
+
+ # check "Security Lead Time" and "Days to Purchase" will won't be included if bom doesn't have company_id
+ kits.bom_ids.company_id = False
+ bom_kit_parent.action_compute_bom_days()
+ self.assertEqual(bom_kit_parent.days_to_prepare_mo, 1)
+
+ def test_orderpoint_with_manufacture_security_lead_time(self):
+ """
+ Test that a manufacturing order is created with the correct date_start
+ when we have an order point with the preferred route set to "manufacture"
+ and the current company has a manufacturing security lead time set.
+ """
+ # set purchase security lead time to 20 days
+ self.env.company.po_lead = 20
+ # set manufacturing security lead time to 25 days
+ self.env.company.manufacturing_lead = 25
+ product = self.env['product.product'].create({
+ 'name': 'super product',
+ 'type': 'product',
+ #set route to manufacture + buy
+ 'route_ids': [
+ (4, self.env.ref('mrp.route_warehouse0_manufacture').id),
+ (4, self.env.ref('purchase_stock.route_warehouse0_buy').id)
+ ],
+ 'seller_ids': [(0, 0, {
+ 'partner_id': self.env['res.partner'].create({'name': 'super vendor'}).id,
+ 'min_qty': 1,
+ 'price': 1,
+ })],
+ })
+ self.env['mrp.bom'].create({
+ 'product_tmpl_id': product.product_tmpl_id.id,
+ 'produce_delay': 1,
+ 'product_qty': 1,
+ })
+ # create a orderpoint to generate a need of the product with perefered route manufacture
+ orderpoint = self.env['stock.warehouse.orderpoint'].create({
+ 'product_id': product.id,
+ 'qty_to_order': 5,
+ 'warehouse_id': self.warehouse.id,
+ 'route_id': self.env.ref('mrp.route_warehouse0_manufacture').id,
+ })
+ # lead_days_date should be today + manufacturing security lead time + product manufacturing lead time
+ self.assertEqual(orderpoint.lead_days_date, (fields.Date.today() + timedelta(days=25) + timedelta(days=1)))
+ orderpoint.action_replenish()
+ mo = self.env['mrp.production'].search([('product_id', '=', product.id)])
+ self.assertEqual(mo.product_uom_qty, 5)
+ self.assertEqual(mo.date_start.date(), fields.Date.today())
+
+ def test_mo_overview(self):
+ component = self.env['product.product'].create({
+ 'name': 'component',
+ 'type': 'product',
+ 'standard_price': 80,
+ 'seller_ids': [(0, 0, {
+ 'partner_id': self.env['res.partner'].create({'name': 'super vendor'}).id,
+ 'min_qty': 3,
+ 'price': 10,
+ })],
+ })
+ finished_product = self.env['product.product'].create({
+ 'name': 'finished_product',
+ 'type': 'product',
+ })
+ self.env['mrp.bom'].create({
+ 'product_tmpl_id': finished_product.product_tmpl_id.id,
+ 'product_qty': 1,
+ 'bom_line_ids': [(0, 0, {
+ 'product_id': component.id,
+ 'product_qty': 2,
+ 'product_uom_id': component.uom_id.id
+ })],
+ })
+ mo = self.env['mrp.production'].create({
+ 'product_id': finished_product.id,
+ 'product_qty': 1,
+ 'product_uom_id': finished_product.uom_id.id,
+ })
+ self.env.flush_all() # flush to correctly build report
+ report_values = self.env['report.mrp.report_mo_overview']._get_report_data(mo.id)['components'][0]['summary']
+ self.assertEqual(report_values['name'], component.name)
+ self.assertEqual(report_values['quantity'], 2)
+ self.assertEqual(report_values['mo_cost'], 160)
+ # Create a second MO with the minimum seller quantity to check that the cost is correctly calculated using the seller's price
+ mo_2 = self.env['mrp.production'].create({
+ 'product_id': finished_product.id,
+ 'product_qty': 2,
+ 'product_uom_id': finished_product.uom_id.id,
+ })
+ self.env.flush_all()
+ report_values = self.env['report.mrp.report_mo_overview']._get_report_data(mo_2.id)['components'][0]['summary']
+ self.assertEqual(report_values['quantity'], 4)
+ self.assertEqual(report_values['mo_cost'], 40)
+
+ def test_bom_report_incoming_po(self):
+ """ Test report bom structure with duplicated components
+ With enough stock for the first line and two incoming
+ POs for the second line and third line.
+ """
+ location = self.stock_location
+ uom_unit = self.env.ref('uom.product_uom_unit')
+ final_product_tmpl = self.env['product.template'].create({'name': 'Final Product', 'type': 'product'})
+ component_product = self.env['product.product'].create({'name': 'Compo 1', 'type': 'product'})
+
+ self.env['stock.quant']._update_available_quantity(component_product, location, 3.0)
+
+ bom = self.env['mrp.bom'].create({
+ 'product_tmpl_id': final_product_tmpl.id,
+ 'product_uom_id': self.uom_unit.id,
+ 'product_qty': 1.0,
+ 'type': 'normal',
+ 'bom_line_ids': [
+ Command.create({
+ 'product_id': component_product.id,
+ 'product_qty': 3,
+ 'product_uom_id': uom_unit.id,
+ }),
+ Command.create({
+ 'product_id': component_product.id,
+ 'product_qty': 3,
+ 'product_uom_id': uom_unit.id,
+ }),
+ Command.create({
+ 'product_id': component_product.id,
+ 'product_qty': 4,
+ 'product_uom_id': uom_unit.id,
+ })
+ ]
+ })
+ def create_order(product_id, partner_id, date_order):
+ f = Form(self.env['purchase.order'])
+ f.partner_id = partner_id
+ f.date_order = date_order
+ with f.order_line.new() as line:
+ line.product_id = product_id
+ line.product_qty = 3.0
+ line.price_unit = 10
+ return f.save()
+ partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ # Create and confirm two POs with 3 component_product at different date
+ po_today = create_order(component_product, partner, fields.Datetime.now())
+ po_5days = create_order(component_product, partner, fields.Datetime.now() + timedelta(days=5))
+
+ po_today.button_confirm()
+ po_5days.button_confirm()
+ report_values = self.env['report.mrp.report_bom_structure']._get_report_data(bom_id=bom.id)
+ line_values = report_values['lines']['components'][0]
+ self.assertEqual(line_values['availability_state'], 'estimated', 'The merged components should be estimated.')
+
+ def test_bom_report_incoming_po2(self):
+ """ Test report bom structure with duplicated components
+ With an incoming PO for the first and second line.
+ """
+ uom_unit = self.env.ref('uom.product_uom_unit')
+ final_product_tmpl = self.env['product.template'].create({'name': 'Final Product', 'type': 'product'})
+ component_product = self.env['product.product'].create({'name': 'Compo 1', 'type': 'product'})
+
+ bom = self.env['mrp.bom'].create({
+ 'product_tmpl_id': final_product_tmpl.id,
+ 'product_uom_id': self.uom_unit.id,
+ 'product_qty': 1.0,
+ 'type': 'normal',
+ 'bom_line_ids': [
+ Command.create({
+ 'product_id': component_product.id,
+ 'product_qty': 3,
+ 'product_uom_id': uom_unit.id,
+ }),
+ Command.create({
+ 'product_id': component_product.id,
+ 'product_qty': 3,
+ 'product_uom_id': uom_unit.id,
+ }),
+ ]
+ })
+ partner = self.env['res.partner'].create({'name': 'My Test Partner'})
+ # Create and confirm one PO with 6 component_products.
+ f = Form(self.env['purchase.order'])
+ f.partner_id = partner
+ f.date_order = fields.Datetime.now()
+ with f.order_line.new() as line:
+ line.product_id = component_product
+ line.product_qty = 6.0
+ line.price_unit = 10
+ po_today = f.save()
+ po_today.button_confirm()
+ report_values = self.env['report.mrp.report_bom_structure']._get_report_data(bom_id=bom.id)
+ line_values = report_values['lines']['components'][0]
+ self.assertEqual(line_values['availability_state'], 'expected', 'The first component should be expected as there is an incoming PO.')
diff --git a/views/mrp_bom_views.xml b/views/mrp_bom_views.xml
new file mode 100644
index 0000000..16fd236
--- /dev/null
+++ b/views/mrp_bom_views.xml
@@ -0,0 +1,13 @@
+
+
+
+ mrp.bom.view.form.inherited.purchase.mrp
+ mrp.bom
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/views/mrp_production_views.xml b/views/mrp_production_views.xml
new file mode 100644
index 0000000..99ca8b8
--- /dev/null
+++ b/views/mrp_production_views.xml
@@ -0,0 +1,19 @@
+
+
+
+ mrp.production.inherited.form.purchase
+ mrp.production
+ 32
+
+
+
+
+
+
+
+
diff --git a/views/purchase_order_views.xml b/views/purchase_order_views.xml
new file mode 100644
index 0000000..7520417
--- /dev/null
+++ b/views/purchase_order_views.xml
@@ -0,0 +1,18 @@
+
+
+
+ purchase.order.inherited.form.mrp
+ purchase.order
+
+
+
+
+
+
+
+
diff --git a/views/stock_orderpoint_views.xml b/views/stock_orderpoint_views.xml
new file mode 100644
index 0000000..0ebf78b
--- /dev/null
+++ b/views/stock_orderpoint_views.xml
@@ -0,0 +1,13 @@
+
+
+
+ stock.warehouse.orderpoint.tree.editable.inherit.show_route
+ stock.warehouse.orderpoint
+
+
+
+ show
+
+
+
+