From cad34ac64f3648235de8c57da052afd9921142a4 Mon Sep 17 00:00:00 2001 From: antonio Date: Tue, 29 Aug 2023 16:41:20 +0200 Subject: [PATCH] Add module 'product_contract'. The module is taken from PR: https://github.com/OCA/contract/pull/959#discussion_r1307930572 - commit: df3e3f380ba3fa4d64f8884a754036eafdf616ab + I fixed a bug by removing default values to computed fields on SO Line; --- product_contract/README.rst | 101 ++++ product_contract/__init__.py | 4 + product_contract/__manifest__.py | 23 + product_contract/i18n/de.po | 324 +++++++++++++ product_contract/i18n/es.po | 326 +++++++++++++ product_contract/i18n/fi.po | 326 +++++++++++++ product_contract/i18n/fr.po | 326 +++++++++++++ product_contract/i18n/hi_IN.po | 330 +++++++++++++ product_contract/i18n/hr.po | 325 +++++++++++++ product_contract/i18n/hr_HR.po | 332 +++++++++++++ product_contract/i18n/it.po | 326 +++++++++++++ product_contract/i18n/nl.po | 330 +++++++++++++ product_contract/i18n/nl_NL.po | 330 +++++++++++++ product_contract/i18n/pt.po | 325 +++++++++++++ product_contract/i18n/pt_BR.po | 326 +++++++++++++ product_contract/i18n/ru.po | 328 +++++++++++++ product_contract/i18n/tr.po | 329 +++++++++++++ product_contract/i18n/tr_TR.po | 325 +++++++++++++ product_contract/models/__init__.py | 11 + product_contract/models/contract.py | 38 ++ product_contract/models/contract_line.py | 77 +++ product_contract/models/product_template.py | 79 ++++ product_contract/models/res_company.py | 14 + .../models/res_config_settings.py | 13 + product_contract/models/sale_order.py | 145 ++++++ product_contract/models/sale_order_line.py | 276 +++++++++++ product_contract/readme/CONTRIBUTORS.rst | 6 + product_contract/readme/DESCRIPTION.rst | 5 + product_contract/readme/USAGE.rst | 6 + product_contract/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 441 ++++++++++++++++++ product_contract/tests/__init__.py | 6 + product_contract/tests/test_product.py | 39 ++ product_contract/tests/test_sale_order.py | 370 +++++++++++++++ product_contract/views/contract.xml | 29 ++ product_contract/views/product_template.xml | 80 ++++ .../views/res_config_settings.xml | 29 ++ product_contract/views/sale_order.xml | 124 +++++ 38 files changed, 6824 insertions(+) create mode 100644 product_contract/README.rst create mode 100644 product_contract/__init__.py create mode 100644 product_contract/__manifest__.py create mode 100644 product_contract/i18n/de.po create mode 100644 product_contract/i18n/es.po create mode 100644 product_contract/i18n/fi.po create mode 100644 product_contract/i18n/fr.po create mode 100644 product_contract/i18n/hi_IN.po create mode 100644 product_contract/i18n/hr.po create mode 100644 product_contract/i18n/hr_HR.po create mode 100644 product_contract/i18n/it.po create mode 100644 product_contract/i18n/nl.po create mode 100644 product_contract/i18n/nl_NL.po create mode 100644 product_contract/i18n/pt.po create mode 100644 product_contract/i18n/pt_BR.po create mode 100644 product_contract/i18n/ru.po create mode 100644 product_contract/i18n/tr.po create mode 100644 product_contract/i18n/tr_TR.po create mode 100644 product_contract/models/__init__.py create mode 100644 product_contract/models/contract.py create mode 100644 product_contract/models/contract_line.py create mode 100644 product_contract/models/product_template.py create mode 100644 product_contract/models/res_company.py create mode 100644 product_contract/models/res_config_settings.py create mode 100644 product_contract/models/sale_order.py create mode 100644 product_contract/models/sale_order_line.py create mode 100644 product_contract/readme/CONTRIBUTORS.rst create mode 100644 product_contract/readme/DESCRIPTION.rst create mode 100644 product_contract/readme/USAGE.rst create mode 100644 product_contract/static/description/icon.png create mode 100644 product_contract/static/description/index.html create mode 100644 product_contract/tests/__init__.py create mode 100644 product_contract/tests/test_product.py create mode 100644 product_contract/tests/test_sale_order.py create mode 100644 product_contract/views/contract.xml create mode 100644 product_contract/views/product_template.xml create mode 100644 product_contract/views/res_config_settings.xml create mode 100644 product_contract/views/sale_order.xml diff --git a/product_contract/README.rst b/product_contract/README.rst new file mode 100644 index 00000000..cf9a1e0a --- /dev/null +++ b/product_contract/README.rst @@ -0,0 +1,101 @@ +============================ +Recurring - Product Contract +============================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github + :target: https://github.com/OCA/contract/tree/14.0/product_contract + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-product_contract + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/110/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds support for products to be linked to contract templates. + +A contract is created on ``sale.order`` confirmation for each different template used in sale order line where recurrence details are set too. + +Contract product are ignored on invoicing process and pass to nothing to invoice directly. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Go to Sales -> Products and select or create a product. +#. Check "Is a contract" and select the contract template related to the + product +#. Define default recurrence rules + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* LasLabs +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Ted Salmon +* Souheil Bejaoui +* `Tecnativa `__: + + * Ernesto Tejeda + * Pedro M. Baeza + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-sbejaoui| image:: https://github.com/sbejaoui.png?size=40px + :target: https://github.com/sbejaoui + :alt: sbejaoui + +Current `maintainer `__: + +|maintainer-sbejaoui| + +This module is part of the `OCA/contract `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_contract/__init__.py b/product_contract/__init__.py new file mode 100644 index 00000000..c6339a00 --- /dev/null +++ b/product_contract/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2017 LasLabs Inc. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/product_contract/__manifest__.py b/product_contract/__manifest__.py new file mode 100644 index 00000000..9275ab61 --- /dev/null +++ b/product_contract/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Recurring - Product Contract", + "version": "16.0.1.0.0", + "category": "Contract Management", + "license": "AGPL-3", + "author": "LasLabs, " "ACSONE SA/NV, " "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/contract", + "depends": ["product", "contract", "sale"], + "data": [ + "views/res_config_settings.xml", + "views/contract.xml", + "views/product_template.xml", + "views/sale_order.xml", + ], + "installable": True, + "application": False, + "external_dependencies": {"python": ["dateutil"]}, + "maintainers": ["sbejaoui"], +} diff --git a/product_contract/i18n/de.po b/product_contract/i18n/de.po new file mode 100644 index 00000000..55580d37 --- /dev/null +++ b/product_contract/i18n/de.po @@ -0,0 +1,324 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-27 02:40+0000\n" +"PO-Revision-Date: 2019-10-29 21:33+0000\n" +"Last-Translator: Rudolf Schnapka \n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.8\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "Verkaufsaufträge" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "Auto-Erneuern" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "Erstelle automatisch Verträge bei Verkaufsauftragbestätigung" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "Unternehmen" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "Konfigurationseinstellungen" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Vertrag" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +msgid "Contract Count" +msgstr "Vertragsanzahl" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +msgid "Contract Line" +msgstr "Vertragsposition" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "Zu ersetzende Vertragsposition" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Vertragsvorlage" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "Vertragsprodukt hat andere Vertragsvorlage" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "Vertragsprodukt muss Dienstleistungsprodukt sein" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Contracts" +msgstr "Verträge" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Create Contracts" +msgstr "Vertrag erstellen" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "Enddatum" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "Startdatum" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "Tag(e)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "Vorgabemenge" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "Abrechnungsintervall" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "Abrechnungsart" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Ist ein Vertrag" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "Monat(e)" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "Monatsletzter Tag" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "Vertragsanlage erforderlich" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "Im Nachhinein bezahlt" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "Im Voraus bezahlt" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Produktvorlage" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "Wiederkehrende Abrechnung" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +#, fuzzy +msgid "Renew Every" +msgstr "Abrechnungsintervall" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "Verkaufsauftrag" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "Auftragsanzahl" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "Auftragszeile" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" +"Verkaufsauftrag und Vertrag müssen dem gleichen Partner zugeordnet sein" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Auftragszeile" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "Verkaufsaufträge" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "Legen Sie das Intervall für die automatische Rechnungslegung fest." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +#, fuzzy +msgid "Specify Interval for automatic renewal." +msgstr "Legen Sie das Intervall für die automatische Rechnungslegung fest." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "Legen Sie fest, ob das Datum als Start- oder Enddatum behandelt wird" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "Abschluss-Vorausbenachrichtigung" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "Abschluss-Meldungsart" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "Woche(n)" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "Jahr(e)" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/es.po b/product_contract/i18n/es.po new file mode 100644 index 00000000..69256d2f --- /dev/null +++ b/product_contract/i18n/es.po @@ -0,0 +1,326 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# OCA Transbot , 2017 +# enjolras , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-10 03:15+0000\n" +"PO-Revision-Date: 2020-06-17 11:28+0000\n" +"Last-Translator: Pedro M. Baeza \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "Pedidos de Venta" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "Auto-renovación" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "Crear Contratos Automáticamente en la Confirmación del Pedido de Venta" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "Configuraciones" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contrato" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +msgid "Contract Count" +msgstr "Cuenta Contrato" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +msgid "Contract Line" +msgstr "Línea de Contrato" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "Línea de Contrato a Reemplazar" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Plantilla de contrato" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "El producto del contrato tiene una plantilla de contrato diferente" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "El producto del contrato debe ser del tipo de servicio" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Contracts" +msgstr "Contratos" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Create Contracts" +msgstr "Crear Contratos" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "Fecha de Finalización" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "Fecha de Inicio" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "Días" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "Cantidad Predeterminada" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "Nombre Para Mostrar" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "Factura Cada" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "Tipo de Facturación" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Es un contrato" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "Meses" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "Mes (es) último día" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "Necesita Creación de Contrato" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "Pospago" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "Pagado por Adelantado" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Plantilla de producto" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "Facturación Recurrente" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "Renovar cada" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "Renovar cada (días / semana / mes / año)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "Tipo de renovación" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "Pedido de Venta" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "Cuenta Pedido de Venta" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "Línea de Pedido de Venta" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "La orden de venta y el contrato deben estar vinculados al mismo socio" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de pedido de venta" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "Pedidos de Ventas" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "Especifique el intervalo para la generación automática de facturas." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "Especifique Intervalo para renovación automática." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" +"Especifique si la fecha del proceso es 'desde' o 'hasta' la fecha de " +"facturación" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "Aviso de terminación antes" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "Tipo de aviso de Terminación" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "Semanas" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "Años" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "No puede vender o vender un contrato terminado" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" +"Debe especificar una plantilla de contrato para el producto '{}' en la " +"compañía '{}'." diff --git a/product_contract/i18n/fi.po b/product_contract/i18n/fi.po new file mode 100644 index 00000000..beca187c --- /dev/null +++ b/product_contract/i18n/fi.po @@ -0,0 +1,326 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Jarmo Kortetjärvi , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-10 01:44+0000\n" +"PO-Revision-Date: 2018-03-10 01:44+0000\n" +"Last-Translator: Jarmo Kortetjärvi , 2018\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +#, fuzzy +msgid "Contract Line to replace" +msgstr "Sopimusmalli" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Sopimusmalli" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "Contract" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +#, fuzzy +msgid "Need Contract Creation" +msgstr "Sopimusmalli" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/fr.po b/product_contract/i18n/fr.po new file mode 100644 index 00000000..1ad717fb --- /dev/null +++ b/product_contract/i18n/fr.po @@ -0,0 +1,326 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# leemannd , 2017 +# David BEAL, 2018 +# Fabien Bourgeois , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-19 02:01+0000\n" +"PO-Revision-Date: 2020-08-17 22:59+0000\n" +"Last-Translator: Grégory Moka Tourisme \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "Commandes" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "Renouvellement automatique" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "Créer automatiquement les contrats à la confirmation de commande" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "Sociétés" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "Configuration" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contrat" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +msgid "Contract Count" +msgstr "Nb de contrats" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +msgid "Contract Line" +msgstr "Ligne de Contrat" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "Ligne de contrat à remplacer" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Modèle de contrat" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "L'article a un modèle de contrat différent" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "L'article de contrat devrait être de type service" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Contracts" +msgstr "Contrats" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Create Contracts" +msgstr "Créer les contrats" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "Date de fin" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "Date de début" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "Jour(s)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "Quantité par défaut" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "Facturer tous les" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "Type de facture" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Est un contrat" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "Mois" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "Dernier jour du mois" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "Nécessite la création d'un contrat" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "Postpayé" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "Prépayé" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Modèle d'article" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "Trimestre(s)" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "Fréquence de facturation" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "Renouveler tous les" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "Renouveler tous les (Jours/Semaine/Mois/Année)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "Type de renouvellement" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "Commande" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "Nb de commandes" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "Ligne de commande" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "La commande et le contrat doivent être liés au même partenaire" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Ligne de commande" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "Commandes" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "Semestre(s)" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "Spécifier un intervalle pour la création automatique des factures." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "Spécifier un intervalle pour le renouvellement automatique." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" +"Spécifier si le service est actif \"à partir de\" ou \"jusqu'à\" la date de " +"facturation" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "Avis de résiliation avant" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "Type d'avis d'échéance" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "Semaine(s)" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "Année(s)" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "Vous ne pouvez pas augmenter ou diminuer un contrat résilié" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" +"Vous devez indiquer un modèle de contrat pour l'article {} de la société {}." diff --git a/product_contract/i18n/hi_IN.po b/product_contract/i18n/hi_IN.po new file mode 100644 index 00000000..4a39ddaa --- /dev/null +++ b/product_contract/i18n/hi_IN.po @@ -0,0 +1,330 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Ashish Deshmukh , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-17 01:05+0000\n" +"PO-Revision-Date: 2017-08-17 01:05+0000\n" +"Last-Translator: Ashish Deshmukh , 2017\n" +"Language-Team: Hindi (India) (https://www.transifex.com/oca/teams/23907/" +"hi_IN/)\n" +"Language: hi_IN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "अनुबंध" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "अनुबंध" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "अनुबंध" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +#, fuzzy +msgid "Contract Line to replace" +msgstr "अनुबंध टेम्पलेट" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "अनुबंध टेम्पलेट" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "अनुबंध" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "अनुबंध" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "एक अनुबंध है" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +#, fuzzy +msgid "Need Contract Creation" +msgstr "अनुबंध टेम्पलेट" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "प्रोडक्ट टेम्पलेट" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +#, fuzzy +msgid "Sale Order" +msgstr "बिक्री आदेश" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +#, fuzzy +msgid "Sale Order Count" +msgstr "बिक्री आदेश पंक्ति" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +#, fuzzy +msgid "Sale Order Line" +msgstr "बिक्री आदेश पंक्ति" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "बिक्री आदेश पंक्ति" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, fuzzy, python-format +msgid "Sales Orders" +msgstr "बिक्री आदेश" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/hr.po b/product_contract/i18n/hr.po new file mode 100644 index 00000000..c4d2ca68 --- /dev/null +++ b/product_contract/i18n/hr.po @@ -0,0 +1,325 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-10 03:15+0000\n" +"PO-Revision-Date: 2019-12-02 16:28+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.9.1\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "Ponude" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "Automatski obnovi" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "Automatski kreiraj ugovore pri potvrdi ponude" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "Tvrtke" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "Postavke" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Ugovor" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +msgid "Contract Count" +msgstr "Broj ugovora" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +msgid "Contract Line" +msgstr "Stavka ugovora" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "Stavka ugovora za zamijeniti" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Predložak ugovora" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "Predložak proizvoda ima drugačiji predložak ugovora pridružen" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "Predložak ugovora bi trebao biti tipa Usluga" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Contracts" +msgstr "modul: product_contract" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Create Contracts" +msgstr "Kreiraj ugovore" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "Završni datum" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "Početni datum" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "Dan(a)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "Zadana količina" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "Naziv" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "Račun svakih" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "Tip računa" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Je ugovor" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "Mjesec(i)" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "Mjesec(i) zadnji dan" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "Potrebno kreiranje Ugovora" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "Plaćanje poslje" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "Plaćanje prije" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Predložak proizvoda" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "Ponavljajući računi" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +#, fuzzy +msgid "Renew Every" +msgstr "Račun svakih" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "Ponuda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "Broj ponuda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "Stavka ponude" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "Ponuda i Ugovor bi trebali biti vezani na istog partnera" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Stavka ponude" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "Ponude" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "Definirajte interval za automatsko generiranje računa." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +#, fuzzy +msgid "Specify Interval for automatic renewal." +msgstr "Definirajte interval za automatsko generiranje računa." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" +"Definirajte da li je datum obrade Početni datum ili Završni datum perioda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "Obavijest o raskidu prije" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "Tip obavjesti o raskidu" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "Tjedan(a)" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "Godina(e)" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/hr_HR.po b/product_contract/i18n/hr_HR.po new file mode 100644 index 00000000..6bcdde2d --- /dev/null +++ b/product_contract/i18n/hr_HR.po @@ -0,0 +1,332 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-17 01:39+0000\n" +"PO-Revision-Date: 2017-06-17 01:39+0000\n" +"Last-Translator: Bole , 2017\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Ugovor" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "Ugovor" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "Ugovor" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +#, fuzzy +msgid "Contract Line to replace" +msgstr "Predložak ugovora" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Predložak ugovora" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "Ugovor" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "Ugovor" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Je ugovor" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +#, fuzzy +msgid "Need Contract Creation" +msgstr "Predložak ugovora" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Predložak proizvoda" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +#, fuzzy +msgid "Sale Order" +msgstr "Prodajni nalog" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +#, fuzzy +msgid "Sale Order Count" +msgstr "Stavka prodajnog naloga" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +#, fuzzy +msgid "Sale Order Line" +msgstr "Stavka prodajnog naloga" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Stavka prodajnog naloga" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, fuzzy, python-format +msgid "Sales Orders" +msgstr "Prodajni nalog" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/it.po b/product_contract/i18n/it.po new file mode 100644 index 00000000..730ee7ed --- /dev/null +++ b/product_contract/i18n/it.po @@ -0,0 +1,326 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Lorenzo Battistini , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-27 02:40+0000\n" +"PO-Revision-Date: 2023-04-18 16:33+0000\n" +"Last-Translator: Francesco Foresti \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "Ordini di vendita" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "Rinnovo automatico" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "Crea automaticamente contratti alla conferma dell'ordine di vendita" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "Aziende" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "Impostazioni di configurazione" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contratto" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +msgid "Contract Count" +msgstr "Conto di Contratto" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +msgid "Contract Line" +msgstr "Riga contratto" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "Riga di contratto da sostituire" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Template di contratto" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "Il prodotto contratto ha un diverso template di contratto" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "Il prodotto di contratto dovrebbe essere di tipo servizio" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Contracts" +msgstr "Contratti" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Create Contracts" +msgstr "Crea Contratti" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "Data di fine" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "Data di inizio" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "Giorno(i)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "Quantità standard" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "Fattura ogni" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "Tipo di fatturazione" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "è un contratto" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "Mese(i)" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "Ultimo giorno mese(i)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "Necessita creazione contratto" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "Post pagato" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "Pre pagato" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Modello prodotto" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "Trimestre/i" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "Fatturazione ricorrente" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "Rinnovare ogni" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "Rinnovare ogni (giorno/settimana/mese/anno)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "Tipo rinnovo" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "Ordine di vendita" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "Conteggio ordine di vendita" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "Riga ordine di vendita" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" +"L'ordine di vendita e il contratto dovrebbero essere collegati allo stesso " +"partner" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Riga ordine di vendita" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "Ordini di vendita" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "Semestre/i" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "Specifica un intervallo per la generazione automatica della fattura." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "Specificare l'intervallo per il rinnovo automatico." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" +"Specifica se la data di elaborazione è 'dalla' o 'alla' data di fatturazione" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "Notifica termine prima di" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "Tipo notifica termine" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "Settimana(e)" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "Anno(i)" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "Non puoi fare upsell o downsell di un contratto terminato" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" +"Devi specificare un modello di contratto per il prodotto '{}' nell'azienda " +"'{}'." diff --git a/product_contract/i18n/nl.po b/product_contract/i18n/nl.po new file mode 100644 index 00000000..4da0109d --- /dev/null +++ b/product_contract/i18n/nl.po @@ -0,0 +1,330 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Erwin van der Ploeg , 2017 +# lfreeke , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-06 03:17+0000\n" +"PO-Revision-Date: 2018-01-06 03:17+0000\n" +"Last-Translator: lfreeke , 2018\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +#, fuzzy +msgid "Contract Line to replace" +msgstr "Contractsjabloon" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Contractsjabloon" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "Contract" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Is een contract" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +#, fuzzy +msgid "Need Contract Creation" +msgstr "Contractsjabloon" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Productsjabloon" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +#, fuzzy +msgid "Sale Order" +msgstr "Verkooporder" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +#, fuzzy +msgid "Sale Order Count" +msgstr "Verkooporderregel" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +#, fuzzy +msgid "Sale Order Line" +msgstr "Verkooporderregel" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Verkooporderregel" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, fuzzy, python-format +msgid "Sales Orders" +msgstr "Verkooporder" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/nl_NL.po b/product_contract/i18n/nl_NL.po new file mode 100644 index 00000000..c3eb3501 --- /dev/null +++ b/product_contract/i18n/nl_NL.po @@ -0,0 +1,330 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-09 01:10+0000\n" +"PO-Revision-Date: 2017-06-09 01:10+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +#, fuzzy +msgid "Contract Line to replace" +msgstr "Contractsjabloon" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Contractsjabloon" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "Contract" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "Contract" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Is een contract" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +#, fuzzy +msgid "Need Contract Creation" +msgstr "Contractsjabloon" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Productsjabloon" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +#, fuzzy +msgid "Sale Order" +msgstr "Verkooporder" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +#, fuzzy +msgid "Sale Order Count" +msgstr "Verkooporderregel" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +#, fuzzy +msgid "Sale Order Line" +msgstr "Verkooporderregel" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Verkooporderregel" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, fuzzy, python-format +msgid "Sales Orders" +msgstr "Verkooporder" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/pt.po b/product_contract/i18n/pt.po new file mode 100644 index 00000000..935a0669 --- /dev/null +++ b/product_contract/i18n/pt.po @@ -0,0 +1,325 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Pedro Castro Silva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-15 01:24+0000\n" +"PO-Revision-Date: 2020-02-18 19:13+0000\n" +"Last-Translator: alvarorib \n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 3.10\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "Encomendas de Venda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "Auto Renovação" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "Criar Contratos Automaticamente na Confirmação da Encomenda de Venda" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "Configurações" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contrato" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +msgid "Contract Count" +msgstr "Contagem de Contratos" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +msgid "Contract Line" +msgstr "Linha de Contrato" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "Linha de Contrato a substituir" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Modelo de Contrato" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "Produtos do tipo Contrato têm diferentes modelos contratuais" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "Os produtos do tipo contrato devem ser do tipo Serviço" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Contracts" +msgstr "Contratos" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Create Contracts" +msgstr "Criar Contratos" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "Data de Fim" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "Data de Início" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "Dia(s)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "Quantidade Predefinida" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "Faturar a Cada" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "Tipo de faturação" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "É um Contrato" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "Mes(es)" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "Mes(es) no último dia" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "Necessário Criação de Contrato" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "Pós-pago" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "Pré-pago" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Modelo de Artigo" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "Faturação Recorrente" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +#, fuzzy +msgid "Renew Every" +msgstr "Faturar a Cada" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "Encomenda de Venda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "Nº de Encomendas de Venda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "Linha de Encomenda de Venda" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "A encomenda e o contrato deviam estar ligados ao mesmo parceiro" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linha de Encomenda de Venda" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "Encomendas de Venda" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "Especifique o intervalo para a geração automática de faturas." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +#, fuzzy +msgid "Specify Interval for automatic renewal." +msgstr "Especifique o intervalo para a geração automática de faturas." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" +"Especifique se o processamento da data é 'a partir da' ou 'até à' data de " +"faturação" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "Aviso de Rescisão Antes" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "Tipo de Aviso de Rescisão" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "Semana(s)" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "Ano(s)" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/pt_BR.po b/product_contract/i18n/pt_BR.po new file mode 100644 index 00000000..9e54c230 --- /dev/null +++ b/product_contract/i18n/pt_BR.po @@ -0,0 +1,326 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# OCA Transbot , 2017 +# falexandresilva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-13 02:40+0000\n" +"PO-Revision-Date: 2020-08-10 16:59+0000\n" +"Last-Translator: Fernando Colus \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" +"23907/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "Ordens de Venda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "Renovação Automática" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "Criar Contratos Automaticamente Na Confirmação da Ordem de Venda" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "Definições de Configuração" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Contrato" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +msgid "Contract Count" +msgstr "Número de Contratos" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +msgid "Contract Line" +msgstr "Linha de Contrato" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "Linha do contrato para substituir" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Modelo do Contrato" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "O produto do contrato tem um modelo de contrato diferente" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "O produto do contrato deve ser do tipo serviço" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Contracts" +msgstr "Contratos" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Create Contracts" +msgstr "Criar Contratos" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "Data Final" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "Data Inicial" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "Dia(s)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "Quantidade Padrão" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "Exibir Nome" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "Faturar a Cada" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "Tipo de Fatuamento" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "É um contrato" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "Mês(es)" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "Último dia do Mês(es)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "Necessidade de Criação de Contrato" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "Pós-pago" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "Pré-pago" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Modelo de Produto" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "Trimestre(s)" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "Faturamento Recorrente" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "Renovar a Cada" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "Renovar a cada (Dias/Semana/Mês/Ano)" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "Tipo de renovação" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "Pedido de Venda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "Contagem de Ordem de Venda" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "Linha da Ordem de Venda" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "Ordem de Venda e contrato devem ser relacionadas ao mesmo parceiro" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linha do Pedido de Venda" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "Ordens de Venda" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "Semestre(s)" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "Especifique o intervalo para geração automática da fatura." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "Especifique o intervalo para renovação automática." + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" +"Especifique se o processo de data é 'de' ou 'para' a data de faturamento" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "Aviso de Rescisão Anterior" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "Tipo de Aviso de Rescisão" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "Semana(s)" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "Ano(s)" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "Não se pode adicionar ou remover ao contrato terminado" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" +"Você deve especificar um modelo de contrato para o produto '{}' na empresa " +"'{}'." diff --git a/product_contract/i18n/ru.po b/product_contract/i18n/ru.po new file mode 100644 index 00000000..8ffd07e3 --- /dev/null +++ b/product_contract/i18n/ru.po @@ -0,0 +1,328 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# nek, 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-17 03:26+0000\n" +"PO-Revision-Date: 2018-03-17 03:26+0000\n" +"Last-Translator: nek, 2018\n" +"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \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: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Договор" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "Договор" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "Договор" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +#, fuzzy +msgid "Contract Line to replace" +msgstr "Шаблон Договора" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Шаблон Договора" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "Договор" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "Договор" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Это Договор" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +#, fuzzy +msgid "Need Contract Creation" +msgstr "Шаблон Договора" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Шаблон Продукта" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/tr.po b/product_contract/i18n/tr.po new file mode 100644 index 00000000..a76680c2 --- /dev/null +++ b/product_contract/i18n/tr.po @@ -0,0 +1,329 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Ediz Duman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-21 01:48+0000\n" +"PO-Revision-Date: 2018-04-21 01:48+0000\n" +"Last-Translator: Ediz Duman , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +#, fuzzy +msgid "Contract Line to replace" +msgstr "Sözleşme Şablonu" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "Sözleşme Şablonu" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "Sözleşme" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "Sözleşmeli" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +#, fuzzy +msgid "Need Contract Creation" +msgstr "Sözleşme Şablonu" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "Ürün Şablonu" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +#, fuzzy +msgid "Sale Order" +msgstr "Satış Siparişi" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +#, fuzzy +msgid "Sale Order Count" +msgstr "Satış Sipariş Satırı" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +#, fuzzy +msgid "Sale Order Line" +msgstr "Satış Sipariş Satırı" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "Satış Sipariş Satırı" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, fuzzy, python-format +msgid "Sales Orders" +msgstr "Satış Siparişi" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/i18n/tr_TR.po b/product_contract/i18n/tr_TR.po new file mode 100644 index 00000000..590d8628 --- /dev/null +++ b/product_contract/i18n/tr_TR.po @@ -0,0 +1,325 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract +# +# Translators: +# Ediz Duman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-27 02:40+0000\n" +"PO-Revision-Date: 2017-04-27 02:40+0000\n" +"Last-Translator: Ediz Duman , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/" +"tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.contract_contract_customer_form_view +msgid "Sale Orders" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_auto_renew +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_auto_renew +msgid "Auto Renew" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_res_company__create_contract_at_sale_order_confirmation +#: model:ir.model.fields,field_description:product_contract.field_res_config_settings__create_contract_at_sale_order_confirmation +#: model_terms:ir.ui.view,arch_db:product_contract.res_config_settings_form_view +msgid "Automatically Create Contracts At Sale Order Confirmation" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_company +msgid "Companies" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_id +#: model_terms:ir.ui.view,arch_db:product_contract.product_template_form_contract_view +msgid "Contract" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__contract_count +#, fuzzy +msgid "Contract Count" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_contract_line +#, fuzzy +msgid "Contract Line" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id +msgid "Contract Line to replace" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_product_template__property_contract_template_id +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_template_id +msgid "Contract Template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:266 +#, python-format +msgid "Contract product has different contract template" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/product_template.py:79 +#, python-format +msgid "Contract product should be service type" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Contracts" +msgstr "Sözleşme" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +#, fuzzy +msgid "Create Contracts" +msgstr "Sözleşme" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_end +msgid "Date End" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__date_start +msgid "Date Start" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Day(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__default_qty +#: model:ir.model.fields,field_description:product_contract.field_product_template__default_qty +msgid "Default Quantity" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__display_name +msgid "Display Name" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_rule_type +msgid "Invoice Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Invoicing type" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__is_contract +#: model:ir.model.fields,field_description:product_contract.field_product_template__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__is_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__is_contract +msgid "Is a contract" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Month(s) last day" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_sale_order__need_contract_creation +msgid "Need Contract Creation" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Post-paid" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_invoicing_type:0 +#: selection:sale.order.line,recurring_invoicing_type:0 +msgid "Pre-paid" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_product_template +msgid "Product Template" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Quarter(s)" +msgstr "" + +#. module: product_contract +#: model_terms:ir.ui.view,arch_db:product_contract.view_order_form +msgid "Recurrence Invoicing" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew Every" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_interval +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_interval +msgid "Renew every (Days/Week/Month/Year)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Renewal type" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order +msgid "Sale Order" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_contract__sale_order_count +msgid "Sale Order Count" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_contract_line__sale_order_line_id +msgid "Sale Order Line" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order_line.py:250 +#, python-format +msgid "Sale Order and contract should be linked to the same partner" +msgstr "" + +#. module: product_contract +#: model:ir.model,name:product_contract.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/contract.py:34 +#, python-format +msgid "Sales Orders" +msgstr "" + +#. module: product_contract +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Semester(s)" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_rule_type +msgid "Specify Interval for automatic invoice generation." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_product_template__auto_renew_rule_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__auto_renew_rule_type +msgid "Specify Interval for automatic renewal." +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,help:product_contract.field_product_product__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_product_template__recurring_invoicing_type +#: model:ir.model.fields,help:product_contract.field_sale_order_line__recurring_invoicing_type +msgid "Specify if process date is 'from' or 'to' invoicing date" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_interval +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_interval +msgid "Termination Notice Before" +msgstr "" + +#. module: product_contract +#: model:ir.model.fields,field_description:product_contract.field_product_product__termination_notice_rule_type +#: model:ir.model.fields,field_description:product_contract.field_product_template__termination_notice_rule_type +msgid "Termination Notice type" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:product.template,termination_notice_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Week(s)" +msgstr "" + +#. module: product_contract +#: selection:product.template,auto_renew_rule_type:0 +#: selection:product.template,recurring_rule_type:0 +#: selection:sale.order.line,auto_renew_rule_type:0 +#: selection:sale.order.line,recurring_rule_type:0 +msgid "Year(s)" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:29 +#: code:addons/product_contract/models/sale_order_line.py:80 +#, python-format +msgid "You can't upsell or downsell a terminated contract" +msgstr "" + +#. module: product_contract +#: code:addons/product_contract/models/sale_order.py:93 +#, python-format +msgid "You must specify a contract template for '{}' product in '{}' company." +msgstr "" diff --git a/product_contract/models/__init__.py b/product_contract/models/__init__.py new file mode 100644 index 00000000..c16c95bb --- /dev/null +++ b/product_contract/models/__init__.py @@ -0,0 +1,11 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import contract +from . import contract_line +from . import product_template +from . import sale_order +from . import sale_order_line +from . import res_company +from . import res_config_settings diff --git a/product_contract/models/contract.py b/product_contract/models/contract.py new file mode 100644 index 00000000..d37752ef --- /dev/null +++ b/product_contract/models/contract.py @@ -0,0 +1,38 @@ +# Copyright 2018 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models +from odoo.exceptions import AccessError +from odoo.tools.translate import _ + + +class ContractContract(models.Model): + _inherit = "contract.contract" + + sale_order_count = fields.Integer(compute="_compute_sale_order_count") + + @api.depends("contract_line_ids") + def _compute_sale_order_count(self): + for rec in self: + try: + order_count = len( + rec.contract_line_ids.mapped("sale_order_line_id.order_id") + ) + except AccessError: + order_count = 0 + rec.sale_order_count = order_count + + def action_view_sales_orders(self): + self.ensure_one() + orders = self.contract_line_ids.mapped("sale_order_line_id.order_id") + action = { + "name": _("Sales Orders"), + "view_mode": "tree,form", + "res_model": "sale.order", + "type": "ir.actions.act_window", + "domain": [("id", "in", orders.ids)], + } + if len(orders) == 1: + # If there is only one order, open it directly + action.update({"view_mode": "form", "res_id": orders.id}) + return action diff --git a/product_contract/models/contract_line.py b/product_contract/models/contract_line.py new file mode 100644 index 00000000..cc351aff --- /dev/null +++ b/product_contract/models/contract_line.py @@ -0,0 +1,77 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +from odoo import Command, api, fields, models + + +class ContractLine(models.Model): + _inherit = "contract.line" + _rec_name = "display_name" + + sale_order_line_id = fields.Many2one( + comodel_name="sale.order.line", + string="Sale Order Line", + required=False, + copy=False, + ) + + def _prepare_invoice_line(self): + res = super()._prepare_invoice_line() + if self.sale_order_line_id and res: + res["sale_line_ids"] = [Command.set([self.sale_order_line_id.id])] + return res + + def _get_auto_renew_rule_type(self): + """monthly last day don't make sense for auto_renew_rule_type""" + self.ensure_one() + if self.recurring_rule_type == "monthlylastday": + return "monthly" + return self.recurring_rule_type + + @api.onchange("product_id") + def _onchange_product_id_recurring_info(self): + for rec in self: + rec.date_start = fields.Date.today() + if rec.product_id.is_contract: + rec.update( + { + "is_auto_renew": rec.product_id.is_auto_renew, + "auto_renew_interval": rec.product_id.auto_renew_interval, + "auto_renew_rule_type": rec.product_id.auto_renew_rule_type, + "termination_notice_interval": ( + rec.product_id.termination_notice_interval + ), + "termination_notice_rule_type": ( + rec.product_id.termination_notice_rule_type + ), + } + ) + + def _set_recurrence_field(self, field): + res = super()._set_recurrence_field(field) + for record in self: + if record.product_id.is_contract and field in record.product_id: + record[field] = record.product_id[field] + return res + + @api.depends( + "contract_id.recurring_rule_type", "contract_id.line_recurrence", "product_id" + ) + def _compute_recurring_rule_type(self): + return super()._compute_recurring_rule_type() + + @api.depends( + "contract_id.recurring_invoicing_type", + "contract_id.line_recurrence", + "product_id", + ) + def _compute_recurring_invoicing_type(self): + return super()._compute_recurring_invoicing_type() + + @api.depends( + "contract_id.recurring_interval", "contract_id.line_recurrence", "product_id" + ) + def _compute_recurring_interval(self): + return super()._compute_recurring_interval() diff --git a/product_contract/models/product_template.py b/product_contract/models/product_template.py new file mode 100644 index 00000000..606ac6ef --- /dev/null +++ b/product_contract/models/product_template.py @@ -0,0 +1,79 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + is_contract = fields.Boolean("Is a contract") + property_contract_template_id = fields.Many2one( + comodel_name="contract.template", + string="Contract Template", + company_dependent=True, + ) + default_qty = fields.Integer(string="Default Quantity", default=1) + recurring_rule_type = fields.Selection( + [ + ("daily", "Day(s)"), + ("weekly", "Week(s)"), + ("monthly", "Month(s)"), + ("monthlylastday", "Month(s) last day"), + ("quarterly", "Quarter(s)"), + ("semesterly", "Semester(s)"), + ("yearly", "Year(s)"), + ], + default="monthly", + string="Invoice Every", + help="Specify Interval for automatic invoice generation.", + ) + recurring_invoicing_type = fields.Selection( + [("pre-paid", "Pre-paid"), ("post-paid", "Post-paid")], + default="pre-paid", + string="Invoicing type", + help="Specify if process date is 'from' or 'to' invoicing date", + ) + is_auto_renew = fields.Boolean(string="Auto Renew", default=False) + termination_notice_interval = fields.Integer( + default=1, string="Termination Notice Before" + ) + termination_notice_rule_type = fields.Selection( + [("daily", "Day(s)"), ("weekly", "Week(s)"), ("monthly", "Month(s)")], + default="monthly", + string="Termination Notice type", + ) + auto_renew_interval = fields.Integer( + default=1, + string="Renew Every", + help="Renew every (Days/Week/Month/Year)", + ) + auto_renew_rule_type = fields.Selection( + [ + ("daily", "Day(s)"), + ("weekly", "Week(s)"), + ("monthly", "Month(s)"), + ("yearly", "Year(s)"), + ], + default="yearly", + string="Renewal type", + help="Specify Interval for automatic renewal.", + ) + + def write(self, vals): + if "is_contract" in vals and vals["is_contract"] is False: + for company in self.env["res.company"].search([]): + self.with_company(company).write( + {"property_contract_template_id": False} + ) + return super().write(vals) + + @api.constrains("is_contract", "type") + def _check_contract_product_type(self): + """ + Contract product should be service type + """ + if any([product.is_contract and product.type != "service" for product in self]): + raise ValidationError(_("Contract product should be service type")) diff --git a/product_contract/models/res_company.py b/product_contract/models/res_company.py new file mode 100644 index 00000000..099137c4 --- /dev/null +++ b/product_contract/models/res_company.py @@ -0,0 +1,14 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResCompany(models.Model): + + _inherit = "res.company" + + create_contract_at_sale_order_confirmation = fields.Boolean( + string="Automatically Create Contracts At Sale Order Confirmation", + default=True, + ) diff --git a/product_contract/models/res_config_settings.py b/product_contract/models/res_config_settings.py new file mode 100644 index 00000000..cd399a19 --- /dev/null +++ b/product_contract/models/res_config_settings.py @@ -0,0 +1,13 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + + _inherit = "res.config.settings" + + create_contract_at_sale_order_confirmation = fields.Boolean( + related="company_id.create_contract_at_sale_order_confirmation", readonly=False + ) diff --git a/product_contract/models/sale_order.py b/product_contract/models/sale_order.py new file mode 100644 index 00000000..5835988c --- /dev/null +++ b/product_contract/models/sale_order.py @@ -0,0 +1,145 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + is_contract = fields.Boolean(string="Is a contract", compute="_compute_is_contract") + contract_count = fields.Integer(compute="_compute_contract_count") + need_contract_creation = fields.Boolean(compute="_compute_need_contract_creation") + + @api.constrains("state") + def _check_contact_is_not_terminated(self): + for rec in self: + if rec.state not in ( + "sale", + "done", + "cancel", + ) and rec.order_line.filtered("contract_id.is_terminated"): + raise ValidationError( + _("You can't upsell or downsell a terminated contract") + ) + + @api.depends("order_line.contract_id", "state") + def _compute_need_contract_creation(self): + self.update({"need_contract_creation": False}) + for rec in self: + if rec.state in ("sale", "done"): + line_to_create_contract = rec.order_line.filtered( + lambda r: not r.contract_id and r.product_id.is_contract + ) + line_to_update_contract = rec.order_line.filtered( + lambda r: r.contract_id + and r.product_id.is_contract + and r + not in r.contract_id.contract_line_ids.mapped("sale_order_line_id") + ) + if line_to_create_contract or line_to_update_contract: + rec.need_contract_creation = True + + @api.depends("order_line") + def _compute_is_contract(self): + self.is_contract = any(self.order_line.mapped("is_contract")) + + def _prepare_contract_value(self, contract_template): + self.ensure_one() + return { + "name": "{template_name}: {sale_name}".format( + template_name=contract_template.name, sale_name=self.name + ), + "partner_id": self.partner_id.id, + "company_id": self.company_id.id, + "contract_template_id": contract_template.id, + "user_id": self.user_id.id, + "payment_term_id": self.payment_term_id.id, + "fiscal_position_id": self.fiscal_position_id.id, + "invoice_partner_id": self.partner_invoice_id.id, + "line_recurrence": self.partner_invoice_id.id, + } + + def action_create_contract(self): + contract_model = self.env["contract.contract"] + contracts = [] + for rec in self.filtered("is_contract"): + line_to_create_contract = rec.order_line.filtered( + lambda r: not r.contract_id and r.product_id.is_contract + ) + line_to_update_contract = rec.order_line.filtered( + lambda r: r.contract_id + and r.product_id.is_contract + and r + not in r.contract_id.contract_line_ids.mapped("sale_order_line_id") + ) + contract_templates = self.env["contract.template"] + for order_line in line_to_create_contract: + contract_template = order_line.product_id.with_company( + rec.company_id + ).property_contract_template_id + if not contract_template: + raise ValidationError( + _( + "You must specify a contract " + "template for '{}' product in '{}' company." + ).format(order_line.product_id.name, rec.company_id.name) + ) + contract_templates |= contract_template + for contract_template in contract_templates: + order_lines = line_to_create_contract.filtered( + lambda r, template=contract_template: r.product_id.with_company( + r.order_id.company_id + ).property_contract_template_id + == template + ) + contract = contract_model.create( + rec._prepare_contract_value(contract_template) + ) + contracts.append(contract) + contract._onchange_contract_template_id() + contract._onchange_contract_type() + order_lines.create_contract_line(contract) + order_lines.write({"contract_id": contract.id}) + for line in line_to_update_contract: + line.create_contract_line(line.contract_id) + return contract_model.browse(contracts) + + def action_confirm(self): + """If we have a contract in the order, set it up""" + self.filtered( + lambda order: (order.company_id.create_contract_at_sale_order_confirmation) + ).action_create_contract() + return super().action_confirm() + + @api.depends("order_line") + def _compute_contract_count(self): + for rec in self: + rec.contract_count = len(rec.order_line.mapped("contract_id")) + + def action_show_contracts(self): + self.ensure_one() + action = self.env["ir.actions.act_window"]._for_xml_id( + "contract.action_customer_contract" + ) + + contracts = ( + self.env["contract.line"] + .search([("sale_order_line_id", "in", self.order_line.ids)]) + .mapped("contract_id") + ) + action["domain"] = [ + ("contract_line_ids.sale_order_line_id", "in", self.order_line.ids) + ] + if len(contracts) == 1: + # If there is only one contract, open it directly + action.update( + { + "res_id": contracts.id, + "view_mode": "form", + "views": filter(lambda view: view[1] == "form", action["views"]), + } + ) + return action diff --git a/product_contract/models/sale_order_line.py b/product_contract/models/sale_order_line.py new file mode 100644 index 00000000..e91ce5b7 --- /dev/null +++ b/product_contract/models/sale_order_line.py @@ -0,0 +1,276 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2017 ACSONE SA/NV. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from dateutil.relativedelta import relativedelta + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + is_contract = fields.Boolean( + string="Is a contract", related="product_id.is_contract" + ) + contract_id = fields.Many2one( + comodel_name="contract.contract", string="Contract", copy=False + ) + contract_template_id = fields.Many2one( + comodel_name="contract.template", + string="Contract Template", + compute="_compute_contract_template_id", + ) + recurring_rule_type = fields.Selection( + [ + ("daily", "Day(s)"), + ("weekly", "Week(s)"), + ("monthly", "Month(s)"), + ("monthlylastday", "Month(s) last day"), + ("quarterly", "Quarter(s)"), + ("semesterly", "Semester(s)"), + ("yearly", "Year(s)"), + ], + default="monthly", + string="Invoice Every", + copy=False, + ) + recurring_invoicing_type = fields.Selection( + [("pre-paid", "Pre-paid"), ("post-paid", "Post-paid")], + default="pre-paid", + string="Invoicing type", + help="Specify if process date is 'from' or 'to' invoicing date", + copy=False, + ) + date_start = fields.Date() + date_end = fields.Date() + + contract_line_id = fields.Many2one( + comodel_name="contract.line", + string="Contract Line to replace", + required=False, + copy=False, + ) + is_auto_renew = fields.Boolean( + string="Auto Renew", + compute="_compute_auto_renew", + store=True, + readonly=False, + ) + auto_renew_interval = fields.Integer( + string="Renew Every", + compute="_compute_auto_renew", + store=True, + readonly=False, + help="Renew every (Days/Week/Month/Year)", + ) + auto_renew_rule_type = fields.Selection( + [ + ("daily", "Day(s)"), + ("weekly", "Week(s)"), + ("monthly", "Month(s)"), + ("yearly", "Year(s)"), + ], + compute="_compute_auto_renew", + store=True, + readonly=False, + string="Renewal type", + help="Specify Interval for automatic renewal.", + ) + + @api.constrains("contract_id") + def _check_contact_is_not_terminated(self): + for rec in self: + if ( + rec.order_id.state not in ("sale", "done", "cancel") + and rec.contract_id.is_terminated + ): + raise ValidationError( + _("You can't upsell or downsell a terminated contract") + ) + + @api.depends("product_id", "order_id.company_id") + def _compute_contract_template_id(self): + for rec in self: + rec.contract_template_id = rec.product_id.with_company( + rec.order_id.company_id + ).property_contract_template_id + + def _get_auto_renew_rule_type(self): + """monthly last day don't make sense for auto_renew_rule_type""" + self.ensure_one() + if self.recurring_rule_type == "monthlylastday": + return "monthly" + return self.recurring_rule_type + + def _get_date_end(self): + self.ensure_one() + contract_line_model = self.env["contract.line"] + date_end = ( + self.date_start + + contract_line_model.get_relative_delta( + self._get_auto_renew_rule_type(), + int(self.product_uom_qty), + ) + - relativedelta(days=1) + ) + return date_end + + @api.depends("product_id", "product_template_id") + def _compute_auto_renew(self): + for rec in self: + if rec.product_id.is_contract: + rec.product_uom_qty = rec.product_id.default_qty + rec.recurring_rule_type = rec.product_id.recurring_rule_type + rec.recurring_invoicing_type = rec.product_id.recurring_invoicing_type + rec.date_start = rec.date_start or fields.Date.today() + + rec.date_end = rec._get_date_end() + rec.is_auto_renew = rec.product_id.is_auto_renew + if rec.is_auto_renew: + rec.auto_renew_interval = rec.product_id.auto_renew_interval + rec.auto_renew_rule_type = rec.product_id.auto_renew_rule_type + + @api.onchange("date_start", "product_uom_qty", "recurring_rule_type") + def onchange_date_start(self): + for rec in self.filtered("product_id.is_contract"): + rec.date_end = rec._get_date_end() if rec.date_start else False + + def _get_contract_line_qty(self): + """Returns the quantity to be put on new contract lines.""" + self.ensure_one() + # The quantity on the generated contract line is 1, as it + # correspond to the most common use cases: + # - quantity on the SO line = number of periods sold and unit + # price the price of one period, so the + # total amount of the SO corresponds to the planned value + # of the contract; in this case the quantity on the contract + # line must be 1 + # - quantity on the SO line = number of hours sold, + # automatic invoicing of the actual hours through a variable + # quantity formula, in which case the quantity on the contract + # line is not used + # Other use cases are easy to implement by overriding this method. + return 1.0 + + def _prepare_contract_line_values( + self, contract, predecessor_contract_line_id=False + ): + """ + :param contract: related contract + :param predecessor_contract_line_id: contract line to replace id + :return: new contract line dict + """ + self.ensure_one() + recurring_next_date = self.env[ + "contract.line" + ]._compute_first_recurring_next_date( + self.date_start or fields.Date.today(), + self.recurring_invoicing_type, + self.recurring_rule_type, + 1, + ) + termination_notice_interval = self.product_id.termination_notice_interval + termination_notice_rule_type = self.product_id.termination_notice_rule_type + return { + "sequence": self.sequence, + "product_id": self.product_id.id, + "name": self.name, + "quantity": self._get_contract_line_qty(), + "uom_id": self.product_uom.id, + "price_unit": self.price_unit, + "discount": self.discount, + "date_end": self.date_end, + "date_start": self.date_start or fields.Date.today(), + "recurring_next_date": recurring_next_date, + "recurring_interval": 1, + "recurring_invoicing_type": self.recurring_invoicing_type, + "recurring_rule_type": self.recurring_rule_type, + "is_auto_renew": self.is_auto_renew, + "auto_renew_interval": self.auto_renew_interval, + "auto_renew_rule_type": self.auto_renew_rule_type, + "termination_notice_interval": termination_notice_interval, + "termination_notice_rule_type": termination_notice_rule_type, + "contract_id": contract.id, + "sale_order_line_id": self.id, + "predecessor_contract_line_id": predecessor_contract_line_id, + "analytic_account_id": self.order_id.analytic_account_id.id, + } + + def create_contract_line(self, contract): + contract_line_model = self.env["contract.line"] + contract_line = self.env["contract.line"] + predecessor_contract_line = False + for rec in self: + if rec.contract_line_id: + # If the upsell/downsell line start at the same date or before + # the contract line to replace supposed to start, we cancel + # the one to be replaced. Otherwise we stop it. + if rec.date_start <= rec.contract_line_id.date_start: + # The contract will handel the contract line integrity + # An exception will be raised if we try to cancel an + # invoiced contract line + rec.contract_line_id.cancel() + elif ( + not rec.contract_line_id.date_end + or rec.date_start <= rec.contract_line_id.date_end + ): + rec.contract_line_id.stop(rec.date_start - relativedelta(days=1)) + predecessor_contract_line = rec.contract_line_id + if predecessor_contract_line: + new_contract_line = contract_line_model.create( + rec._prepare_contract_line_values( + contract, predecessor_contract_line.id + ) + ) + predecessor_contract_line.successor_contract_line_id = new_contract_line + else: + new_contract_line = contract_line_model.create( + rec._prepare_contract_line_values(contract) + ) + contract_line |= new_contract_line + return contract_line + + @api.constrains("contract_id") + def _check_contract_sale_partner(self): + for rec in self: + if rec.contract_id: + if rec.order_id.partner_id != rec.contract_id.partner_id: + raise ValidationError( + _( + "Sale Order and contract should be " + "linked to the same partner" + ) + ) + + @api.constrains("product_id", "contract_id") + def _check_contract_sale_contract_template(self): + for rec in self: + if rec.contract_id: + if ( + rec.contract_id.contract_template_id + and rec.contract_template_id != rec.contract_id.contract_template_id + ): + raise ValidationError( + _("Contract product has different contract template") + ) + + def _compute_invoice_status(self): + res = super()._compute_invoice_status() + self.filtered("contract_id").update({"invoice_status": "no"}) + return res + + def invoice_line_create(self, invoice_id, qty): + return super( + SaleOrderLine, self.filtered(lambda l: not l.contract_id) + ).invoice_line_create(invoice_id, qty) + + @api.depends("qty_invoiced", "qty_delivered", "product_uom_qty", "state") + def _compute_qty_to_invoice(self): + """ + sale line linked to contracts must not be invoiced from sale order + """ + res = super()._compute_qty_to_invoice() + self.filtered("product_id.is_contract").update({"qty_to_invoice": 0.0}) + return res diff --git a/product_contract/readme/CONTRIBUTORS.rst b/product_contract/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..62a6b88f --- /dev/null +++ b/product_contract/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* Ted Salmon +* Souheil Bejaoui +* `Tecnativa `__: + + * Ernesto Tejeda + * Pedro M. Baeza diff --git a/product_contract/readme/DESCRIPTION.rst b/product_contract/readme/DESCRIPTION.rst new file mode 100644 index 00000000..e620eb27 --- /dev/null +++ b/product_contract/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module adds support for products to be linked to contract templates. + +A contract is created on ``sale.order`` confirmation for each different template used in sale order line where recurrence details are set too. + +Contract product are ignored on invoicing process and pass to nothing to invoice directly. diff --git a/product_contract/readme/USAGE.rst b/product_contract/readme/USAGE.rst new file mode 100644 index 00000000..1ed5d471 --- /dev/null +++ b/product_contract/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +#. Go to Sales -> Products and select or create a product. +#. Check "Is a contract" and select the contract template related to the + product +#. Define default recurrence rules diff --git a/product_contract/static/description/icon.png b/product_contract/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/product_contract/static/description/index.html b/product_contract/static/description/index.html new file mode 100644 index 00000000..80c65180 --- /dev/null +++ b/product_contract/static/description/index.html @@ -0,0 +1,441 @@ + + + + + + +Recurring - Product Contract + + + +
+

Recurring - Product Contract

+ + +

Beta License: AGPL-3 OCA/contract Translate me on Weblate Try me on Runbot

+

This module adds support for products to be linked to contract templates.

+

A contract is created on sale.order confirmation for each different template used in sale order line where recurrence details are set too.

+

Contract product are ignored on invoicing process and pass to nothing to invoice directly.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Sales -> Products and select or create a product.
  2. +
  3. Check “Is a contract” and select the contract template related to the +product
  4. +
  5. Define default recurrence rules
  6. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • LasLabs
  • +
  • ACSONE SA/NV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

sbejaoui

+

This module is part of the OCA/contract project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/product_contract/tests/__init__.py b/product_contract/tests/__init__.py new file mode 100644 index 00000000..9dad07bd --- /dev/null +++ b/product_contract/tests/__init__.py @@ -0,0 +1,6 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_product +from . import test_sale_order diff --git a/product_contract/tests/test_product.py b/product_contract/tests/test_product.py new file mode 100644 index 00000000..d5f1c767 --- /dev/null +++ b/product_contract/tests/test_product.py @@ -0,0 +1,39 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + + +class TestProductTemplate(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env( + context=dict( + cls.env.context, + tracking_disable=True, + no_reset_password=True, + ) + ) + cls.service_product = cls.env.ref("product.product_product_1") + cls.consu_product = cls.env.ref("product.product_product_5") + cls.contract = cls.env["contract.template"].create({"name": "Test"}) + + def test_change_is_contract(self): + """It should verify that the property_contract_template_id + field value is removed for all the companies when + is_contract is set to False""" + self.service_product.is_contract = True + self.service_product.property_contract_template_id = self.contract.id + self.service_product.is_contract = False + self.assertEqual(len(self.service_product.property_contract_template_id), 0) + + def test_check_contract_product_type(self): + """ + It should raise ValidationError on change of is_contract to True + for consu product + """ + with self.assertRaises(ValidationError): + self.consu_product.is_contract = True diff --git a/product_contract/tests/test_sale_order.py b/product_contract/tests/test_sale_order.py new file mode 100644 index 00000000..7415876d --- /dev/null +++ b/product_contract/tests/test_sale_order.py @@ -0,0 +1,370 @@ +# Copyright 2017 LasLabs Inc. +# Copyright 2018 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from dateutil.relativedelta import relativedelta + +from odoo.exceptions import UserError, ValidationError +from odoo.fields import Date +from odoo.tests.common import TransactionCase + + +class TestSaleOrder(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env( + context=dict( + cls.env.context, + tracking_disable=True, + no_reset_password=True, + ) + ) + cls.product1 = cls.env.ref("product.product_product_1") + cls.product2 = cls.env.ref("product.product_product_2") + cls.sale = cls.env.ref("sale.sale_order_2") + cls.contract_template1 = cls.env["contract.template"].create( + {"name": "Template 1"} + ) + cls.contract_template2 = cls.env["contract.template"].create( + { + "name": "Template 2", + "contract_line_ids": [ + ( + 0, + 0, + { + "product_id": cls.product2.id, + "name": "Services from #START# to #END#", + "quantity": 1, + "uom_id": cls.product2.uom_id.id, + "price_unit": 100, + "discount": 50, + "recurring_rule_type": "yearly", + "recurring_interval": 1, + }, + ) + ], + } + ) + cls.product1.with_company(cls.sale.company_id).write( + { + "is_contract": True, + "default_qty": 12, + "recurring_rule_type": "monthlylastday", + "recurring_invoicing_type": "post-paid", + "property_contract_template_id": cls.contract_template1.id, + } + ) + cls.product2.with_company(cls.sale.company_id).write( + { + "is_contract": True, + "property_contract_template_id": cls.contract_template2.id, + } + ) + cls.order_line1 = cls.sale.order_line.filtered( + lambda l: l.product_id == cls.product1 + ) + cls.order_line1.date_start = "2018-01-01" + cls.order_line1.product_uom_qty = 12 + pricelist = cls.sale.partner_id.property_product_pricelist.id + cls.contract = cls.env["contract.contract"].create( + { + "name": "Test Contract 2", + "partner_id": cls.sale.partner_id.id, + "pricelist_id": pricelist, + "contract_type": "sale", + "line_recurrence": True, + "contract_template_id": cls.contract_template1.id, + "contract_line_ids": [ + ( + 0, + 0, + { + "product_id": cls.product1.id, + "name": "Services from #START# to #END#", + "quantity": 1, + "uom_id": cls.product1.uom_id.id, + "price_unit": 100, + "discount": 50, + "recurring_rule_type": "monthly", + "recurring_interval": 1, + "date_start": "2016-02-15", + "recurring_next_date": "2016-02-29", + }, + ) + ], + } + ) + cls.contract_line = cls.contract.contract_line_ids[0] + + def test_compute_is_contract(self): + """Sale Order should have is_contract true if one of its lines is + contract""" + self.assertTrue(self.sale.is_contract) + + def test_action_confirm(self): + """It should create a contract for each contract template used in + order_line""" + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + contracts = self.sale.order_line.mapped("contract_id") + self.assertEqual(len(contracts), 2) + self.assertEqual( + self.order_line1.contract_id.contract_template_id, + self.contract_template1, + ) + contract_line = self.order_line1.contract_id.contract_line_ids + self.assertEqual(contract_line.date_start, Date.to_date("2018-01-01")) + self.assertEqual(contract_line.date_end, Date.to_date("2018-12-31")) + self.assertEqual(contract_line.recurring_next_date, Date.to_date("2018-01-31")) + + def test_change_sale_company(self): + self.assertTrue(self.sale.company_id) + other_company = self.env["res.company"].create( + {"name": "other company", "parent_id": self.sale.company_id.id} + ) + with self.assertRaises(UserError): + self.sale.company_id = other_company + self.sale.action_confirm() + + def test_change_sale_company_2(self): + """Contract company must be the sale order company.""" + self.assertTrue(self.sale.company_id) + self.sale.action_confirm() + contracts = self.sale.order_line.mapped("contract_id") + self.assertEqual(contracts.mapped("company_id"), self.sale.company_id) + + def test_sale_order_invoice_status(self): + """ + sale line linked to contracts must not be invoiced from sale order + """ + self.sale.action_confirm() + self.assertEqual(self.order_line1.invoice_status, "no") + invoice = self.order_line1.contract_id.recurring_create_invoice() + self.assertTrue(invoice) + self.assertEqual(self.order_line1.qty_invoiced, 1) + self.assertEqual(self.order_line1.qty_to_invoice, 0) + + def test_action_confirm_without_contract_creation(self): + """It should create a contract for each contract template used in + order_line""" + self.sale.company_id.create_contract_at_sale_order_confirmation = False + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + self.assertEqual(len(self.sale.order_line.mapped("contract_id")), 0) + self.assertTrue(self.sale.need_contract_creation) + self.sale.action_create_contract() + self.assertEqual(len(self.sale.order_line.mapped("contract_id")), 2) + self.assertFalse(self.sale.need_contract_creation) + self.assertEqual( + self.order_line1.contract_id.contract_template_id, + self.contract_template1, + ) + contract_line = self.order_line1.contract_id.contract_line_ids + self.assertEqual(contract_line.date_start, Date.to_date("2018-01-01")) + self.assertEqual(contract_line.date_end, Date.to_date("2018-12-31")) + self.assertEqual(contract_line.recurring_next_date, Date.to_date("2018-01-31")) + + def test_sale_contract_count(self): + """It should count contracts as many different contract template used + in order_line""" + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + self.assertEqual(self.sale.contract_count, 2) + + def test_onchange_product(self): + """It should get recurrence invoicing info to the sale line from + its product""" + self.order_line1._compute_auto_renew() + self.assertEqual( + self.order_line1.recurring_rule_type, + self.product1.recurring_rule_type, + ) + self.assertEqual( + self.order_line1.recurring_invoicing_type, + self.product1.recurring_invoicing_type, + ) + self.assertEqual(self.order_line1.date_end, Date.to_date("2018-12-31")) + + def test_check_contract_sale_partner(self): + """Can't link order line to a partner contract different then the + order one""" + contract2 = self.env["contract.contract"].create( + { + "name": "Contract", + "contract_template_id": self.contract_template2.id, + "partner_id": self.sale.partner_id.id, + "line_recurrence": True, + } + ) + with self.assertRaises(ValidationError): + self.order_line1.contract_id = contract2 + + def test_check_contract_sale_contract_template(self): + """Can't link order line to a contract with different contract + template then the product one""" + contract1 = self.env["contract.contract"].create( + { + "name": "Contract", + "partner_id": self.env.user.partner_id.id, + "contract_template_id": self.contract_template1.id, + "line_recurrence": True, + } + ) + with self.assertRaises(ValidationError): + self.order_line1.contract_id = contract1 + + def test_no_contract_proudct(self): + """it should create contract for only product contract""" + self.product1.is_contract = False + self.sale.action_confirm() + self.assertFalse(self.order_line1.contract_id) + + def test_sale_order_line_invoice_status(self): + """Sale order line for contract product should have nothing to + invoice as status""" + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + self.assertEqual(self.order_line1.invoice_status, "no") + + def test_sale_order_invoice_status_2(self): + """Sale order with only contract product should have nothing to + invoice status directtly""" + self.sale.order_line.filtered( + lambda line: not line.product_id.is_contract + ).unlink() + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + self.assertEqual(self.sale.invoice_status, "no") + + def test_sale_order_create_invoice(self): + """Should not invoice contract product on sale order create invoice""" + self.product2.is_contract = False + self.product2.invoice_policy = "order" + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + self.sale._create_invoices() + self.assertEqual(len(self.sale.invoice_ids), 1) + invoice_line = self.sale.invoice_ids.invoice_line_ids.filtered( + lambda line: line.product_id.is_contract + ) + self.assertEqual(len(invoice_line), 0) + + def test_link_contract_invoice_to_sale_order(self): + """It should link contract invoice to sale order""" + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + invoice = self.order_line1.contract_id.recurring_create_invoice() + self.assertTrue(invoice in self.sale.invoice_ids) + + def test_contract_upsell(self): + """Should stop contract line at sale order line start date""" + self.order_line1.contract_id = self.contract + self.order_line1.contract_line_id = self.contract_line + self.contract_line.date_end = Date.today() + relativedelta(months=4) + self.contract_line.is_auto_renew = True + self.order_line1.date_start = "2018-06-01" + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + self.assertEqual(self.contract_line.date_end, Date.to_date("2018-05-31")) + self.assertFalse(self.contract_line.is_auto_renew) + new_contract_line = self.env["contract.line"].search( + [("sale_order_line_id", "=", self.order_line1.id)] + ) + self.assertEqual( + self.contract_line.successor_contract_line_id, new_contract_line + ) + self.assertEqual( + new_contract_line.predecessor_contract_line_id, self.contract_line + ) + + def test_contract_upsell_2(self): + """Should stop contract line at sale order line start date""" + self.order_line1.contract_id = self.contract + self.order_line1.contract_line_id = self.contract_line + self.contract_line.write( + { + "date_start": "2018-06-01", + "recurring_next_date": "2018-06-01", + "date_end": False, + } + ) + self.order_line1.date_start = "2018-06-01" + self.order_line1._compute_auto_renew() + self.sale.action_confirm() + self.assertFalse(self.contract_line.date_end) + self.assertTrue(self.contract_line.is_canceled) + + def test_onchange_product_id_recurring_info(self): + self.product2.write( + { + "recurring_rule_type": "monthly", + "recurring_invoicing_type": "pre-paid", + "is_auto_renew": True, + "default_qty": 12, + "termination_notice_interval": "6", + "termination_notice_rule_type": "weekly", + } + ) + self.contract_line.write( + { + "date_start": Date.today(), + "date_end": Date.today() + relativedelta(years=1), + "recurring_next_date": Date.today(), + "product_id": self.product2.id, + } + ) + self.contract_line._onchange_product_id_recurring_info() + self.assertEqual(self.contract_line.recurring_rule_type, "monthly") + self.assertEqual(self.contract_line.recurring_invoicing_type, "pre-paid") + self.assertEqual(self.contract_line.recurring_interval, 1) + self.assertEqual(self.contract_line.is_auto_renew, True) + self.assertEqual(self.contract_line.auto_renew_interval, 1) + self.assertEqual(self.contract_line.auto_renew_rule_type, "yearly") + self.assertEqual(self.contract_line.termination_notice_interval, 6) + self.assertEqual(self.contract_line.termination_notice_rule_type, "weekly") + + def test_action_show_contracts(self): + self.sale.action_confirm() + action = self.sale.action_show_contracts() + self.assertEqual( + self.env["contract.contract"].search(action["domain"]), + self.sale.order_line.mapped("contract_id"), + ) + + def test_check_contact_is_not_terminated(self): + self.contract.is_terminated = True + with self.assertRaises(ValidationError): + self.order_line1.contract_id = self.contract + + def test_check_contact_is_not_terminated_1(self): + self.order_line1.contract_id = self.contract + self.sale.action_confirm() + self.contract.is_terminated = True + self.sale._action_cancel() + with self.assertRaises(ValidationError): + self.sale.action_draft() + self.contract.is_terminated = False + self.sale.action_draft() + + def test_order_lines_with_the_same_contract_template(self): + """It should create one contract with two lines grouped by contract + template""" + self.product2.with_company(self.sale.company_id).write( + { + "is_contract": True, + "property_contract_template_id": self.contract_template1.id, + } + ) + self.sale.order_line._compute_auto_renew() + self.sale.action_confirm() + contracts = self.sale.order_line.mapped("contract_id") + self.assertEqual(len(contracts), 1) + self.assertEqual(len(contracts.contract_line_ids), 2) + contracts = ( + self.env["contract.line"] + .search([("sale_order_line_id", "in", self.sale.order_line.ids)]) + .mapped("contract_id") + ) + self.assertEqual(len(contracts), 1) diff --git a/product_contract/views/contract.xml b/product_contract/views/contract.xml new file mode 100644 index 00000000..0b67d521 --- /dev/null +++ b/product_contract/views/contract.xml @@ -0,0 +1,29 @@ + + + + + contract.contract + + + + + + + + diff --git a/product_contract/views/product_template.xml b/product_contract/views/product_template.xml new file mode 100644 index 00000000..07a8e1ef --- /dev/null +++ b/product_contract/views/product_template.xml @@ -0,0 +1,80 @@ + + + + + account.invoice.select.contract + product.template + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
diff --git a/product_contract/views/res_config_settings.xml b/product_contract/views/res_config_settings.xml new file mode 100644 index 00000000..42ec59dd --- /dev/null +++ b/product_contract/views/res_config_settings.xml @@ -0,0 +1,29 @@ + + + + + res.config.settings.form (in product_contract) + + res.config.settings + + + +
+
+ +
+
+
+
+
+
+
+
diff --git a/product_contract/views/sale_order.xml b/product_contract/views/sale_order.xml new file mode 100644 index 00000000..a0ea683d --- /dev/null +++ b/product_contract/views/sale_order.xml @@ -0,0 +1,124 @@ + + + + + sale.order.form (in product_contract) + sale.order + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +