Начальное наполнение
This commit is contained in:
parent
960c13f9d2
commit
170e768d50
4
__init__.py
Normal file
4
__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import models
|
19
__manifest__.py
Normal file
19
__manifest__.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'Subcontracting Management with Stock Valuation',
|
||||||
|
'version': '0.1',
|
||||||
|
'category': 'Hidden',
|
||||||
|
'description': """
|
||||||
|
This bridge module allows to manage subcontracting with valuation.
|
||||||
|
""",
|
||||||
|
'depends': ['mrp_subcontracting', 'mrp_account'],
|
||||||
|
'installable': True,
|
||||||
|
'auto_install': True,
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
'data': [
|
||||||
|
'security/mrp_subcontracting_account_security.xml',
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
],
|
||||||
|
}
|
40
i18n/ar.po
Normal file
40
i18n/ar.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "متغير المنتج "
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "أمر الإنتاج"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "حركة المخزون"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "تحويل "
|
41
i18n/bg.po
Normal file
41
i18n/bg.po
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Maria Boyadjieva <marabo2000@gmail.com>, 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Продуктов вариант"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Производствена поръчка"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Движение в склада"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Прехвърлете"
|
42
i18n/ca.po
Normal file
42
i18n/ca.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Óscar Fonseca <tecnico@pyming.com>, 2023
|
||||||
|
# Manel Fernandez Ramirez <manelfera@outlook.com>, 2023
|
||||||
|
# Quim - eccit <quim@eccit.com>, 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: Quim - eccit <quim@eccit.com>, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Variant de producte"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Ordre de producció"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Moviment d'estoc"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Transferència"
|
42
i18n/cs.po
Normal file
42
i18n/cs.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Jakub Smolka, 2023
|
||||||
|
# Ivana Bartonkova, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Produktová varianta"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Výrobní příkaz"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Pohyb zásob"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Převod"
|
40
i18n/da.po
Normal file
40
i18n/da.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Varevariant"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Produktionsordre"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Lagerflytning"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Overfør"
|
40
i18n/de.po
Normal file
40
i18n/de.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Produktvariante"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Fertigungsauftrag"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Lagerbuchung"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Transfer"
|
41
i18n/es.po
Normal file
41
i18n/es.po
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Wil Odoo, 2023
|
||||||
|
# Larissa Manderfeld, 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: Larissa Manderfeld, 2023\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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Variante de producto"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Orden de producción"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Movimiento de existencias"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Albarán"
|
40
i18n/es_419.po
Normal file
40
i18n/es_419.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Variante del producto"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Orden de producción"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Movimiento de existencias"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Trasladar"
|
42
i18n/et.po
Normal file
42
i18n/et.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Aavastik <martin@avalah.ee>, 2023
|
||||||
|
# Eneli Õigus <enelioigus@gmail.com>, 2023
|
||||||
|
# Patrick-Jordan Kiudorv, 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: Patrick-Jordan Kiudorv, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Toote variatsioon"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Tootmiskäsk"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Laoliikumine"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Siirded"
|
41
i18n/fa.po
Normal file
41
i18n/fa.po
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Hamed Mohammadi <hamed@dehongi.com>, 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "گونه محصول"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "سفارش تولید"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "انتقال موجودی"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "انتقال"
|
42
i18n/fi.po
Normal file
42
i18n/fi.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Tuomo Aura <tuomo.aura@web-veistamo.fi>, 2023
|
||||||
|
# Jussi Lehto <jussi@gulfeo.com>, 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Tuotevariaatio"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Valmistustilaus"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Varastosiirto"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Siirto"
|
40
i18n/fr.po
Normal file
40
i18n/fr.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Variante de produit"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Ordre de production"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Mouvement de stock"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Transfert"
|
42
i18n/he.po
Normal file
42
i18n/he.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# ExcaliberX <excaliberx@gmail.com>, 2023
|
||||||
|
# דודי מלכה <Dudimalka6@gmail.com>, 2023
|
||||||
|
# ZVI BLONDER <ZVIBLONDER@gmail.com>, 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: ZVI BLONDER <ZVIBLONDER@gmail.com>, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "וריאנט מוצר"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "הוראת ייצור"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "תנועת מלאי"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "העברה"
|
42
i18n/hu.po
Normal file
42
i18n/hu.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# krnkris, 2023
|
||||||
|
# Tamás Németh <ntomasz81@gmail.com>, 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: Tamás Németh <ntomasz81@gmail.com>, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Termékváltozat"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Termelési rendelés"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Készletmozgás"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Átmozgatás"
|
40
i18n/id.po
Normal file
40
i18n/id.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Varian Produk"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Order Produksi"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Pergerakan Stok"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Transfer"
|
40
i18n/it.po
Normal file
40
i18n/it.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Variante prodotto"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Ordine di produzione"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Movimento di magazzino"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Trasferisci"
|
40
i18n/ja.po
Normal file
40
i18n/ja.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "プロダクトバリアント"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "製造オーダ"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "在庫移動"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "移動"
|
40
i18n/ko.po
Normal file
40
i18n/ko.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "품목 세부선택"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "생산 주문"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "재고 이동"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "전송"
|
42
i18n/lt.po
Normal file
42
i18n/lt.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# UAB "Draugiški sprendimai" <transifex@draugiskisprendimai.lt>, 2023
|
||||||
|
# Linas Versada <linaskrisiukenas@gmail.com>, 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: Linas Versada <linaskrisiukenas@gmail.com>, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Produkto variantas"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Gamybos užsakymas"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Atsargų perkėlimas"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Perkelti"
|
42
i18n/lv.po
Normal file
42
i18n/lv.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# JanisJanis <jbojars@gmail.com>, 2023
|
||||||
|
# Armīns Jeltajevs <armins.jeltajevs@gmail.com>, 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Produkta variants"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Ražošanas orderis"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Krājumu kustība"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Transfer"
|
36
i18n/mrp_subcontracting_account.pot
Normal file
36
i18n/mrp_subcontracting_account.pot
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr ""
|
40
i18n/nl.po
Normal file
40
i18n/nl.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Productvariant"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Productieorder"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Voorraadverplaatsing"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Verplaatsing"
|
40
i18n/pl.po
Normal file
40
i18n/pl.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Wariant produktu"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Zamówienie produkcji"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Przesunięcie"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Przekaz"
|
40
i18n/pt.po
Normal file
40
i18n/pt.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Variante de Artigo"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Ordem de Produção"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Movimento do Stock"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Transferência"
|
41
i18n/pt_BR.po
Normal file
41
i18n/pt_BR.po
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Wil Odoo, 2023
|
||||||
|
# Maitê Dietze, 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: Maitê Dietze, 2024\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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Variante do produto"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Ordem de produção"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Movimentação de estoque"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Transferência"
|
41
i18n/ru.po
Normal file
41
i18n/ru.po
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Martin Trigaux, 2023
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Вариант продукта"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Заказ на производство"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Движение запасов"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Перевод"
|
40
i18n/sk.po
Normal file
40
i18n/sk.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Varianta produktu"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Výrobná objednávka"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Pohyb skladu"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Prevod"
|
42
i18n/sl.po
Normal file
42
i18n/sl.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Matjaz Mozetic <m.mozetic@matmoz.si>, 2023
|
||||||
|
# Tomaž Jug <tomaz@editor.si>, 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Različica izdelka"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Proizvodni nalog"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Premik zaloge"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Prenos"
|
40
i18n/sr.po
Normal file
40
i18n/sr.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 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: Dragan Vukosavljevic <dragan.vukosavljevic@gmail.com>, 2023\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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Varijanta proizvoda"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Nalog za proizvodnju"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Premeštanje zaliha"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Prenos"
|
42
i18n/sv.po
Normal file
42
i18n/sv.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Anders Wallenquist <anders.wallenquist@vertel.se>, 2023
|
||||||
|
# Simon S, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Produktvariant"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Tillverkningsorder"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Lagerflytt"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Flytt"
|
40
i18n/th.po
Normal file
40
i18n/th.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "ตัวเลือกสินค้า"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "คำสั่งผลิต"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "ย้ายสต็อก"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "โอนย้าย"
|
42
i18n/tr.po
Normal file
42
i18n/tr.po
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2023
|
||||||
|
# Murat Kaplan <muratk@projetgrup.com>, 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Ürün Varyantı"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Üretim Emri"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Stok Hareketi"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Aktarım"
|
40
i18n/uk.po
Normal file
40
i18n/uk.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Варіант товару"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Замовлення на виробництво"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Складське переміщення "
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Переміщення"
|
40
i18n/vi.po
Normal file
40
i18n/vi.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "Biến thể sản phẩm"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "Lệnh sản xuất"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "Dịch chuyển tồn kho"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "Điều chuyển"
|
41
i18n/zh_CN.po
Normal file
41
i18n/zh_CN.po
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Wil Odoo, 2023
|
||||||
|
# Jeffery CHEN <jeffery9@gmail.com>, 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: Jeffery CHEN <jeffery9@gmail.com>, 2023\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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "产品变体"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "生产订单"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "库存移动"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "转账"
|
40
i18n/zh_TW.po
Normal file
40
i18n/zh_TW.po
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * mrp_subcontracting_account
|
||||||
|
#
|
||||||
|
# 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: 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: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_product_product
|
||||||
|
msgid "Product Variant"
|
||||||
|
msgstr "產品款式"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_mrp_production
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "製造訂單"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "庫存移動"
|
||||||
|
|
||||||
|
#. module: mrp_subcontracting_account
|
||||||
|
#: model:ir.model,name:mrp_subcontracting_account.model_stock_picking
|
||||||
|
msgid "Transfer"
|
||||||
|
msgstr "轉移"
|
7
models/__init__.py
Normal file
7
models/__init__.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import mrp_production
|
||||||
|
from . import stock_picking
|
||||||
|
from . import product_product
|
||||||
|
from . import stock_move
|
16
models/mrp_production.py
Normal file
16
models/mrp_production.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class MrpProduction(models.Model):
|
||||||
|
_inherit = 'mrp.production'
|
||||||
|
|
||||||
|
def _cal_price(self, consumed_moves):
|
||||||
|
finished_move = self.move_finished_ids.filtered(lambda x: x.product_id == self.product_id and x.state not in ('done', 'cancel') and x.quantity > 0)
|
||||||
|
# Take the price unit of the reception move
|
||||||
|
last_done_receipt = finished_move.move_dest_ids.filtered(lambda m: m.state == 'done')[-1:]
|
||||||
|
if last_done_receipt.is_subcontract:
|
||||||
|
self.extra_cost = last_done_receipt._get_price_unit()
|
||||||
|
return super()._cal_price(consumed_moves=consumed_moves)
|
18
models/product_product.py
Normal file
18
models/product_product.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
class ProductProduct(models.Model):
|
||||||
|
_inherit = 'product.product'
|
||||||
|
|
||||||
|
def _compute_bom_price(self, bom, boms_to_recompute=False, byproduct_bom=False):
|
||||||
|
""" Add the price of the subcontracting supplier if it exists with the bom configuration.
|
||||||
|
"""
|
||||||
|
price = super()._compute_bom_price(bom, boms_to_recompute, byproduct_bom)
|
||||||
|
if bom and bom.type == 'subcontract':
|
||||||
|
seller = self._select_seller(quantity=bom.product_qty, uom_id=bom.product_uom_id, params={'subcontractor_ids': bom.subcontractor_ids})
|
||||||
|
if seller:
|
||||||
|
seller_price = seller.currency_id._convert(seller.price, self.env.company.currency_id, (bom.company_id or self.env.company), fields.Date.today())
|
||||||
|
price += seller.product_uom._compute_price(seller_price, self.uom_id)
|
||||||
|
return price
|
68
models/stock_move.py
Normal file
68
models/stock_move.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class StockMove(models.Model):
|
||||||
|
_inherit = 'stock.move'
|
||||||
|
|
||||||
|
def _should_force_price_unit(self):
|
||||||
|
self.ensure_one()
|
||||||
|
return self.is_subcontract or super()._should_force_price_unit()
|
||||||
|
|
||||||
|
def _generate_valuation_lines_data(self, partner_id, qty, debit_value, credit_value, debit_account_id, credit_account_id, svl_id, description):
|
||||||
|
rslt = super()._generate_valuation_lines_data(partner_id, qty, debit_value, credit_value, debit_account_id, credit_account_id, svl_id, description)
|
||||||
|
|
||||||
|
subcontract_production = self.production_id.filtered(lambda p: p.subcontractor_id)
|
||||||
|
if not subcontract_production:
|
||||||
|
return rslt
|
||||||
|
# split the credit line to two, one for component cost, one for subcontracting service cost
|
||||||
|
currency = self.company_id.currency_id
|
||||||
|
if self.product_id.cost_method == 'standard':
|
||||||
|
# In case of standard price, the component cost is the cost of the product
|
||||||
|
# the subcontracting service cost may not represent the real cost of the subcontracting service
|
||||||
|
# the difference should be posted in price difference account in the end
|
||||||
|
component_cost = currency.round(sum(m.price_unit * m.product_uom_qty for m in subcontract_production.move_raw_ids))
|
||||||
|
subcontract_service_cost = credit_value - component_cost
|
||||||
|
else:
|
||||||
|
subcontract_service_cost = currency.round(subcontract_production.extra_cost * qty)
|
||||||
|
component_cost = credit_value - subcontract_service_cost
|
||||||
|
if not currency.is_zero(subcontract_service_cost):
|
||||||
|
del rslt['credit_line_vals']
|
||||||
|
service_cost_account = self.product_id.product_tmpl_id.get_product_accounts()['stock_input']
|
||||||
|
rslt['subcontract_credit_line_vals'] = {
|
||||||
|
'name': description,
|
||||||
|
'product_id': self.product_id.id,
|
||||||
|
'quantity': qty,
|
||||||
|
'product_uom_id': self.product_id.uom_id.id,
|
||||||
|
'ref': description,
|
||||||
|
'partner_id': partner_id,
|
||||||
|
'balance': -subcontract_service_cost,
|
||||||
|
'account_id': service_cost_account.id,
|
||||||
|
}
|
||||||
|
rslt['component_credit_line_vals'] = {
|
||||||
|
'name': description,
|
||||||
|
'product_id': self.product_id.id,
|
||||||
|
'quantity': qty,
|
||||||
|
'product_uom_id': self.product_id.uom_id.id,
|
||||||
|
'ref': description,
|
||||||
|
'partner_id': partner_id,
|
||||||
|
'balance': -component_cost,
|
||||||
|
'account_id': credit_account_id,
|
||||||
|
}
|
||||||
|
# if svl passed is not linked to the move in self, the valuation is a correction and should always credit the
|
||||||
|
# `stock_input` account as it adds directly to the value of the subcontracted product
|
||||||
|
elif svl_id and self.stock_valuation_layer_ids.ids and svl_id not in self.stock_valuation_layer_ids.ids:
|
||||||
|
rslt['credit_line_vals']['account_id'] = self.product_id.product_tmpl_id.get_product_accounts()['stock_input'].id
|
||||||
|
return rslt
|
||||||
|
|
||||||
|
def _get_dest_account(self, account_data):
|
||||||
|
if self.raw_material_production_id.subcontractor_id:
|
||||||
|
return account_data['production'].id
|
||||||
|
return super()._get_dest_account(account_data)
|
||||||
|
|
||||||
|
def _get_src_account(self, account_data):
|
||||||
|
if self.production_id.subcontractor_id:
|
||||||
|
return account_data['production'].id
|
||||||
|
return super()._get_src_account(account_data)
|
19
models/stock_picking.py
Normal file
19
models/stock_picking.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import models
|
||||||
|
from odoo.osv.expression import OR
|
||||||
|
|
||||||
|
|
||||||
|
class StockPicking(models.Model):
|
||||||
|
_inherit = 'stock.picking'
|
||||||
|
|
||||||
|
def action_view_stock_valuation_layers(self):
|
||||||
|
action = super(StockPicking, self).action_view_stock_valuation_layers()
|
||||||
|
subcontracted_productions = self._get_subcontract_production()
|
||||||
|
if not subcontracted_productions:
|
||||||
|
return action
|
||||||
|
domain = action['domain']
|
||||||
|
domain_subcontracting = [('id', 'in', (subcontracted_productions.move_raw_ids | subcontracted_productions.move_finished_ids).stock_valuation_layer_ids.ids)]
|
||||||
|
domain = OR([domain, domain_subcontracting])
|
||||||
|
return dict(action, domain=domain)
|
3
security/ir.model.access.csv
Normal file
3
security/ir.model.access.csv
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
|
access_subcontracting_portal_analytic_account,subcontracting.portal.analytic_account,mrp_account.model_account_analytic_account,base.group_portal,1,0,0,0
|
||||||
|
access_subcontracting_portal_analytic_line,subcontracting.portal.analytic_line,mrp_account.model_account_analytic_line,base.group_portal,1,1,0,0
|
|
18
security/mrp_subcontracting_account_security.xml
Normal file
18
security/mrp_subcontracting_account_security.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record model="ir.rule" id="analytic_accout_subcontractor_rule">
|
||||||
|
<field name="name">Analytic Account Subcontractor</field>
|
||||||
|
<field name="model_id" ref="mrp_account.model_account_analytic_account"/>
|
||||||
|
<field name="domain_force">[('bom_ids', 'in', user.partner_id.commercial_partner_id.bom_ids.ids)]</field>
|
||||||
|
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.rule" id="analytic_accout_line_subcontractor_rule">
|
||||||
|
<field name="name">Analytic Account Line Subcontractor</field>
|
||||||
|
<field name="model_id" ref="mrp_account.model_account_analytic_line"/>
|
||||||
|
<field name="domain_force">[('account_id.bom_ids', 'in', user.partner_id.commercial_partner_id.bom_ids.ids)]</field>
|
||||||
|
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
4
tests/__init__.py
Normal file
4
tests/__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from . import test_subcontracting_account
|
571
tests/test_subcontracting_account.py
Normal file
571
tests/test_subcontracting_account.py
Normal file
@ -0,0 +1,571 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from odoo import Command, fields
|
||||||
|
from odoo.tests.common import Form, tagged
|
||||||
|
from odoo.tools.float_utils import float_round, float_compare
|
||||||
|
|
||||||
|
from odoo.addons.mrp_subcontracting.tests.common import TestMrpSubcontractingCommon
|
||||||
|
from odoo.addons.mrp_account.tests.test_bom_price import TestBomPriceCommon
|
||||||
|
|
||||||
|
|
||||||
|
@tagged('post_install', '-at_install')
|
||||||
|
class TestAccountSubcontractingFlows(TestMrpSubcontractingCommon):
|
||||||
|
def test_subcontracting_account_flow_1(self):
|
||||||
|
# pylint: disable=bad-whitespace
|
||||||
|
self.stock_location = self.env.ref('stock.stock_location_stock')
|
||||||
|
self.customer_location = self.env.ref('stock.stock_location_customers')
|
||||||
|
self.supplier_location = self.env.ref('stock.stock_location_suppliers')
|
||||||
|
self.uom_unit = self.env.ref('uom.product_uom_unit')
|
||||||
|
|
||||||
|
product_category_all = self.env.ref('product.product_category_all')
|
||||||
|
product_category_all.property_cost_method = 'fifo'
|
||||||
|
product_category_all.property_valuation = 'real_time'
|
||||||
|
in_account = self.env['account.account'].create({
|
||||||
|
'name': 'IN Account',
|
||||||
|
'code': '000001',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
out_account = self.env['account.account'].create({
|
||||||
|
'name': 'OUT Account',
|
||||||
|
'code': '000002',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
valu_account = self.env['account.account'].create({
|
||||||
|
'name': 'VALU Account',
|
||||||
|
'code': '000003',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
production_cost_account = self.env['account.account'].create({
|
||||||
|
'name': 'PROD COST Account',
|
||||||
|
'code': '000004',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
product_category_all.property_stock_account_input_categ_id = in_account
|
||||||
|
product_category_all.property_stock_account_output_categ_id = out_account
|
||||||
|
product_category_all.property_stock_account_production_cost_id = production_cost_account
|
||||||
|
product_category_all.property_stock_valuation_account_id = valu_account
|
||||||
|
stock_in_acc_id = product_category_all.property_stock_account_input_categ_id.id
|
||||||
|
stock_out_acc_id = product_category_all.property_stock_account_output_categ_id.id
|
||||||
|
stock_valu_acc_id = product_category_all.property_stock_valuation_account_id.id
|
||||||
|
stock_cop_acc_id = product_category_all.property_stock_account_production_cost_id.id
|
||||||
|
|
||||||
|
# IN 10@10 comp1 10@20 comp2
|
||||||
|
move1 = self.env['stock.move'].create({
|
||||||
|
'name': 'IN 10 units @ 10.00 per unit',
|
||||||
|
'location_id': self.supplier_location.id,
|
||||||
|
'location_dest_id': self.env.company.subcontracting_location_id.id,
|
||||||
|
'product_id': self.comp1.id,
|
||||||
|
'product_uom': self.uom_unit.id,
|
||||||
|
'product_uom_qty': 10.0,
|
||||||
|
'price_unit': 10.0,
|
||||||
|
})
|
||||||
|
move1._action_confirm()
|
||||||
|
move1._action_assign()
|
||||||
|
move1.move_line_ids.quantity = 10.0
|
||||||
|
move1.picked = True
|
||||||
|
move1._action_done()
|
||||||
|
move2 = self.env['stock.move'].create({
|
||||||
|
'name': 'IN 10 units @ 20.00 per unit',
|
||||||
|
'location_id': self.supplier_location.id,
|
||||||
|
'location_dest_id': self.env.company.subcontracting_location_id.id,
|
||||||
|
'product_id': self.comp2.id,
|
||||||
|
'product_uom': self.uom_unit.id,
|
||||||
|
'product_uom_qty': 10.0,
|
||||||
|
'price_unit': 20.0,
|
||||||
|
})
|
||||||
|
move2._action_confirm()
|
||||||
|
move2._action_assign()
|
||||||
|
move2.move_line_ids.quantity = 10.0
|
||||||
|
move2.picked = True
|
||||||
|
move2._action_done()
|
||||||
|
|
||||||
|
all_amls_ids = self.env['account.move.line'].search([]).ids
|
||||||
|
|
||||||
|
picking_form = Form(self.env['stock.picking'])
|
||||||
|
picking_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||||
|
picking_form.partner_id = self.subcontractor_partner1
|
||||||
|
with picking_form.move_ids_without_package.new() as move:
|
||||||
|
move.product_id = self.finished
|
||||||
|
move.product_uom_qty = 1
|
||||||
|
picking_receipt = picking_form.save()
|
||||||
|
picking_receipt.move_ids.price_unit = 15.0
|
||||||
|
|
||||||
|
picking_receipt.action_confirm()
|
||||||
|
# Suppose the additional cost changes:
|
||||||
|
picking_receipt.move_ids.price_unit = 30.0
|
||||||
|
picking_receipt.move_ids.quantity = 1.0
|
||||||
|
picking_receipt.move_ids.picked = True
|
||||||
|
picking_receipt._action_done()
|
||||||
|
|
||||||
|
mo = picking_receipt._get_subcontract_production()
|
||||||
|
# Finished is made of 1 comp1 and 1 comp2.
|
||||||
|
# Cost of comp1 = 10
|
||||||
|
# Cost of comp2 = 20
|
||||||
|
# --> Cost of finished = 10 + 20 = 30
|
||||||
|
# Additionnal cost = 30 (from the purchase order line or directly set on the stock move here)
|
||||||
|
# Total cost of subcontracting 1 unit of finished = 30 + 30 = 60
|
||||||
|
self.assertEqual(mo.move_finished_ids.stock_valuation_layer_ids.value, 60)
|
||||||
|
self.assertEqual(picking_receipt.move_ids.stock_valuation_layer_ids.value, 0)
|
||||||
|
self.assertEqual(picking_receipt.move_ids.product_id.value_svl, 60)
|
||||||
|
|
||||||
|
amls = self.env['account.move.line'].search([('id', 'not in', all_amls_ids)])
|
||||||
|
all_amls_ids += amls.ids
|
||||||
|
self.assertRecordValues(amls, [
|
||||||
|
# Receipt from subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.finished.id, 'debit': 60.0, 'credit': 0.0},
|
||||||
|
{'account_id': stock_in_acc_id, 'product_id': self.finished.id, 'debit': 0.0, 'credit': 30.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.finished.id, 'debit': 0.0, 'credit': 30.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp2.id, 'debit': 0.0, 'credit': 20.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp2.id, 'debit': 20.0, 'credit': 0.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp1.id, 'debit': 0.0, 'credit': 10.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp1.id, 'debit': 10.0, 'credit': 0.0},
|
||||||
|
])
|
||||||
|
|
||||||
|
# Do the same without any additionnal cost
|
||||||
|
picking_form = Form(self.env['stock.picking'])
|
||||||
|
picking_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||||
|
picking_form.partner_id = self.subcontractor_partner1
|
||||||
|
with picking_form.move_ids_without_package.new() as move:
|
||||||
|
move.product_id = self.finished
|
||||||
|
move.product_uom_qty = 1
|
||||||
|
picking_receipt = picking_form.save()
|
||||||
|
picking_receipt.move_ids.price_unit = 0
|
||||||
|
|
||||||
|
picking_receipt.action_confirm()
|
||||||
|
picking_receipt.move_ids.quantity = 1.0
|
||||||
|
picking_receipt.move_ids.picked = True
|
||||||
|
picking_receipt._action_done()
|
||||||
|
|
||||||
|
mo = picking_receipt._get_subcontract_production()
|
||||||
|
# In this case, since there isn't any additionnal cost, the total cost of the subcontracting
|
||||||
|
# is the sum of the components' costs: 10 + 20 = 30
|
||||||
|
self.assertEqual(mo.move_finished_ids.stock_valuation_layer_ids.value, 30)
|
||||||
|
self.assertEqual(picking_receipt.move_ids.product_id.value_svl, 90)
|
||||||
|
|
||||||
|
amls = self.env['account.move.line'].search([('id', 'not in', all_amls_ids)])
|
||||||
|
self.assertRecordValues(amls, [
|
||||||
|
# Receipt from subcontractor
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.finished.id, 'debit': 0.0, 'credit': 30.0},
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.finished.id, 'debit': 30.0, 'credit': 0.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp2.id, 'debit': 0.0, 'credit': 20.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp2.id, 'debit': 20.0, 'credit': 0.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp1.id, 'debit': 0.0, 'credit': 10.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp1.id, 'debit': 10.0, 'credit': 0.0},
|
||||||
|
])
|
||||||
|
|
||||||
|
def test_subcontracting_account_flow_2(self):
|
||||||
|
"""Test when set Cost of Production account on production location, subcontracting
|
||||||
|
won't use it.
|
||||||
|
"""
|
||||||
|
# pylint: disable=bad-whitespace
|
||||||
|
self.stock_location = self.env.ref('stock.stock_location_stock')
|
||||||
|
self.customer_location = self.env.ref('stock.stock_location_customers')
|
||||||
|
self.supplier_location = self.env.ref('stock.stock_location_suppliers')
|
||||||
|
self.uom_unit = self.env.ref('uom.product_uom_unit')
|
||||||
|
product_category_all = self.env.ref('product.product_category_all')
|
||||||
|
product_category_all.property_cost_method = 'fifo'
|
||||||
|
product_category_all.property_valuation = 'real_time'
|
||||||
|
in_account = self.env['account.account'].create({
|
||||||
|
'name': 'IN Account',
|
||||||
|
'code': '000001',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
out_account = self.env['account.account'].create({
|
||||||
|
'name': 'OUT Account',
|
||||||
|
'code': '000002',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
valu_account = self.env['account.account'].create({
|
||||||
|
'name': 'VALU Account',
|
||||||
|
'code': '000003',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
production_cost_account = self.env['account.account'].create({
|
||||||
|
'name': 'PROD COST Account',
|
||||||
|
'code': '000004',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
product_category_all.property_stock_account_input_categ_id = in_account
|
||||||
|
product_category_all.property_stock_account_output_categ_id = out_account
|
||||||
|
product_category_all.property_stock_account_production_cost_id = production_cost_account
|
||||||
|
product_category_all.property_stock_valuation_account_id = valu_account
|
||||||
|
stock_in_acc_id = product_category_all.property_stock_account_input_categ_id.id
|
||||||
|
stock_valu_acc_id = product_category_all.property_stock_valuation_account_id.id
|
||||||
|
stock_cop_acc_id = product_category_all.property_stock_account_production_cost_id.id
|
||||||
|
|
||||||
|
# set Cost of Production account on production location
|
||||||
|
cop_account = self.env['account.account'].create({
|
||||||
|
'name': 'Cost of Production',
|
||||||
|
'code': 'CoP',
|
||||||
|
"account_type": 'expense',
|
||||||
|
'reconcile': False,
|
||||||
|
})
|
||||||
|
self.comp1.property_stock_production.write({
|
||||||
|
'valuation_out_account_id': cop_account.id,
|
||||||
|
'valuation_in_account_id': cop_account.id,
|
||||||
|
})
|
||||||
|
|
||||||
|
# IN 10@10 comp1 10@20 comp2
|
||||||
|
move1 = self.env['stock.move'].create({
|
||||||
|
'name': 'IN 10 units @ 10.00 per unit',
|
||||||
|
'location_id': self.supplier_location.id,
|
||||||
|
'location_dest_id': self.env.company.subcontracting_location_id.id,
|
||||||
|
'product_id': self.comp1.id,
|
||||||
|
'product_uom': self.uom_unit.id,
|
||||||
|
'product_uom_qty': 10.0,
|
||||||
|
'price_unit': 10.0,
|
||||||
|
})
|
||||||
|
move1._action_confirm()
|
||||||
|
move1._action_assign()
|
||||||
|
move1.move_line_ids.quantity = 10.0
|
||||||
|
move1.picked = True
|
||||||
|
move1._action_done()
|
||||||
|
move2 = self.env['stock.move'].create({
|
||||||
|
'name': 'IN 10 units @ 20.00 per unit',
|
||||||
|
'location_id': self.supplier_location.id,
|
||||||
|
'location_dest_id': self.env.company.subcontracting_location_id.id,
|
||||||
|
'product_id': self.comp2.id,
|
||||||
|
'product_uom': self.uom_unit.id,
|
||||||
|
'product_uom_qty': 10.0,
|
||||||
|
'price_unit': 20.0,
|
||||||
|
})
|
||||||
|
move2._action_confirm()
|
||||||
|
move2._action_assign()
|
||||||
|
move2.move_line_ids.quantity = 10.0
|
||||||
|
move2.picked = True
|
||||||
|
move2._action_done()
|
||||||
|
|
||||||
|
all_amls_ids = self.env['account.move.line'].search([]).ids
|
||||||
|
|
||||||
|
picking_form = Form(self.env['stock.picking'])
|
||||||
|
picking_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||||
|
picking_form.partner_id = self.subcontractor_partner1
|
||||||
|
with picking_form.move_ids_without_package.new() as move:
|
||||||
|
move.product_id = self.finished
|
||||||
|
move.product_uom_qty = 1
|
||||||
|
picking_receipt = picking_form.save()
|
||||||
|
picking_receipt.move_ids.price_unit = 30.0
|
||||||
|
picking_receipt.action_confirm()
|
||||||
|
picking_receipt.move_ids.quantity = 1.0
|
||||||
|
picking_receipt.move_ids.picked = True
|
||||||
|
picking_receipt._action_done()
|
||||||
|
|
||||||
|
amls = self.env['account.move.line'].search([('id', 'not in', all_amls_ids)])
|
||||||
|
all_amls_ids += amls.ids
|
||||||
|
self.assertRecordValues(amls, [
|
||||||
|
# Receipt from subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.finished.id, 'debit': 60.0, 'credit': 0.0},
|
||||||
|
{'account_id': stock_in_acc_id, 'product_id': self.finished.id, 'debit': 0.0, 'credit': 30.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.finished.id, 'debit': 0.0, 'credit': 30.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp2.id, 'debit': 0.0, 'credit': 20.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp2.id, 'debit': 20.0, 'credit': 0.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp1.id, 'debit': 0.0, 'credit': 10.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp1.id, 'debit': 10.0, 'credit': 0.0},
|
||||||
|
])
|
||||||
|
|
||||||
|
def test_subcontracting_account_backorder(self):
|
||||||
|
""" This test uses tracked (serial and lot) component and tracked (serial) finished product
|
||||||
|
The original subcontracting production order will be split into 4 backorders. This test
|
||||||
|
ensure the extra cost asked from the subcontractor is added correctly on all the finished
|
||||||
|
product valuation layer. Not only the first one. """
|
||||||
|
todo_nb = 4
|
||||||
|
self.comp2.tracking = 'lot'
|
||||||
|
self.comp1.tracking = 'serial'
|
||||||
|
self.comp2.standard_price = 100
|
||||||
|
self.finished.tracking = 'serial'
|
||||||
|
self.env.ref('product.product_category_all').property_cost_method = 'fifo'
|
||||||
|
|
||||||
|
# Create a receipt picking from the subcontractor
|
||||||
|
picking_form = Form(self.env['stock.picking'])
|
||||||
|
picking_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||||
|
picking_form.partner_id = self.subcontractor_partner1
|
||||||
|
with picking_form.move_ids_without_package.new() as move:
|
||||||
|
move.product_id = self.finished
|
||||||
|
move.quantity = todo_nb
|
||||||
|
picking_receipt = picking_form.save()
|
||||||
|
# Mimic the extra cost on the po line
|
||||||
|
picking_receipt.move_ids.price_unit = 50
|
||||||
|
picking_receipt.action_confirm()
|
||||||
|
picking_receipt.do_unreserve()
|
||||||
|
|
||||||
|
# We should be able to call the 'record_components' button
|
||||||
|
self.assertTrue(picking_receipt.display_action_record_components)
|
||||||
|
|
||||||
|
lot_comp2 = self.env['stock.lot'].create({
|
||||||
|
'name': 'lot_comp2',
|
||||||
|
'product_id': self.comp2.id,
|
||||||
|
'company_id': self.env.company.id,
|
||||||
|
})
|
||||||
|
serials_finished = []
|
||||||
|
serials_comp1 = []
|
||||||
|
for i in range(todo_nb):
|
||||||
|
serials_finished.append(self.env['stock.lot'].create({
|
||||||
|
'name': 'serial_fin_%s' % i,
|
||||||
|
'product_id': self.finished.id,
|
||||||
|
'company_id': self.env.company.id,
|
||||||
|
}))
|
||||||
|
serials_comp1.append(self.env['stock.lot'].create({
|
||||||
|
'name': 'serials_comp1_%s' % i,
|
||||||
|
'product_id': self.comp1.id,
|
||||||
|
'company_id': self.env.company.id,
|
||||||
|
}))
|
||||||
|
|
||||||
|
for i in range(todo_nb):
|
||||||
|
action = picking_receipt.action_record_components()
|
||||||
|
mo = self.env['mrp.production'].browse(action['res_id'])
|
||||||
|
mo_form = Form(mo.with_context(**action['context']), view=action['view_id'])
|
||||||
|
mo_form.lot_producing_id = serials_finished[i]
|
||||||
|
with mo_form.move_line_raw_ids.edit(0) as ml:
|
||||||
|
self.assertEqual(ml.product_id, self.comp1)
|
||||||
|
ml.lot_id = serials_comp1[i]
|
||||||
|
with mo_form.move_line_raw_ids.edit(1) as ml:
|
||||||
|
self.assertEqual(ml.product_id, self.comp2)
|
||||||
|
ml.lot_id = lot_comp2
|
||||||
|
mo = mo_form.save()
|
||||||
|
mo.subcontracting_record_component()
|
||||||
|
|
||||||
|
# We should not be able to call the 'record_components' button
|
||||||
|
picking_receipt.move_ids.picked = True
|
||||||
|
picking_receipt.button_validate()
|
||||||
|
|
||||||
|
f_layers = self.finished.stock_valuation_layer_ids
|
||||||
|
self.assertEqual(len(f_layers), 4)
|
||||||
|
for layer in f_layers:
|
||||||
|
self.assertEqual(layer.value, 100 + 50)
|
||||||
|
|
||||||
|
def test_tracked_compo_and_backorder(self):
|
||||||
|
"""
|
||||||
|
Suppose a subcontracted product P with two tracked components, P is FIFO
|
||||||
|
Create a receipt for 10 x P, receive 5, then 3 and then 2
|
||||||
|
"""
|
||||||
|
self.env.ref('product.product_category_all').property_cost_method = 'fifo'
|
||||||
|
self.comp1.tracking = 'lot'
|
||||||
|
self.comp1.standard_price = 10
|
||||||
|
self.comp2.tracking = 'lot'
|
||||||
|
self.comp2.standard_price = 20
|
||||||
|
|
||||||
|
lot01, lot02 = self.env['stock.lot'].create([{
|
||||||
|
'name': "Lot of %s" % product.name,
|
||||||
|
'product_id': product.id,
|
||||||
|
'company_id': self.env.company.id,
|
||||||
|
} for product in (self.comp1, self.comp2)])
|
||||||
|
|
||||||
|
receipt_form = Form(self.env['stock.picking'])
|
||||||
|
receipt_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||||
|
receipt_form.partner_id = self.subcontractor_partner1
|
||||||
|
with receipt_form.move_ids_without_package.new() as move:
|
||||||
|
move.product_id = self.finished
|
||||||
|
move.product_uom_qty = 10
|
||||||
|
receipt = receipt_form.save()
|
||||||
|
# add an extra cost
|
||||||
|
receipt.move_ids.price_unit = 50
|
||||||
|
receipt.action_confirm()
|
||||||
|
|
||||||
|
for qty_producing in (5, 3, 2):
|
||||||
|
action = receipt.action_record_components()
|
||||||
|
mo = self.env['mrp.production'].browse(action['res_id'])
|
||||||
|
mo_form = Form(mo.with_context(**action['context']), view=action['view_id'])
|
||||||
|
mo_form.qty_producing = qty_producing
|
||||||
|
with mo_form.move_line_raw_ids.edit(0) as ml:
|
||||||
|
ml.lot_id = lot01
|
||||||
|
with mo_form.move_line_raw_ids.edit(1) as ml:
|
||||||
|
ml.lot_id = lot02
|
||||||
|
mo = mo_form.save()
|
||||||
|
mo.subcontracting_record_component()
|
||||||
|
|
||||||
|
action = receipt.button_validate()
|
||||||
|
if isinstance(action, dict):
|
||||||
|
wizard = Form(self.env[action['res_model']].with_context(action['context'])).save()
|
||||||
|
wizard.process()
|
||||||
|
receipt = receipt.backorder_ids
|
||||||
|
|
||||||
|
self.assertRecordValues(self.finished.stock_valuation_layer_ids, [
|
||||||
|
{'quantity': 5, 'value': 5 * (10 + 20 + 50)},
|
||||||
|
{'quantity': 3, 'value': 3 * (10 + 20 + 50)},
|
||||||
|
{'quantity': 2, 'value': 2 * (10 + 20 + 50)},
|
||||||
|
])
|
||||||
|
|
||||||
|
def test_subcontract_cost_different_when_standard_price(self):
|
||||||
|
"""Test when subcontracting with standard price when
|
||||||
|
Final product cost != Components cost + Subcontracting cost
|
||||||
|
When posting the account entries for receiving final product, the
|
||||||
|
subcontracting cost will be adjusted based on the difference of the cost.
|
||||||
|
"""
|
||||||
|
# pylint: disable=bad-whitespace
|
||||||
|
self.stock_location = self.env.ref('stock.stock_location_stock')
|
||||||
|
self.customer_location = self.env.ref('stock.stock_location_customers')
|
||||||
|
self.supplier_location = self.env.ref('stock.stock_location_suppliers')
|
||||||
|
self.uom_unit = self.env.ref('uom.product_uom_unit')
|
||||||
|
product_category_all = self.env.ref('product.product_category_all')
|
||||||
|
product_category_all.property_cost_method = 'standard'
|
||||||
|
product_category_all.property_valuation = 'real_time'
|
||||||
|
|
||||||
|
in_account = self.env['account.account'].create({
|
||||||
|
'name': 'IN Account',
|
||||||
|
'code': '000001',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
out_account = self.env['account.account'].create({
|
||||||
|
'name': 'OUT Account',
|
||||||
|
'code': '000002',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
valu_account = self.env['account.account'].create({
|
||||||
|
'name': 'VALU Account',
|
||||||
|
'code': '000003',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
production_cost_account = self.env['account.account'].create({
|
||||||
|
'name': 'PROD COST Account',
|
||||||
|
'code': '000004',
|
||||||
|
'account_type': 'asset_current',
|
||||||
|
})
|
||||||
|
product_category_all.property_stock_account_input_categ_id = in_account
|
||||||
|
product_category_all.property_stock_account_output_categ_id = out_account
|
||||||
|
product_category_all.property_stock_account_production_cost_id = production_cost_account
|
||||||
|
product_category_all.property_stock_valuation_account_id = valu_account
|
||||||
|
stock_in_acc_id = product_category_all.property_stock_account_input_categ_id.id
|
||||||
|
stock_valu_acc_id = product_category_all.property_stock_valuation_account_id.id
|
||||||
|
stock_cop_acc_id = product_category_all.property_stock_account_production_cost_id.id
|
||||||
|
self.comp1.standard_price = 10
|
||||||
|
self.comp2.standard_price = 20
|
||||||
|
self.finished.standard_price = 40
|
||||||
|
|
||||||
|
all_amls_ids = self.env['account.move.line'].search([]).ids
|
||||||
|
|
||||||
|
picking_form = Form(self.env['stock.picking'])
|
||||||
|
picking_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||||
|
picking_form.partner_id = self.subcontractor_partner1
|
||||||
|
with picking_form.move_ids_without_package.new() as move:
|
||||||
|
move.product_id = self.finished
|
||||||
|
move.product_uom_qty = 1
|
||||||
|
picking_receipt = picking_form.save()
|
||||||
|
# subcontracting cost is 15
|
||||||
|
picking_receipt.move_ids.price_unit = 15.0
|
||||||
|
picking_receipt.action_confirm()
|
||||||
|
|
||||||
|
picking_receipt.move_ids.quantity = 1.0
|
||||||
|
picking_receipt.move_ids.picked = True
|
||||||
|
picking_receipt._action_done()
|
||||||
|
|
||||||
|
amls = self.env['account.move.line'].search([('id', 'not in', all_amls_ids)])
|
||||||
|
self.assertRecordValues(amls, [
|
||||||
|
# Receipt from subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.finished.id, 'debit': 40.0, 'credit': 0.0},
|
||||||
|
{'account_id': stock_in_acc_id, 'product_id': self.finished.id, 'debit': 0.0, 'credit': 10.0}, # adjust according to the difference
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.finished.id, 'debit': 0.0, 'credit': 30.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp2.id, 'debit': 0.0, 'credit': 20.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp2.id, 'debit': 20.0, 'credit': 0.0},
|
||||||
|
# Delivery com2 to subcontractor
|
||||||
|
{'account_id': stock_valu_acc_id, 'product_id': self.comp1.id, 'debit': 0.0, 'credit': 10.0},
|
||||||
|
{'account_id': stock_cop_acc_id, 'product_id': self.comp1.id, 'debit': 10.0, 'credit': 0.0},
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
class TestBomPriceSubcontracting(TestBomPriceCommon):
|
||||||
|
|
||||||
|
def test_01_compute_price_subcontracting_cost(self):
|
||||||
|
"""Test calculation of bom cost with subcontracting."""
|
||||||
|
self.table_head.uom_po_id = self.dozen
|
||||||
|
partner = self.env['res.partner'].create({
|
||||||
|
'name': 'A name can be a Many2one...'
|
||||||
|
})
|
||||||
|
(self.bom_1 | self.bom_2).write({
|
||||||
|
'type': 'subcontract',
|
||||||
|
'subcontractor_ids': [Command.link(partner.id)]
|
||||||
|
})
|
||||||
|
suppliers = self.env['product.supplierinfo'].create([
|
||||||
|
{
|
||||||
|
'partner_id': partner.id,
|
||||||
|
'product_tmpl_id': self.dining_table.product_tmpl_id.id,
|
||||||
|
'price': 150.0,
|
||||||
|
}, {
|
||||||
|
'partner_id': partner.id,
|
||||||
|
'product_tmpl_id': self.table_head.product_tmpl_id.id,
|
||||||
|
'price': 120.0, # 10 by Unit because uom_po_id is in dozen
|
||||||
|
}
|
||||||
|
])
|
||||||
|
self.assertEqual(suppliers.mapped('is_subcontractor'), [True, True])
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# Cost of BoM (Dining Table 1 Unit)
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# Component Cost = Table Head 1 Unit * 300 = 300 (478.75 from it's components)
|
||||||
|
# Screw 5 Unit * 10 = 50
|
||||||
|
# Leg 4 Unit * 25 = 100
|
||||||
|
# Glass 1 Unit * 100 = 100
|
||||||
|
# Subcontracting 1 Unit * 150 = 150
|
||||||
|
# Total = 700 [878.75 if components of Table Head considered] (for 1 Unit)
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
self.assertEqual(self.dining_table.standard_price, 1000, "Initial price of the Product should be 1000")
|
||||||
|
self.dining_table.button_bom_cost()
|
||||||
|
self.assertEqual(float_round(self.dining_table.standard_price, precision_digits=2), 700.0, "After computing price from BoM price should be 700")
|
||||||
|
|
||||||
|
# Cost of BoM (Table Head 1 Dozen)
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# Component Cost = Plywood Sheet 12 Unit * 200 = 2400
|
||||||
|
# Bolt 60 Unit * 10 = 600
|
||||||
|
# Colour 12 Unit * 100 = 1200
|
||||||
|
# Corner Slide 57 Unit * 25 = 1425
|
||||||
|
# Subcontracting 1 Dozen * 120 = 120
|
||||||
|
# Total = 5745
|
||||||
|
# 1 Unit price (5745/12) = 478.75
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
|
||||||
|
self.assertEqual(self.table_head.standard_price, 300, "Initial price of the Product should be 300")
|
||||||
|
self.Product.browse([self.dining_table.id, self.table_head.id]).action_bom_cost()
|
||||||
|
self.assertEqual(float_compare(self.table_head.standard_price, 478.75, precision_digits=2), 0, "After computing price from BoM price should be 878.75")
|
||||||
|
self.assertEqual(float_compare(self.dining_table.standard_price, 878.75, precision_digits=2), 0, "After computing price from BoM price should be 878.75")
|
||||||
|
|
||||||
|
def test_02_compute_price_subcontracting_cost(self):
|
||||||
|
"""Test calculation of bom cost with subcontracting and supplier in different currency."""
|
||||||
|
currency_a = self.env['res.currency'].create({
|
||||||
|
'name': 'ZEN',
|
||||||
|
'symbol': 'Z',
|
||||||
|
'rounding': 0.01,
|
||||||
|
'currency_unit_label': 'Zenny',
|
||||||
|
'rate_ids': [(0, 0, {
|
||||||
|
'name': fields.Date.today(),
|
||||||
|
'company_rate': 0.5,
|
||||||
|
})],
|
||||||
|
})
|
||||||
|
|
||||||
|
partner = self.env['res.partner'].create({
|
||||||
|
'name': 'supplier',
|
||||||
|
})
|
||||||
|
product = self.env['product.product'].create({
|
||||||
|
'name': 'product',
|
||||||
|
'type': 'product',
|
||||||
|
'standard_price': 100,
|
||||||
|
'company_id': self.env.company.id,
|
||||||
|
})
|
||||||
|
supplier = self.env['product.supplierinfo'].create([{
|
||||||
|
'partner_id': partner.id,
|
||||||
|
'product_tmpl_id': product.product_tmpl_id.id,
|
||||||
|
'price': 120.0,
|
||||||
|
'currency_id': currency_a.id,
|
||||||
|
}])
|
||||||
|
self.env['mrp.bom'].create({
|
||||||
|
'product_tmpl_id': product.product_tmpl_id.id,
|
||||||
|
'product_qty': 1,
|
||||||
|
'type': 'subcontract',
|
||||||
|
'subcontractor_ids': [Command.link(partner.id)],
|
||||||
|
'bom_line_ids': [
|
||||||
|
(0, 0, {'product_id': self.table_head.id, 'product_qty': 1}),
|
||||||
|
],
|
||||||
|
})
|
||||||
|
self.table_head.standard_price = 100
|
||||||
|
self.assertEqual(supplier.is_subcontractor, True)
|
||||||
|
self.assertEqual(product.standard_price, 100, "Initial price of the Product should be 100")
|
||||||
|
product.button_bom_cost()
|
||||||
|
# 120 Zen = 240 USD (120 * 2)
|
||||||
|
# price = 240 + 100 (1 unit of component "table_head") = 340
|
||||||
|
self.assertEqual(product.standard_price, 340, "After computing price from BoM price should be 340")
|
Loading…
x
Reference in New Issue
Block a user