diff --git a/README.md b/README.md index a01ad87f3f..7b3b21f5f7 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ addon | version | maintainers | summary [contract_queue_job](contract_queue_job/) | 18.0.1.0.0 | sbejaoui BurkhalterY | This addon make contract invoicing cron plan each contract in a job instead of creating all invoices in one transaction [contract_refund_on_stop](contract_refund_on_stop/) | 18.0.1.0.0 | sbejaoui | Contract Refund On Stop [contract_sale](contract_sale/) | 18.0.1.0.0 | | Contract from Sale +[contract_sale_generation](contract_sale_generation/) | 18.0.1.0.1 | | Contracts Management - Recurring Sales [contract_sale_invoicing](contract_sale_invoicing/) | 18.0.1.1.0 | | Include sales to invoice in contract invoice creation [contract_sale_mandate](contract_sale_mandate/) | 18.0.1.0.0 | | This module manages the banking mandate from the sale order to the contract. [contract_sale_payment_mode](contract_sale_payment_mode/) | 18.0.1.0.0 | | This addon manages payment mode from sale order to contract. @@ -47,6 +48,7 @@ addon | version | maintainers | summary [contract_variable_qty_timesheet](contract_variable_qty_timesheet/) | 18.0.1.0.0 | carlosdauden pedrobaeza danypr92 | Add formula to invoice [contract_variable_quantity](contract_variable_quantity/) | 18.0.1.0.0 | | Variable quantity in contract recurrent invoicing [product_contract](product_contract/) | 18.0.1.1.2 | sbejaoui | Recurring - Product Contract +[product_contract_recurrence_in_price](product_contract_recurrence_in_price/) | 18.0.1.0.0 | | Add an option to include the recurrences in the total of a Sale Order Line. [product_contract_variable_quantity](product_contract_variable_quantity/) | 18.0.1.0.1 | | Product contract with variable quantity [subscription_oca](subscription_oca/) | 18.0.1.0.0 | | Generate recurring invoices. diff --git a/contract_sale_generation/README.rst b/contract_sale_generation/README.rst new file mode 100644 index 0000000000..e7c00e9c58 --- /dev/null +++ b/contract_sale_generation/README.rst @@ -0,0 +1,97 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +====================================== +Contracts Management - Recurring Sales +====================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:808234541f0cfcabaf228dd995245e29f57c47b4f7733033d3ca4a6539f8efa1 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-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/18.0/contract_sale_generation + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-18-0/contract-18-0-contract_sale_generation + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/contract&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends functionality of contracts to be able to generate +sales orders instead of invoices. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +1. Go to Sales -> Contracts and select or create a new contract. +2. Fill fields for selecting the recurrency and invoice parameters: + + - Type defines document that contract will generate, can be "Sales" + or "Invoices" + - Sale Autoconfirm, validate Sales Orders if type is "Sales" + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* ACSONE SA/NV +* PESOL + +Contributors +------------ + +- Angel Moya +- Florent THOMAS +- Serpent Consulting Services Pvt. Ltd. +- Denis Roussel + +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. + +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/contract_sale_generation/__init__.py b/contract_sale_generation/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/contract_sale_generation/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/contract_sale_generation/__manifest__.py b/contract_sale_generation/__manifest__.py new file mode 100644 index 0000000000..4bd832d04a --- /dev/null +++ b/contract_sale_generation/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2017 Pesol () +# Copyright 2017 Angel Moya +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html) + + +{ + "name": "Contracts Management - Recurring Sales", + "version": "18.0.1.0.1", + "category": "Contract Management", + "license": "AGPL-3", + "author": "ACSONE SA/NV, PESOL, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/contract", + "depends": ["contract_sale"], + "data": [ + "data/contract_cron.xml", + "views/contract.xml", + ], + "installable": True, +} diff --git a/contract_sale_generation/data/contract_cron.xml b/contract_sale_generation/data/contract_cron.xml new file mode 100644 index 0000000000..2b82638071 --- /dev/null +++ b/contract_sale_generation/data/contract_cron.xml @@ -0,0 +1,11 @@ + + + Generate Recurring sales from Contracts + + code + model.cron_recurring_create_sale() + + 1 + days + + diff --git a/contract_sale_generation/i18n/ca.po b/contract_sale_generation/i18n/ca.po new file mode 100644 index 0000000000..321d628348 --- /dev/null +++ b/contract_sale_generation/i18n/ca.po @@ -0,0 +1,135 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2022-03-22 12:17+0000\n" +"Last-Translator: Noel estudillo \n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\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.3.2\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Contracte recurrent abstracte" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "CREAR VENDES" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Contracte" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "Línia de contracte" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Generar vendes recurrents a partir de contractes" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Venda" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "Venda Autoconfirmació" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Recompte de vendes" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "Comanda de venda" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línia de comanda de vendes" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Contract Line to replace" +#~ msgstr "Línia de contracte a substituir" + +#, python-format +#~ msgid "" +#~ "Contract manually sale order: Sale Order" +#~ msgstr "" +#~ "Contracte manualment la comanda de venda: Comanda de venda" + +#~ msgid "Invoice" +#~ msgstr "Factura" + +#~ msgid "Recurring Sales/Invoicing" +#~ msgstr "Vendes/Facturacions recurrents" + +#~ msgid "Type" +#~ msgstr "Tipus" + +#~ msgid "Analytic Account" +#~ msgstr "Compte analític" diff --git a/contract_sale_generation/i18n/contract_sale_generation.pot b/contract_sale_generation/i18n/contract_sale_generation.pot new file mode 100644 index 0000000000..1d47b49586 --- /dev/null +++ b/contract_sale_generation/i18n/contract_sale_generation.pot @@ -0,0 +1,100 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_template +msgid "Contract Template" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Defines what document is automatically generated by the cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" diff --git a/contract_sale_generation/i18n/de.po b/contract_sale_generation/i18n/de.po new file mode 100644 index 0000000000..d883a6f18b --- /dev/null +++ b/contract_sale_generation/i18n/de.po @@ -0,0 +1,135 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2019-02-22 15:51+0000\n" +"Last-Translator: Maria Sparenberg \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.4\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Verkaufsaufträge" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +#, fuzzy +msgid "Sale Autoconfirm" +msgstr "automatisches Bestätigen der Verkaufsaufträge" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +#, fuzzy +msgid "Sales Order" +msgstr "Verkäufe" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Rechnung" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Analytic Account" +#~ msgstr "Kostenstelle" + +#~ msgid "Create sales" +#~ msgstr "Verkaufsaufträge anlegen" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Sie müssen zuerst einen Kunden für den Vertrag '%s' auswählen!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" + +#~ msgid "⇒ Show recurring sales" +#~ msgstr "=> Periodische Verkaufsaufträge anzeigen" diff --git a/contract_sale_generation/i18n/el_GR.po b/contract_sale_generation/i18n/el_GR.po new file mode 100644 index 0000000000..e514936228 --- /dev/null +++ b/contract_sale_generation/i18n/el_GR.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/" +"el_GR/)\n" +"Language: el_GR\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: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Αναλυτικός Λογαριασμός" diff --git a/contract_sale_generation/i18n/es.po b/contract_sale_generation/i18n/es.po new file mode 100644 index 0000000000..cf2a27f824 --- /dev/null +++ b/contract_sale_generation/i18n/es.po @@ -0,0 +1,145 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Ismael Calvo , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2024-03-21 20:34+0000\n" +"Last-Translator: Ivorra78 \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 4.17\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Contrato recurrente abstracto" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "CREAR VENTAS" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "Seleccione el documento que será generado por la acción planificada." + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Contrato" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "Autoconfirmación de contrato" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "Línea de contrato" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" +"Contrato manual de orden de venta: Orden de venta" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Generar ventas recurrentes a partir de contratos" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "Tipo de Generación" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Venta" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "Autoconfirmación de venta" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Recuento de ventas" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "Orden de Venta" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de Orden de Venta" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" +"Se trata de un campo técnico para saber si la orden debe confirmarse " +"automáticamente si se genera por contrato." + +#~ msgid "Invoice" +#~ msgstr "Factura" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Analytic Account" +#~ msgstr "Cuenta analítica" + +#~ msgid "Create sales" +#~ msgstr "Crear ventas" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "¡Seleccione un cliente para este contrato %s!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" + +#~ msgid "⇒ Show recurring sales" +#~ msgstr "⇒ Mostrar ventas recurrentes" + +#~ msgid "" +#~ "You must review start and end dates!\n" +#~ "%s" +#~ msgstr "" +#~ "Debe revisar las fechas de inicio y de fin\n" +#~ "%s" diff --git a/contract_sale_generation/i18n/es_AR.po b/contract_sale_generation/i18n/es_AR.po new file mode 100644 index 0000000000..e446d78006 --- /dev/null +++ b/contract_sale_generation/i18n/es_AR.po @@ -0,0 +1,128 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-02-23 00:17+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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.3.2\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Contrato Recurrente Abstracto" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "CREAR VENTAS" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Contrato" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "Auto Confirmar Contrato" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "Línea de Contrato" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Generar ventas Recurrentes desde Contratos" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "Autoconfirmar Venta" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Cuenta de Venta" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "Pedido de Venta" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de Pedido de Venta" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" +"Este es un campo técnico para saber si el pedido debe confirmarse " +"automáticamente si se genera por contrato." + +#, python-format +#~ msgid "" +#~ "Contract manually sale order: Sale Order" +#~ msgstr "" +#~ "Pedido de ventas manual del contrato: Pedido de Ventas" + +#~ msgid "Display Name" +#~ msgstr "Mostrar Nombre" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última Modificación el" diff --git a/contract_sale_generation/i18n/es_MX.po b/contract_sale_generation/i18n/es_MX.po new file mode 100644 index 0000000000..970a092304 --- /dev/null +++ b/contract_sale_generation/i18n/es_MX.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Cuenta analítica" diff --git a/contract_sale_generation/i18n/fi.po b/contract_sale_generation/i18n/fi.po new file mode 100644 index 0000000000..71f9224d4b --- /dev/null +++ b/contract_sale_generation/i18n/fi.po @@ -0,0 +1,135 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2019-03-20 14:14+0000\n" +"Last-Translator: Jarmo Kortetjärvi \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" +"X-Generator: Weblate 3.5.1\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Myynti" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +#, fuzzy +msgid "Sale Autoconfirm" +msgstr "Myynnin automaattivahvistus" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +#, fuzzy +msgid "Sales Order" +msgstr "Myynnit" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Lasku" + +#~ msgid "Type" +#~ msgstr "Tyyppi" + +#~ msgid "Analytic Account" +#~ msgstr "Analyyttinen tili" + +#~ msgid "Create sales" +#~ msgstr "Luo myyntejä" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Sopimukselle täytyy ensin valita asiakas %s!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" + +#~ msgid "⇒ Show recurring sales" +#~ msgstr "⇒ Näytä toistuvaismyynnit" diff --git a/contract_sale_generation/i18n/fr.po b/contract_sale_generation/i18n/fr.po new file mode 100644 index 0000000000..2355387462 --- /dev/null +++ b/contract_sale_generation/i18n/fr.po @@ -0,0 +1,155 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# 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: 2021-01-04 11:44+0000\n" +"Last-Translator: Rémi \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 4.3.2\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Base pour les contrats récurrents" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "CRÉER LES COMMANDES" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Contrat" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "Ligne de Contrat" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Générer les ventes récurrentes depuis les Contrats" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Vente" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "Confirmation automatique des commandes" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Nombre de Commandes" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "Commandes" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "Ligne de commande" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Contract Line to replace" +#~ msgstr "Ligne de contrat à remplacer" + +#, python-format +#~ msgid "" +#~ "Contract manually sale order: Sale Order" +#~ msgstr "" +#~ "Création manuelle de la commande depuis le contrat : Commande" + +#~ msgid "Invoice" +#~ msgstr "Facture" + +#~ msgid "Recurring Sales/Invoicing" +#~ msgstr "Commandes / Factures Récurrentes" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Analytic Account" +#~ msgstr "Compte analytique" + +#~ msgid "Create sales" +#~ msgstr "Créer des commandes" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Vous devez d'abord sélectionner un Client pour le contrat %s!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" + +#~ msgid "⇒ Show recurring sales" +#~ msgstr "⇒ Voir les commandes récurrentes" + +#~ msgid "" +#~ "You must review start and end dates!\n" +#~ "%s" +#~ msgstr "" +#~ "Vous devez vérifier vos dates de début et de fin!\n" +#~ "%s" diff --git a/contract_sale_generation/i18n/gl.po b/contract_sale_generation/i18n/gl.po new file mode 100644 index 0000000000..d2cc8a08ea --- /dev/null +++ b/contract_sale_generation/i18n/gl.po @@ -0,0 +1,135 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2019-02-07 11:50+0000\n" +"Last-Translator: Marta Vázquez Rodríguez \n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.4\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Venda" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +#, fuzzy +msgid "Sale Autoconfirm" +msgstr "Autoconfirmar venda" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +#, fuzzy +msgid "Sales Order" +msgstr "Vendas" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Factura" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Analytic Account" +#~ msgstr "Conta analítica" + +#~ msgid "Create sales" +#~ msgstr "Crear vendas" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Seleccione un cliente para este contrato %s!" + +#~ msgid "account.analytic.contract" +#~ msgstr "'account.analytic.contract'" + +#~ msgid "⇒ Show recurring sales" +#~ msgstr "⇒ Mostrar vendas recurrentes" diff --git a/contract_sale_generation/i18n/hi_IN.po b/contract_sale_generation/i18n/hi_IN.po new file mode 100644 index 0000000000..54307f22c7 --- /dev/null +++ b/contract_sale_generation/i18n/hi_IN.po @@ -0,0 +1,118 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# Ashish Deshmukh , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+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: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "चालान" + +#~ msgid "Analytic Account" +#~ msgstr "विश्लेषणात्मक खाता" diff --git a/contract_sale_generation/i18n/hr.po b/contract_sale_generation/i18n/hr.po new file mode 100644 index 0000000000..52c641c092 --- /dev/null +++ b/contract_sale_generation/i18n/hr.po @@ -0,0 +1,145 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2024-05-28 16:35+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 4.17\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Apstraktni ponavljajući ugovor" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "KREIRAJ PRODAJE" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "Odaberite dokument koje će biti kreiran automatski kroz cron." + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Ugovor" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "Automatsko potvrđivanje ugovora" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "Stavka ugovora" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Generiraj ponavljajuće prodajne naloge iz Ugovora" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "Tip generiranja" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Prodaja" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +#, fuzzy +msgid "Sale Autoconfirm" +msgstr "Automatski potvrdi ponude" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Broj prodaja" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "Prodajni nalog" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "Stavka prodajnog naloga" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" +"Ovo je tehničko polje koje služi da znamo treba li nalog biti automatski " +"potvrđen ako je generiran iz ugovora." + +#~ msgid "Invoice" +#~ msgstr "Račun" + +#~ msgid "Type" +#~ msgstr "Tip" + +#~ msgid "Analytic Account" +#~ msgstr "Analitički konto" + +#~ msgid "Create sales" +#~ msgstr "Kreiraj ponude" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Prvo morate odabrati partnera ua ugovor %s!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" + +#~ msgid "⇒ Show recurring sales" +#~ msgstr "⇒ Prikaži ponavljajuće ponude" + +#~ msgid "" +#~ "You must review start and end dates!\n" +#~ "%s" +#~ msgstr "" +#~ "Morate revidirati početni i završni datum ugovora!!\n" +#~ "%s" diff --git a/contract_sale_generation/i18n/hr_HR.po b/contract_sale_generation/i18n/hr_HR.po new file mode 100644 index 0000000000..24f0fa0303 --- /dev/null +++ b/contract_sale_generation/i18n/hr_HR.po @@ -0,0 +1,126 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2018-04-03 12:19+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: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Račun" + +#~ msgid "Analytic Account" +#~ msgstr "Konto analitike" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Prvo morate odabrati partnera za Ugovor %s!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" diff --git a/contract_sale_generation/i18n/hu.po b/contract_sale_generation/i18n/hu.po new file mode 100644 index 0000000000..016134c370 --- /dev/null +++ b/contract_sale_generation/i18n/hu.po @@ -0,0 +1,114 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"Language: hu\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: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Analitikus gyűjtőkód könyvelés" diff --git a/contract_sale_generation/i18n/it.po b/contract_sale_generation/i18n/it.po new file mode 100644 index 0000000000..a32c2f5dac --- /dev/null +++ b/contract_sale_generation/i18n/it.po @@ -0,0 +1,135 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Lorenzo Battistini , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2024-05-06 14:42+0000\n" +"Last-Translator: mymage \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.17\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Contratto ricorrente astratto" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "CREA ORDINI" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "Scegliere il documento che sarà generato automaticamente dal cron." + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Contratto" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "Auto conferma contratto" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "Riga contratto" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" +"Contratto manuale ordine vendita: Ordine di vendita" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Genera vendite ricorrenti dai contratti" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "Tipo generazione" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Vendita" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "Conferma automatica ordine" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Conteggio vendite" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "Ordine di vendita" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "Riga ordine di vendita" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" +"Questo è un campo tecnico per sapere se l'ordine deve essere confermato " +"automaticamente se generato dal contratto." + +#~ msgid "Contract Line to replace" +#~ msgstr "Riga contratto da sostituire" + +#~ msgid "Invoice" +#~ msgstr "Fattura" + +#~ msgid "Recurring Sales/Invoicing" +#~ msgstr "Vendite/fatture ricorrenti" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Analytic Account" +#~ msgstr "Conto Analitico" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Bisogna prima selezionare un cliente per il contratto %s!" diff --git a/contract_sale_generation/i18n/nl.po b/contract_sale_generation/i18n/nl.po new file mode 100644 index 0000000000..ad2f1b72d5 --- /dev/null +++ b/contract_sale_generation/i18n/nl.po @@ -0,0 +1,128 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Erwin van der Ploeg , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2024-04-02 08:41+0000\n" +"Last-Translator: Thijs van Oers \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" +"X-Generator: Weblate 4.17\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Abstract terugkerend contract" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "Maak verkoopcontract aan" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" +"Kies het document dat automatisch wordt gegenereerd door de automatische " +"actie." + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Contract" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "Automatische bevestiging contract" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "contract regel" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" +"Handmatig aangemaakt contract : Verkooporder" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Maak terugkerende verkopen aan vanuit contracten" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "Aanmaak soort" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Verkoop" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "automatische bevestiging verkoop" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Verkoop aantal" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "verkooporder" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "orderregel" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" +"Dit is een technisch veld om te weten of de order automatisch moet worden " +"bevestigd als deze is gegenereerd door een contract." + +#~ msgid "Invoice" +#~ msgstr "Factuur" + +#~ msgid "Analytic Account" +#~ msgstr "Kostenplaats" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr " Er moet eerst een klant worden ingesteld op contract %s!" diff --git a/contract_sale_generation/i18n/nl_NL.po b/contract_sale_generation/i18n/nl_NL.po new file mode 100644 index 0000000000..ef10b3aa20 --- /dev/null +++ b/contract_sale_generation/i18n/nl_NL.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+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: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Factuur" diff --git a/contract_sale_generation/i18n/pt.po b/contract_sale_generation/i18n/pt.po new file mode 100644 index 0000000000..7df1a4e1a3 --- /dev/null +++ b/contract_sale_generation/i18n/pt.po @@ -0,0 +1,132 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Pedro Castro Silva , 2017 +# Pedro Castro Silva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2018-04-03 12:19+0000\n" +"Last-Translator: Pedro Castro Silva , 2017\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" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Fatura" + +#~ msgid "Analytic Account" +#~ msgstr "Conta Analítica" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Deve primeiro selecionar um Cliente para o Contrato %s!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" + +#~ msgid "" +#~ "You must review start and end dates!\n" +#~ "%s" +#~ msgstr "" +#~ "Tem que rever as datas de início e fim!\n" +#~ "%s" diff --git a/contract_sale_generation/i18n/pt_BR.po b/contract_sale_generation/i18n/pt_BR.po new file mode 100644 index 0000000000..7bfb1984df --- /dev/null +++ b/contract_sale_generation/i18n/pt_BR.po @@ -0,0 +1,145 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Albert Vonpupp , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2024-05-21 03:16+0000\n" +"Last-Translator: Rodrigo Macedo \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 4.17\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "Contrato Recorrente Abstrato" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "CRIAR VENDAS" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "Escolha o documento que será gerado automaticamente pelo cron." + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "Contrato" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "Confirmação automática do Contrato" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "Linha do Contrato" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" +"Contratar manualmente o pedido de venda: Pedido de Venda" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "Gerar vendas recorrentes a partir de Contratos" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "Tipo de Geração" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Venda" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "Autoconfirmar Venda" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "Contagem de Venda" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "Pedidos de Venda" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linhas dos Pedidos de Venda" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" +"Este é um campo técnico para saber se o pedido deve ser confirmado " +"automaticamente se gerado por contrato." + +#~ msgid "Contract Line to replace" +#~ msgstr "Linha do Contrato para substituir" + +#, python-format +#~ msgid "" +#~ "Contract manually sale order: Sale Order" +#~ msgstr "" +#~ "Contratar pedido de venda manual: Pedido de Venda" + +#~ msgid "Invoice" +#~ msgstr "Fatura" + +#~ msgid "Recurring Sales/Invoicing" +#~ msgstr "Vendas/Faturas Recorrentes" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Analytic Account" +#~ msgstr "Conta Analítica" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Primeiro você deve selecionar um Cliente para o contrato %s!" diff --git a/contract_sale_generation/i18n/pt_PT.po b/contract_sale_generation/i18n/pt_PT.po new file mode 100644 index 0000000000..6cab708e70 --- /dev/null +++ b/contract_sale_generation/i18n/pt_PT.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Conta Analítica" diff --git a/contract_sale_generation/i18n/ro.po b/contract_sale_generation/i18n/ro.po new file mode 100644 index 0000000000..5ae46555d1 --- /dev/null +++ b/contract_sale_generation/i18n/ro.po @@ -0,0 +1,119 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +# Dorin Hongu , 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: Dorin Hongu , 2018\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Factura" + +#~ msgid "Analytic Account" +#~ msgstr "Cont analitic" diff --git a/contract_sale_generation/i18n/ru.po b/contract_sale_generation/i18n/ru.po new file mode 100644 index 0000000000..62e99ab7a4 --- /dev/null +++ b/contract_sale_generation/i18n/ru.po @@ -0,0 +1,128 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# Мед Ведь , 2017 +# nek, 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2018-04-03 12:19+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: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Продажа" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +#, fuzzy +msgid "Sales Order" +msgstr "Продажи" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Счёт-фактура" + +#~ msgid "Analytic Account" +#~ msgstr "Аналитический счет" + +#~ msgid "" +#~ "You must review start and end dates!\n" +#~ "%s" +#~ msgstr "" +#~ "Вы должны проверить даты начала и окончания!\n" +#~ "%s" diff --git a/contract_sale_generation/i18n/sk_SK.po b/contract_sale_generation/i18n/sk_SK.po new file mode 100644 index 0000000000..ed4ba43157 --- /dev/null +++ b/contract_sale_generation/i18n/sk_SK.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovak (Slovakia) (https://www.transifex.com/oca/teams/23907/" +"sk_SK/)\n" +"Language: sk_SK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Analytický účet" diff --git a/contract_sale_generation/i18n/sl.po b/contract_sale_generation/i18n/sl.po new file mode 100644 index 0000000000..cb7e5b0e26 --- /dev/null +++ b/contract_sale_generation/i18n/sl.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "Analitični konto" diff --git a/contract_sale_generation/i18n/tr.po b/contract_sale_generation/i18n/tr.po new file mode 100644 index 0000000000..c0c28c1fa1 --- /dev/null +++ b/contract_sale_generation/i18n/tr.po @@ -0,0 +1,141 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# 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:47+0000\n" +"PO-Revision-Date: 2018-04-21 01:47+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: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "Satış" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +#, fuzzy +msgid "Sale Autoconfirm" +msgstr "Satış otomatik onaylama" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +#, fuzzy +msgid "Sales Order" +msgstr "Satışlar" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Fatura" + +#~ msgid "Type" +#~ msgstr "Türü" + +#~ msgid "Analytic Account" +#~ msgstr "Analitik Hesap" + +#~ msgid "Create sales" +#~ msgstr "Satış Oluşturun" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Önce Sözleşme %s için bir Müşteri seçmelisiniz!" + +#~ msgid "account.analytic.contract" +#~ msgstr "account.analytic.contract" + +#~ msgid "⇒ Show recurring sales" +#~ msgstr "⇒ Tekrarlayan Satışları Göster" + +#~ msgid "" +#~ "You must review start and end dates!\n" +#~ "%s" +#~ msgstr "" +#~ "Başlangıç ve bitiş tarihlerini incelemelisiniz!\n" +#~ "%s" diff --git a/contract_sale_generation/i18n/tr_TR.po b/contract_sale_generation/i18n/tr_TR.po new file mode 100644 index 0000000000..1890a82a98 --- /dev/null +++ b/contract_sale_generation/i18n/tr_TR.po @@ -0,0 +1,121 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# Ediz Duman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-03 12:19+0000\n" +"PO-Revision-Date: 2018-04-03 12:19+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=2; plural=(n > 1);\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Fatura" + +#~ msgid "Analytic Account" +#~ msgstr "Analitik Hesap" + +#~ msgid "You must first select a Customer for Contract %s!" +#~ msgstr "Önce bir Müşteri Sözleşmesi seçmelisiniz %s!" diff --git a/contract_sale_generation/i18n/zh_CN.po b/contract_sale_generation/i18n/zh_CN.po new file mode 100644 index 0000000000..3b1fc17231 --- /dev/null +++ b/contract_sale_generation/i18n/zh_CN.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_sale_generation +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 01:41+0000\n" +"PO-Revision-Date: 2017-11-30 01:41+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_abstract_contract +msgid "Abstract Recurring Contract" +msgstr "" + +#. module: contract_sale_generation +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "CREATE SALES" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,help:contract_sale_generation.field_contract_template__generation_type +msgid "Choose the document that will be automatically generated by cron." +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_contract +msgid "Contract" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "Contract Auto Confirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_contract_line +#: model:ir.model.fields,field_description:contract_sale_generation.field_sale_order_line__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_sale_generation +#. odoo-python +#: code:addons/contract_sale_generation/models/contract.py:0 +#, python-format +msgid "" +"Contract manually sale order: Sale Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.actions.server,name:contract_sale_generation.contract_cron_for_sale_ir_actions_server +#: model:ir.cron,cron_name:contract_sale_generation.contract_cron_for_sale +msgid "Generate Recurring sales from Contracts" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__generation_type +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__generation_type +msgid "Generation Type" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_abstract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_contract__generation_type__sale +#: model:ir.model.fields.selection,name:contract_sale_generation.selection__contract_template__generation_type__sale +msgid "Sale" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_abstract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_autoconfirm +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_template__sale_autoconfirm +msgid "Sale Autoconfirm" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,field_description:contract_sale_generation.field_contract_contract__sale_count +msgid "Sale Count" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order +#: model_terms:ir.ui.view,arch_db:contract_sale_generation.contract_contract_form_view_recurring_sale_form +msgid "Sales Order" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model,name:contract_sale_generation.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: contract_sale_generation +#: model:ir.model.fields,help:contract_sale_generation.field_sale_order__contract_auto_confirm +msgid "" +"This is a technical field in order to know if the order shouldbe " +"automatically confirmed if generated by contract." +msgstr "" + +#~ msgid "Analytic Account" +#~ msgstr "核算科目" diff --git a/contract_sale_generation/models/__init__.py b/contract_sale_generation/models/__init__.py new file mode 100644 index 0000000000..4a180e8ddc --- /dev/null +++ b/contract_sale_generation/models/__init__.py @@ -0,0 +1,7 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import contract_template +from . import contract +from . import sale_order +from . import sale_order_line +from . import contract_line diff --git a/contract_sale_generation/models/contract.py b/contract_sale_generation/models/contract.py new file mode 100644 index 0000000000..27a54e3a21 --- /dev/null +++ b/contract_sale_generation/models/contract.py @@ -0,0 +1,134 @@ +# © 2004-2010 OpenERP SA +# © 2014 Angel Moya +# © 2015 Pedro M. Baeza +# © 2016 Carlos Dauden +# Copyright 2016-2017 LasLabs Inc. +# Copyright 2017 Pesol () +# Copyright 2017 Angel Moya +# Copyright 2018 Therp BV . +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import Command, _, api, fields, models + + +class ContractContract(models.Model): + _inherit = "contract.contract" + + sale_count = fields.Integer(compute="_compute_sale_count") + + def _prepare_sale(self, date_ref): + self.ensure_one() + sale = self.env["sale.order"].new( + { + "partner_id": self.partner_id, + "date_order": date_ref, + "origin": self.name, + "company_id": self.company_id.id, + "user_id": self.partner_id.user_id.id, + } + ) + if self.payment_term_id: + sale.payment_term_id = self.payment_term_id.id + if self.fiscal_position_id: + sale.fiscal_position_id = self.fiscal_position_id.id + return sale._convert_to_write(sale._cache) + + def _get_related_sales(self): + self.ensure_one() + sales = ( + self.env["sale.order.line"] + .search([("contract_line_id", "in", self.contract_line_ids.ids)]) + .mapped("order_id") + ) + return sales + + def _compute_sale_count(self): + for rec in self: + rec.sale_count = len(rec._get_related_sales()) + + def action_show_sales(self): + self.ensure_one() + tree_view = self.env.ref("sale.view_order_tree", raise_if_not_found=False) + form_view = self.env.ref("sale.view_order_form", raise_if_not_found=False) + action = { + "type": "ir.actions.act_window", + "name": "Sales Orders", + "res_model": "sale.order", + "view_type": "form", + "view_mode": "list,kanban,form,calendar,pivot,graph,activity", + "domain": [("id", "in", self._get_related_sales().ids)], + } + if tree_view and form_view: + action["views"] = [(tree_view.id, "list"), (form_view.id, "form")] + return action + + def recurring_create_sale(self): + """ + This method triggers the creation of the next sale order of the + contracts even if their next sale order date is in the future. + """ + sales = self._recurring_create_sale() + for sale_rec in sales: + sale_rec.message_post( + body=_( + "Contract manually sale order: " + '' + "Sale Order" + "" + ) + % {"model": sale_rec._name, "id": sale_rec.id} + ) + return sales + + def _prepare_recurring_sales_values(self, date_ref=False): + """ + This method builds the list of sales values to create, based on + the lines to sale of the contracts in self. + !!! The date of next invoice (recurring_next_date) is updated here !!! + :return: list of dictionaries (invoices values) + """ + sales_values = [] + for contract in self: + if not date_ref: + date_ref = contract.recurring_next_date + if not date_ref: + # this use case is possible when recurring_create_invoice is + # called for a finished contract + continue + contract_lines = contract._get_lines_to_invoice(date_ref) + if not contract_lines: + continue + sale_values = contract._prepare_sale(date_ref) + for line in contract_lines: + sale_values.setdefault("order_line", []) + invoice_line_values = line._prepare_sale_line( + sale_values=sale_values, + ) + if invoice_line_values: + sale_values["order_line"].append( + Command.create(invoice_line_values) + ) + sales_values.append(sale_values) + contract_lines._update_last_date_invoiced() + return sales_values + + def _recurring_create_sale(self, date_ref=False): + sales_values = self._prepare_recurring_sales_values(date_ref) + sale_orders = self.env["sale.order"].create(sales_values) + sale_orders_to_confirm = sale_orders.filtered( + lambda sale: sale.contract_auto_confirm + ) + sale_orders_to_confirm.action_confirm() + self._compute_recurring_next_date() + return sale_orders + + @api.model + def _get_recurring_create_func(self, create_type="invoice"): + res = super()._get_recurring_create_func(create_type=create_type) + if create_type == "sale": + return self.__class__._recurring_create_sale + return res + + @api.model + def cron_recurring_create_sale(self, date_ref=None): + return self._cron_recurring_create(date_ref, create_type="sale") diff --git a/contract_sale_generation/models/contract_line.py b/contract_sale_generation/models/contract_line.py new file mode 100644 index 0000000000..1837e91e79 --- /dev/null +++ b/contract_sale_generation/models/contract_line.py @@ -0,0 +1,54 @@ +# Copyright (C) 2020 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ContractLine(models.Model): + _inherit = "contract.line" + + def _prepare_sale_line_vals(self, dates, order_id=False): + sale_line_vals = { + "product_id": self.product_id.id, + "product_uom_qty": self._get_quantity_to_invoice(*dates), + "product_uom": self.uom_id.id, + "discount": self.discount, + "contract_line_id": self.id, + "display_type": self.display_type, + } + if order_id: + sale_line_vals["order_id"] = order_id.id + return sale_line_vals + + def _prepare_sale_line(self, order_id=False, sale_values=False): + self.ensure_one() + dates = self._get_period_to_invoice( + self.last_date_invoiced, self.recurring_next_date + ) + sale_line_vals = self._prepare_sale_line_vals(dates, order_id=order_id) + + order_line = ( + self.env["sale.order.line"] + .with_company(self.contract_id.company_id.id) + .new(sale_line_vals) + ) + if sale_values and not order_id: + sale = ( + self.env["sale.order"] + .with_company(self.contract_id.company_id.id) + .new(sale_values) + ) + order_line.order_id = sale + # Get other order line values from product onchange + order_line._onchange_product_id_warning() + sale_line_vals = order_line._convert_to_write(order_line._cache) + # Insert markers + name = self._insert_markers(dates[0], dates[1]) + sale_line_vals.update( + { + "sequence": self.sequence, + "name": name, + "price_unit": self.price_unit, + } + ) + return sale_line_vals diff --git a/contract_sale_generation/models/contract_template.py b/contract_sale_generation/models/contract_template.py new file mode 100644 index 0000000000..794f663094 --- /dev/null +++ b/contract_sale_generation/models/contract_template.py @@ -0,0 +1,15 @@ +# Copyright 2017 Pesol () +# Copyright 2017 Angel Moya +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ContractTemplate(models.AbstractModel): + _inherit = "contract.template" + + sale_autoconfirm = fields.Boolean() + + generation_type = fields.Selection( + selection_add=[("sale", "Sale")], + ) diff --git a/contract_sale_generation/models/sale_order.py b/contract_sale_generation/models/sale_order.py new file mode 100644 index 0000000000..fb94846778 --- /dev/null +++ b/contract_sale_generation/models/sale_order.py @@ -0,0 +1,24 @@ +# Copyright 2021 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + contract_auto_confirm = fields.Boolean( + compute="_compute_contract_auto_confirm", + help="This is a technical field in order to know if the order should" + "be automatically confirmed if generated by contract.", + ) + + def _compute_contract_auto_confirm(self): + sale_auto_confirm = self.filtered( + lambda sale: any( + line.contract_line_id.contract_id.sale_autoconfirm + for line in sale.order_line + ) + ) + sale_auto_confirm.contract_auto_confirm = True + (self - sale_auto_confirm).contract_auto_confirm = False diff --git a/contract_sale_generation/models/sale_order_line.py b/contract_sale_generation/models/sale_order_line.py new file mode 100644 index 0000000000..cb9451ce8c --- /dev/null +++ b/contract_sale_generation/models/sale_order_line.py @@ -0,0 +1,12 @@ +# Copyright (C) 2020 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + contract_line_id = fields.Many2one( + "contract.line", string="Contract Line", index=True + ) diff --git a/contract_sale_generation/pyproject.toml b/contract_sale_generation/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/contract_sale_generation/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/contract_sale_generation/readme/CONTRIBUTORS.md b/contract_sale_generation/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..c3d885fe39 --- /dev/null +++ b/contract_sale_generation/readme/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +- Angel Moya \ +- Florent THOMAS \ +- Serpent Consulting Services Pvt. Ltd. \ +- Denis Roussel \ diff --git a/contract_sale_generation/readme/DESCRIPTION.md b/contract_sale_generation/readme/DESCRIPTION.md new file mode 100644 index 0000000000..36b9cedca7 --- /dev/null +++ b/contract_sale_generation/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module extends functionality of contracts to be able to generate +sales orders instead of invoices. diff --git a/contract_sale_generation/readme/USAGE.md b/contract_sale_generation/readme/USAGE.md new file mode 100644 index 0000000000..695898cc97 --- /dev/null +++ b/contract_sale_generation/readme/USAGE.md @@ -0,0 +1,7 @@ +To use this module, you need to: + +1. Go to Sales -\> Contracts and select or create a new contract. +2. Fill fields for selecting the recurrency and invoice parameters: + - Type defines document that contract will generate, can be "Sales" + or "Invoices" + - Sale Autoconfirm, validate Sales Orders if type is "Sales" diff --git a/contract_sale_generation/static/description/icon.png b/contract_sale_generation/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/contract_sale_generation/static/description/icon.png differ diff --git a/contract_sale_generation/static/description/index.html b/contract_sale_generation/static/description/index.html new file mode 100644 index 0000000000..e9b65a776d --- /dev/null +++ b/contract_sale_generation/static/description/index.html @@ -0,0 +1,448 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Contracts Management - Recurring Sales

+ +

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

+

This module extends functionality of contracts to be able to generate +sales orders instead of invoices.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Sales -> Contracts and select or create a new contract.
  2. +
  3. Fill fields for selecting the recurrency and invoice parameters:
      +
    • Type defines document that contract will generate, can be “Sales” +or “Invoices”
    • +
    • Sale Autoconfirm, validate Sales Orders if type is “Sales”
    • +
    +
  4. +
+
+
+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
  • PESOL
  • +
+
+
+

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.

+

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/contract_sale_generation/tests/__init__.py b/contract_sale_generation/tests/__init__.py new file mode 100644 index 0000000000..92799191b1 --- /dev/null +++ b/contract_sale_generation/tests/__init__.py @@ -0,0 +1,3 @@ +from . import common +from . import test_contract_sale_recurrency +from . import test_contract_sale diff --git a/contract_sale_generation/tests/common.py b/contract_sale_generation/tests/common.py new file mode 100644 index 0000000000..786e6abc67 --- /dev/null +++ b/contract_sale_generation/tests/common.py @@ -0,0 +1,163 @@ +# © 2016 Carlos Dauden +# Copyright 2017 Pesol () +# Copyright 2017 Angel Moya +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from freezegun import freeze_time + +from odoo import fields +from odoo.tests import Form, TransactionCase, tagged + + +def to_date(date): + return fields.Date.to_date(date) + + +@tagged("post_install", "-at_install") +class ContractSaleCommon(TransactionCase): + # Use case : Prepare some data for current test case + + @classmethod + def setUpClass(cls): + super().setUpClass() + chart_template = cls.env["account.chart.template"]._guess_chart_template( + cls.env.company.country_id + ) + cls.env["account.chart.template"].try_loading( + chart_template, company=cls.env.company, install_demo=False + ) + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + analytic_plan = cls.env["account.analytic.plan"].create({"name": "Test Plan"}) + + cls.analytic_account = cls.env["account.analytic.account"].create( + { + "name": "Contracts", + "plan_id": analytic_plan.id, + } + ) + cls.payment_term_id = cls.env.ref( + "account.account_payment_term_end_following_month" + ) + cls.fiscal_position_id = cls.env["account.fiscal.position"].create( + {"name": "Contracts"} + ) + contract_date = "2020-01-15" + cls.pricelist = cls.env["product.pricelist"].create( + { + "name": "pricelist for contract test", + } + ) + cls.partner = cls.env["res.partner"].create( + { + "name": "partner test contract", + "property_product_pricelist": cls.pricelist.id, + "property_payment_term_id": cls.payment_term_id.id, + "property_account_position_id": cls.fiscal_position_id.id, + "user_id": cls.env.user.id, + } + ) + # Avoid error cause sale_timesheet overwriting demo product.product_product_2 + # and making mandatory to link a project to that product or to the sale order + cls.product_1 = cls.env.ref("product.product_product_2") + cls.product_1.taxes_id += cls.env["account.tax"].search( + [("type_tax_use", "=", "sale")], limit=1 + ) + cls.product_1.description_sale = "Test description sale" + cls.line_template_vals = { + "product_id": cls.product_1.id, + "name": "Test Contract Template", + "quantity": 1, + "uom_id": cls.product_1.uom_id.id, + "price_unit": 100, + "discount": 50, + "recurring_rule_type": "yearly", + "recurring_interval": 1, + "display_type": False, + } + cls.template_vals = { + "name": "Test Contract Template", + "contract_type": "sale", + "contract_line_ids": [ + (0, 0, cls.line_template_vals), + ], + } + cls.template = cls.env["contract.template"].create(cls.template_vals) + # For being sure of the applied price + cls.env["product.pricelist.item"].create( + { + "pricelist_id": cls.partner.property_product_pricelist.id, + "product_id": cls.product_1.id, + "compute_price": "formula", + "base": "list_price", + } + ) + cls.contract = cls.env["contract.contract"].create( + { + "name": "Test Contract", + "partner_id": cls.partner.id, + "pricelist_id": cls.partner.property_product_pricelist.id, + "generation_type": "sale", + "sale_autoconfirm": False, + "group_id": cls.analytic_account.id, + "date_start": "2020-01-15", + } + ) + cls.line_vals = { + "name": "Services from #START# to #END#", + "product_id": cls.product_1.id, + "uom_id": cls.product_1.uom_id.id, + "quantity": 1, + "price_unit": 100, + "discount": 50, + "recurring_rule_type": "monthly", + "recurring_interval": 1, + "date_start": "2020-01-01", + "recurring_next_date": "2020-01-15", + "display_type": False, + } + discount_line_group_id = cls.env.ref("sale.group_discount_per_so_line") + uom_group_id = cls.env.ref("uom.group_uom") + cls.env.user.groups_id = [(4, discount_line_group_id.id), (4, uom_group_id.id)] + + with Form(cls.contract) as contract_form, freeze_time(contract_date): + contract_form.contract_template_id = cls.template + contract_form.line_recurrence = True + with contract_form.contract_line_ids.new() as line_form: + line_form.product_id = cls.product_1 + line_form.name = "Services from #START# to #END#" + line_form.quantity = 1 + line_form.price_unit = 100.0 + line_form.discount = 50 + line_form.recurring_rule_type = "monthly" + line_form.recurring_interval = 1 + line_form.date_start = "2020-01-15" + line_form.recurring_next_date = "2020-01-15" + cls.contract_line = cls.contract.contract_line_ids[1] + + cls.contract2 = cls.env["contract.contract"].create( + { + "name": "Test Contract 2", + "generation_type": "sale", + "partner_id": cls.partner.id, + "pricelist_id": cls.partner.property_product_pricelist.id, + "contract_type": "purchase", + "contract_line_ids": [ + ( + 0, + 0, + { + "product_id": cls.product_1.id, + "name": "Services from #START# to #END#", + "quantity": 1, + "uom_id": cls.product_1.uom_id.id, + "price_unit": 100, + "discount": 50, + "recurring_rule_type": "monthly", + "recurring_interval": 1, + "date_start": "2018-02-15", + "recurring_next_date": "2018-02-22", + "display_type": False, + }, + ) + ], + } + ) diff --git a/contract_sale_generation/tests/test_contract_sale.py b/contract_sale_generation/tests/test_contract_sale.py new file mode 100644 index 0000000000..02831eb559 --- /dev/null +++ b/contract_sale_generation/tests/test_contract_sale.py @@ -0,0 +1,147 @@ +# © 2016 Carlos Dauden +# Copyright 2017 Pesol () +# Copyright 2017 Angel Moya +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import Command +from odoo.exceptions import ValidationError + +from .common import ContractSaleCommon, to_date + + +class TestContractSale(ContractSaleCommon): + def test_check_discount(self): + with self.assertRaises(ValidationError): + self.contract_line.write({"discount": 120}) + + def test_contract(self): + recurring_next_date = to_date("2020-02-15") + self.assertAlmostEqual(self.contract_line.price_subtotal, 50.0) + self.contract_line.price_unit = 100.0 + self.contract.partner_id = self.partner.id + self.contract.recurring_create_sale() + self.sale_monthly = self.contract._get_related_sales() + self.assertTrue(self.sale_monthly) + self.assertEqual(self.contract_line.recurring_next_date, recurring_next_date) + self.order_line = self.sale_monthly.order_line[0] + self.assertTrue(self.order_line.tax_id) + self.assertAlmostEqual(self.order_line.price_subtotal, 50.0) + self.assertEqual(self.contract.user_id, self.sale_monthly.user_id) + + def test_contract_autoconfirm(self): + recurring_next_date = to_date("2020-02-15") + self.contract.sale_autoconfirm = True + self.assertAlmostEqual(self.contract_line.price_subtotal, 50.0) + self.contract_line.price_unit = 100.0 + self.contract.partner_id = self.partner.id + self.contract.recurring_create_sale() + self.sale_monthly = self.contract._get_related_sales() + self.assertTrue(self.sale_monthly) + self.assertEqual(self.contract_line.recurring_next_date, recurring_next_date) + self.order_line = self.sale_monthly.order_line[0] + self.assertTrue(self.order_line.tax_id) + self.assertAlmostEqual(self.order_line.price_subtotal, 50.0) + self.assertEqual(self.contract.user_id, self.sale_monthly.user_id) + + def test_onchange_contract_template_id(self): + """It should change the contract values to match the template.""" + self.contract.contract_template_id = False + self.contract._onchange_contract_template_id() + self.contract.contract_template_id = self.template + self.contract._onchange_contract_template_id() + res = { + "contract_type": "sale", + "contract_line_ids": [ + Command.create( + { + "product_id": self.product_1.id, + "name": "Test Contract Template", + "quantity": 1, + "uom_id": self.product_1.uom_id.id, + "price_unit": 100, + "discount": 50, + "recurring_rule_type": "yearly", + "recurring_interval": 1, + "display_type": False, + } + ) + ], + } + del self.template_vals["name"] + self.assertDictEqual(res, self.template_vals) + + def test_contract_count_sale(self): + self.contract.recurring_create_sale() + self.contract.recurring_create_sale() + self.contract.recurring_create_sale() + self.contract._compute_sale_count() + self.assertEqual(self.contract.sale_count, 3) + + def test_contract_count_sale_2(self): + orders = self.env["sale.order"] + orders |= self.contract.recurring_create_sale() + orders |= self.contract.recurring_create_sale() + orders |= self.contract.recurring_create_sale() + action = self.contract.action_show_sales() + self.assertEqual(set(action["domain"][0][2]), set(orders.ids)) + + def test_cron_recurring_create_sale(self): + self.contract_line.date_start = "2020-01-01" + self.contract_line.recurring_invoicing_type = "post-paid" + self.contract_line.date_end = "2020-03-15" + # If we do not recompute recurring_next_date + # then it maintains it's 'old' value. + # TODO: Research that + recurring_next_date = self.contract_line.recurring_next_date + self.assertGreaterEqual(recurring_next_date, self.contract_line.date_start) + contracts = self.contract2 + for _i in range(10): + contracts |= self.contract.copy({"generation_type": "sale"}) + self.env["contract.contract"]._cron_recurring_create(create_type="sale") + order_lines = self.env["sale.order.line"].search( + [("contract_line_id", "in", contracts.mapped("contract_line_ids").ids)] + ) + self.assertEqual( + len(contracts.mapped("contract_line_ids")), + len(order_lines), + ) + + def test_contract_sale_analytic_payment_term_fiscal_position(self): + # Call onchange in order to retrieve + # payment term and fiscal position + self.contract._onchange_partner_id() + orders = self.env["sale.order"].browse() + orders |= self.contract.recurring_create_sale() + self.assertEqual(self.payment_term_id, orders.mapped("payment_term_id")) + self.assertEqual(self.fiscal_position_id, orders.mapped("fiscal_position_id")) + + def test_recurring_method_retrieval(self): + self.assertNotEqual( + self.contract._get_recurring_create_func(create_type="sale"), + self.contract._get_recurring_create_func(create_type="invoice"), + ) + + def test__prepare_recurring_sales_values_no_date_ref(self): + self.contract.recurring_next_date = False + self.assertEqual(self.contract._prepare_recurring_sales_values(), []) + + def test__prepare_recurring_sales_values_no_contract_lines(self): + a_contract_with_no_lines = self.env["contract.contract"].create( + { + "name": "No lines Contract", + "partner_id": self.partner.id, + "generation_type": "sale", + "date_start": "2020-01-15", + } + ) + self.assertEqual(a_contract_with_no_lines._prepare_recurring_sales_values(), []) + + def test__prepare_sale_line_vals_with_order_id(self): + order = self.contract.recurring_create_sale()[0] + recurring_next_date = self.contract.recurring_next_date + date_start = self.contract.date_start + date_end = self.contract.date_end + dates = [date_start, date_end, recurring_next_date] + for line in self.contract._get_lines_to_invoice(recurring_next_date): + line_vals = line._prepare_sale_line_vals(dates, order) + self.assertEqual(line_vals["order_id"], order.id) diff --git a/contract_sale_generation/tests/test_contract_sale_recurrency.py b/contract_sale_generation/tests/test_contract_sale_recurrency.py new file mode 100644 index 0000000000..7af2d916e3 --- /dev/null +++ b/contract_sale_generation/tests/test_contract_sale_recurrency.py @@ -0,0 +1,73 @@ +# Copyright 2022 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from freezegun import freeze_time + +from odoo import fields +from odoo.tests import Form + +from .common import ContractSaleCommon + +today = "2020-01-15" + + +class TestContractSaleRecurrency(ContractSaleCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.contract_obj = cls.env["contract.contract"] + + @classmethod + def _create_contract(cls): + cls.contract = cls.contract.create( + { + "name": "Test Contract", + "partner_id": cls.partner.id, + } + ) + with Form(cls.contract) as contract_form: + contract_form.partner_id = cls.partner + contract_form.generation_type = "sale" + contract_form.line_recurrence = True + contract_form.group_id = cls.analytic_account + cls.contract = contract_form.save() + + def test_contract_next_date(self): + """ + Change recurrence to weekly + Check the recurring next date value on lines + """ + with freeze_time(today): + self._create_contract() + self.contract.recurring_rule_type = "weekly" + with freeze_time(today): + with Form(self.contract) as contract_form: + with contract_form.contract_line_ids.new() as line_form: + line_form.product_id = self.product_1 + line_form.name = "Services from #START# to #END#" + line_form.quantity = 1 + line_form.price_unit = 100.0 + line_form.discount = 50 + line_form.recurring_rule_type = "weekly" + + with freeze_time(today): + with Form(self.contract) as contract_form: + with contract_form.contract_line_ids.new() as line_form: + line_form.product_id = self.product_1 + line_form.name = "Services from #START# to #END#" + line_form.quantity = 2 + line_form.price_unit = 50.0 + line_form.recurring_rule_type = "weekly" + + self.assertEqual( + fields.Date.to_date("2020-01-15"), self.contract.recurring_next_date + ) + + self.contract.recurring_create_sale() + self.assertEqual( + fields.Date.to_date("2020-01-22"), self.contract.recurring_next_date + ) + self.contract.recurring_create_sale() + self.assertEqual( + fields.Date.to_date("2020-01-29"), self.contract.recurring_next_date + ) diff --git a/contract_sale_generation/views/contract.xml b/contract_sale_generation/views/contract.xml new file mode 100644 index 0000000000..779f92b5de --- /dev/null +++ b/contract_sale_generation/views/contract.xml @@ -0,0 +1,33 @@ + + + contract.contract.form.recurring.sale.form + contract.contract + + + + + + + + + + + diff --git a/contract_sale_payment_mode/i18n/contract_sale_payment_mode.pot b/contract_sale_payment_mode/i18n/contract_sale_payment_mode.pot index bcc014c77c..0648d56a45 100644 --- a/contract_sale_payment_mode/i18n/contract_sale_payment_mode.pot +++ b/contract_sale_payment_mode/i18n/contract_sale_payment_mode.pot @@ -13,13 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: contract_sale_payment_mode -#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view -msgid "" -"" -msgstr "" - #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_res_company msgid "Companies" @@ -57,3 +50,8 @@ msgid "" "This option allow allow to set different payment mode for the contracts " "generated from the sale order than the one will be used for invoices." msgstr "" + +#. module: contract_sale_payment_mode +#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view +msgid "Values set here are company-specific." +msgstr "" diff --git a/contract_sale_payment_mode/i18n/da.po b/contract_sale_payment_mode/i18n/da.po index f7a1d933d9..d996a3e7da 100644 --- a/contract_sale_payment_mode/i18n/da.po +++ b/contract_sale_payment_mode/i18n/da.po @@ -16,13 +16,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.10\n" -#. module: contract_sale_payment_mode -#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view -msgid "" -"" -msgstr "" - #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_res_company msgid "Companies" @@ -45,8 +38,8 @@ msgstr "" #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_sale_order -msgid "Sale Order" -msgstr "Salgsordre" +msgid "Sales Order" +msgstr "" #. module: contract_sale_payment_mode #: model:ir.model.fields,field_description:contract_sale_payment_mode.field_res_company__specific_contract_payment_mode @@ -60,3 +53,11 @@ msgid "" "This option allow allow to set different payment mode for the contracts " "generated from the sale order than the one will be used for invoices." msgstr "" + +#. module: contract_sale_payment_mode +#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view +msgid "Values set here are company-specific." +msgstr "" + +#~ msgid "Sale Order" +#~ msgstr "Salgsordre" diff --git a/contract_sale_payment_mode/i18n/es.po b/contract_sale_payment_mode/i18n/es.po index ae080d8f29..02a984ff65 100644 --- a/contract_sale_payment_mode/i18n/es.po +++ b/contract_sale_payment_mode/i18n/es.po @@ -14,13 +14,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#. module: contract_sale_payment_mode -#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view -msgid "" -"" -msgstr "" - #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_res_company msgid "Companies" @@ -43,7 +36,7 @@ msgstr "" #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_sale_order -msgid "Sale Order" +msgid "Sales Order" msgstr "" #. module: contract_sale_payment_mode @@ -58,3 +51,8 @@ msgid "" "This option allow allow to set different payment mode for the contracts " "generated from the sale order than the one will be used for invoices." msgstr "" + +#. module: contract_sale_payment_mode +#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view +msgid "Values set here are company-specific." +msgstr "" diff --git a/contract_sale_payment_mode/i18n/fr.po b/contract_sale_payment_mode/i18n/fr.po index 4691dad9fc..a76e39bd0a 100644 --- a/contract_sale_payment_mode/i18n/fr.po +++ b/contract_sale_payment_mode/i18n/fr.po @@ -16,15 +16,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.10.4\n" -#. module: contract_sale_payment_mode -#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view -msgid "" -"" -msgstr "" -"" - #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_res_company msgid "Companies" @@ -47,8 +38,8 @@ msgstr "Mode de paiement du contrat différent généré depuis les ventes" #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_sale_order -msgid "Sale Order" -msgstr "Commande" +msgid "Sales Order" +msgstr "" #. module: contract_sale_payment_mode #: model:ir.model.fields,field_description:contract_sale_payment_mode.field_res_company__specific_contract_payment_mode @@ -65,3 +56,18 @@ msgstr "" "Cette option autorise de sélectionner un mode de paiement différent pour les " "contrats générés depuis les ventes que celui qui sera utilisé pour les " "factures." + +#. module: contract_sale_payment_mode +#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view +msgid "Values set here are company-specific." +msgstr "" + +#~ msgid "" +#~ "" +#~ msgstr "" +#~ "" + +#~ msgid "Sale Order" +#~ msgstr "Commande" diff --git a/contract_sale_payment_mode/i18n/it.po b/contract_sale_payment_mode/i18n/it.po index 0f8f147608..9f53318c36 100644 --- a/contract_sale_payment_mode/i18n/it.po +++ b/contract_sale_payment_mode/i18n/it.po @@ -16,16 +16,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10.4\n" -#. module: contract_sale_payment_mode -#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view -msgid "" -"" -msgstr "" -"" - #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_res_company msgid "Companies" @@ -49,14 +39,15 @@ msgstr "" #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_sale_order -msgid "Sale Order" -msgstr "Ordine di vendita" +msgid "Sales Order" +msgstr "" #. module: contract_sale_payment_mode #: model:ir.model.fields,field_description:contract_sale_payment_mode.field_res_company__specific_contract_payment_mode #: model:ir.model.fields,field_description:contract_sale_payment_mode.field_res_config_settings__specific_contract_payment_mode msgid "Specific payment mode for contracts created from sale orders" -msgstr "Metodo di pagamento specifico per contratti creati da ordini di vendita" +msgstr "" +"Metodo di pagamento specifico per contratti creati da ordini di vendita" #. module: contract_sale_payment_mode #: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view @@ -66,3 +57,18 @@ msgid "" msgstr "" "Questa opzione consente di impostare un metodo di pagamento diverso per i " "contratti generati da ordine di vendita che verrà usato nelle fatture." + +#. module: contract_sale_payment_mode +#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view +msgid "Values set here are company-specific." +msgstr "" + +#~ msgid "" +#~ "" +#~ msgstr "" +#~ "" + +#~ msgid "Sale Order" +#~ msgstr "Ordine di vendita" diff --git a/contract_sale_payment_mode/i18n/pt.po b/contract_sale_payment_mode/i18n/pt.po index 57f1d2babe..b05b672d5b 100644 --- a/contract_sale_payment_mode/i18n/pt.po +++ b/contract_sale_payment_mode/i18n/pt.po @@ -16,13 +16,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.10\n" -#. module: contract_sale_payment_mode -#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view -msgid "" -"" -msgstr "" - #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_res_company msgid "Companies" @@ -45,8 +38,8 @@ msgstr "" #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_sale_order -msgid "Sale Order" -msgstr "Encomenda de Venda" +msgid "Sales Order" +msgstr "" #. module: contract_sale_payment_mode #: model:ir.model.fields,field_description:contract_sale_payment_mode.field_res_company__specific_contract_payment_mode @@ -60,3 +53,11 @@ msgid "" "This option allow allow to set different payment mode for the contracts " "generated from the sale order than the one will be used for invoices." msgstr "" + +#. module: contract_sale_payment_mode +#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view +msgid "Values set here are company-specific." +msgstr "" + +#~ msgid "Sale Order" +#~ msgstr "Encomenda de Venda" diff --git a/contract_sale_payment_mode/i18n/pt_BR.po b/contract_sale_payment_mode/i18n/pt_BR.po index 1731095083..2eec94e159 100644 --- a/contract_sale_payment_mode/i18n/pt_BR.po +++ b/contract_sale_payment_mode/i18n/pt_BR.po @@ -16,13 +16,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.10\n" -#. module: contract_sale_payment_mode -#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view -msgid "" -"" -msgstr "" - #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_res_company msgid "Companies" @@ -45,8 +38,8 @@ msgstr "" #. module: contract_sale_payment_mode #: model:ir.model,name:contract_sale_payment_mode.model_sale_order -msgid "Sale Order" -msgstr "Pedido de Venda" +msgid "Sales Order" +msgstr "" #. module: contract_sale_payment_mode #: model:ir.model.fields,field_description:contract_sale_payment_mode.field_res_company__specific_contract_payment_mode @@ -60,3 +53,11 @@ msgid "" "This option allow allow to set different payment mode for the contracts " "generated from the sale order than the one will be used for invoices." msgstr "" + +#. module: contract_sale_payment_mode +#: model_terms:ir.ui.view,arch_db:contract_sale_payment_mode.res_config_settings_form_view +msgid "Values set here are company-specific." +msgstr "" + +#~ msgid "Sale Order" +#~ msgstr "Pedido de Venda" diff --git a/product_contract/i18n/ca.po b/product_contract/i18n/ca.po index 6a27d26b45..5ca8ce3616 100644 --- a/product_contract/i18n/ca.po +++ b/product_contract/i18n/ca.po @@ -45,7 +45,8 @@ msgstr "Renovació automàtica" #: 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 contractes automàticament en la confirmació de la comanda de venda" +msgstr "" +"Crea contractes automàticament en la confirmació de la comanda de venda" #. module: product_contract #: model_terms:ir.ui.view,arch_db:product_contract.product_contract_configurator_form @@ -97,12 +98,12 @@ msgstr "Recompte de contractes" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Línia de contracte" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Línia de contracte per substituir" @@ -581,7 +582,8 @@ msgstr "Barreja de contractes de línia de comanda de venda" #. odoo-python #: code:addons/product_contract/models/sale_order_line.py:0 msgid "Sale Order and contract should be linked to the same partner" -msgstr "La comanda de venda i el contracte han d'estar vinculats al mateix soci" +msgstr "" +"La comanda de venda i el contracte han d'estar vinculats al mateix soci" #. module: product_contract #: model:ir.model,name:product_contract.model_sale_order @@ -731,20 +733,33 @@ msgid "" "This field allows to define how the start date of the contract will\n" " be calculated:\n" "\n" -" - Manual: The start date will be selected by the user, by default will be the\n" +" - Manual: The start date will be selected by the user, by default " +"will be the\n" " date of sale confirmation.\n" -" - Start of current period: The start date will be the first day of the actual\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2024/01/01.\n" -" - End of current period: The start date will be the last day of the actual\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2024/12/31.\n" -" - Start of next period: The start date will be the first day of the next\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2025/01/01.\n" -" - End of next period: The start date will be the last day of the actual\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2025/12/31.\n" +" - Start of current period: The start date will be the first day of " +"the actual\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2024/01/01.\n" +" - End of current period: The start date will be the last day of the " +"actual\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2024/12/31.\n" +" - Start of next period: The start date will be the first day of the " +"next\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2025/01/01.\n" +" - End of next period: The start date will be the last day of the " +"actual\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2025/12/31.\n" " " msgstr "" "Aquest camp permet definir com es calcularà la data d'inici del contracte:\n" @@ -761,8 +776,8 @@ msgstr "" "seleccionat al camp \"Facturació cada\". Exemple: Si estem el 27/08/2024\n" "i el període seleccionat és \"Any(s)\", la data d'inici serà el 31/12/2024.\n" "- Inici del següent període: La data d'inici serà el primer dia del següent\n" -"període seleccionat al camp \"Facturació cada\". Exemple: Si som el 27/08/" -"2024\n" +"període seleccionat al camp \"Facturació cada\". Exemple: Si som el " +"27/08/2024\n" "i el període seleccionat és \"Any(s)\", la data d'inici serà el 01/01/2025.\n" "- Final del següent període: La data d'inici serà l'últim dia del període " "real\n" @@ -778,20 +793,33 @@ msgid "" "This field allows to define how the start date of the contract will\n" " be calculated:\n" "\n" -" - Manual: The start date will be selected by the user, by default will be the\n" +" - Manual: The start date will be selected by the user, by default " +"will be the\n" " date of sale confirmation.\n" -" - Start of current period: The start date will be the first day of the actual\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2024/01/01.\n" -" - End of current period: The start date will be the last day of the actual\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2024/12/31.\n" -" - Start of next period: The start date will be the first day of the next\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2025/01/01.\n" -" - End of next period: The start date will be the last day of the actual\n" -" period selected on 'Invoicing Every' field. Example: If we are on 2024/08/27\n" -" and the period selected is 'Year(s)' the start date will be 2025/12/31.\n" +" - Start of current period: The start date will be the first day of " +"the actual\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2024/01/01.\n" +" - End of current period: The start date will be the last day of the " +"actual\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2024/12/31.\n" +" - Start of next period: The start date will be the first day of the " +"next\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2025/01/01.\n" +" - End of next period: The start date will be the last day of the " +"actual\n" +" period selected on 'Invoicing Every' field. Example: If we are on " +"2024/08/27\n" +" and the period selected is 'Year(s)' the start date will be " +"2025/12/31.\n" " " msgstr "" "Aquest camp permet definir com es calcularà la data d'inici del contracte:\n" @@ -808,8 +836,8 @@ msgstr "" "seleccionat al camp \"Facturació cada\". Exemple: Si estem el 27/08/2024\n" "i el període seleccionat és \"Any(s)\", la data d'inici serà el 31/12/2024.\n" "- Inici del següent període: La data d'inici serà el primer dia del següent\n" -"període seleccionat al camp \"Facturació cada\". Exemple: Si som el 27/08/" -"2024\n" +"període seleccionat al camp \"Facturació cada\". Exemple: Si som el " +"27/08/2024\n" "i el període seleccionat és \"Any(s)\", la data d'inici serà el 01/01/2025.\n" "- Final del següent període: La data d'inici serà l'últim dia del període " "real\n" diff --git a/product_contract/i18n/de.po b/product_contract/i18n/de.po index 48f7a0ad56..4bdba801c9 100644 --- a/product_contract/i18n/de.po +++ b/product_contract/i18n/de.po @@ -100,12 +100,12 @@ msgstr "Vertragsanzahl" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Vertragsposition" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Zu ersetzende Vertragsposition" diff --git a/product_contract/i18n/es.po b/product_contract/i18n/es.po index 70ffee3f1d..15b60ef81d 100644 --- a/product_contract/i18n/es.po +++ b/product_contract/i18n/es.po @@ -101,12 +101,12 @@ msgstr "Cuenta Contrato" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Línea de Contrato" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Línea de Contrato a Reemplazar" @@ -882,11 +882,11 @@ msgid "" msgstr "" #~ msgid "" -#~ "You must specify a contract template for '%(product_name)s' product in " -#~ "'%(company_name)s' company." +#~ "You must specify a contract template for '%(product_name)s' product in '%" +#~ "(company_name)s' company." #~ msgstr "" -#~ "Debes especificar una plantilla de contrato para el producto " -#~ "'%(product_name)s' en la empresa '%(company_name)s'." +#~ "Debes especificar una plantilla de contrato para el producto '%" +#~ "(product_name)s' en la empresa '%(company_name)s'." #~ msgid "Default Quantity" #~ msgstr "Cantidad Predeterminada" diff --git a/product_contract/i18n/fi.po b/product_contract/i18n/fi.po index 3ac46f34ee..160e0f4119 100644 --- a/product_contract/i18n/fi.po +++ b/product_contract/i18n/fi.po @@ -100,13 +100,13 @@ msgstr "Contract" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #, fuzzy msgid "Contract Line" msgstr "Contract" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id #, fuzzy msgid "Contract Line to replace" diff --git a/product_contract/i18n/fr.po b/product_contract/i18n/fr.po index 172191af35..77ed2fe39a 100644 --- a/product_contract/i18n/fr.po +++ b/product_contract/i18n/fr.po @@ -102,12 +102,12 @@ msgstr "Nb de contrats" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Ligne de Contrat" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Ligne de contrat à remplacer" @@ -673,8 +673,8 @@ msgid "" "Specify the time unit for generating recurring invoices (days, weeks, " "months, etc.)." msgstr "" -"Détermine l'unité de temps pour la génération des factures récurrentes (" -"jours, semaines, mois, etc.)." +"Détermine l'unité de temps pour la génération des factures récurrentes " +"(jours, semaines, mois, etc.)." #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_start_date_method diff --git a/product_contract/i18n/hi_IN.po b/product_contract/i18n/hi_IN.po index e0fd018195..e57e93a0e9 100644 --- a/product_contract/i18n/hi_IN.po +++ b/product_contract/i18n/hi_IN.po @@ -101,13 +101,13 @@ msgstr "अनुबंध" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #, fuzzy msgid "Contract Line" msgstr "अनुबंध" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id #, fuzzy msgid "Contract Line to replace" diff --git a/product_contract/i18n/hr.po b/product_contract/i18n/hr.po index 5a3417c0ce..9822520744 100644 --- a/product_contract/i18n/hr.po +++ b/product_contract/i18n/hr.po @@ -101,12 +101,12 @@ msgstr "Broj ugovora" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Stavka ugovora" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Stavka ugovora za zamijeniti" diff --git a/product_contract/i18n/hr_HR.po b/product_contract/i18n/hr_HR.po index d3df371cfd..3c29238fbf 100644 --- a/product_contract/i18n/hr_HR.po +++ b/product_contract/i18n/hr_HR.po @@ -103,13 +103,13 @@ msgstr "Ugovor" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #, fuzzy msgid "Contract Line" msgstr "Ugovor" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id #, fuzzy msgid "Contract Line to replace" diff --git a/product_contract/i18n/it.po b/product_contract/i18n/it.po index 94d56fccb6..4005aaf844 100644 --- a/product_contract/i18n/it.po +++ b/product_contract/i18n/it.po @@ -100,12 +100,12 @@ msgstr "Conto di Contratto" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Riga contratto" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Riga di contratto da sostituire" @@ -917,11 +917,11 @@ msgstr "" " " #~ msgid "" -#~ "You must specify a contract template for '%(product_name)s' product in " -#~ "'%(company_name)s' company." +#~ "You must specify a contract template for '%(product_name)s' product in '%" +#~ "(company_name)s' company." #~ msgstr "" -#~ "Bisogna indicare un modello di contratto per il prodotto " -#~ "'%(product_name)s' nell'azienda '%(company_name)s'." +#~ "Bisogna indicare un modello di contratto per il prodotto '%" +#~ "(product_name)s' nell'azienda '%(company_name)s'." #~ msgid "" #~ "{product}:\n" diff --git a/product_contract/i18n/nl.po b/product_contract/i18n/nl.po index 1e877a089a..b53e9a5fd9 100644 --- a/product_contract/i18n/nl.po +++ b/product_contract/i18n/nl.po @@ -101,12 +101,12 @@ msgstr "Aantal contracten" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Contractregel" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Te vervangen contractregel" @@ -662,8 +662,8 @@ msgid "" "Specify if the invoice must be generated at the beginning (pre-paid) or end " "(post-paid) of the period." msgstr "" -"Geef aan of de factuur aan het begin (vooraf betaald) of aan het einde (" -"achteraf betaald) van de periode moet worden gegenereerd." +"Geef aan of de factuur aan het begin (vooraf betaald) of aan het einde " +"(achteraf betaald) van de periode moet worden gegenereerd." #. module: product_contract #: model:ir.model.fields,help:product_contract.field_product_product__recurring_rule_type diff --git a/product_contract/i18n/nl_NL.po b/product_contract/i18n/nl_NL.po index 5c35b1a303..33977e9da4 100644 --- a/product_contract/i18n/nl_NL.po +++ b/product_contract/i18n/nl_NL.po @@ -11,8 +11,8 @@ msgstr "" "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-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" @@ -101,13 +101,13 @@ msgstr "Contract" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #, fuzzy msgid "Contract Line" msgstr "Contract" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id #, fuzzy msgid "Contract Line to replace" diff --git a/product_contract/i18n/product_contract.pot b/product_contract/i18n/product_contract.pot index 64c172d1ad..aae25ef9f8 100644 --- a/product_contract/i18n/product_contract.pot +++ b/product_contract/i18n/product_contract.pot @@ -94,12 +94,12 @@ msgstr "" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "" diff --git a/product_contract/i18n/pt.po b/product_contract/i18n/pt.po index 7586377428..8a55f554e6 100644 --- a/product_contract/i18n/pt.po +++ b/product_contract/i18n/pt.po @@ -100,12 +100,12 @@ msgstr "Contagem de Contratos" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Linha de Contrato" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Linha de Contrato a substituir" diff --git a/product_contract/i18n/pt_BR.po b/product_contract/i18n/pt_BR.po index 1e64f7b868..ac12e1dd77 100644 --- a/product_contract/i18n/pt_BR.po +++ b/product_contract/i18n/pt_BR.po @@ -12,8 +12,8 @@ msgstr "" "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-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" @@ -102,12 +102,12 @@ msgstr "Número de Contratos" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Linha de Contrato" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Linha do contrato para substituir" diff --git a/product_contract/i18n/ru.po b/product_contract/i18n/ru.po index 0e236ae4bc..4ccb7dd0c2 100644 --- a/product_contract/i18n/ru.po +++ b/product_contract/i18n/ru.po @@ -102,13 +102,13 @@ msgstr "Договор" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #, fuzzy msgid "Contract Line" msgstr "Договор" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id #, fuzzy msgid "Contract Line to replace" diff --git a/product_contract/i18n/sv.po b/product_contract/i18n/sv.po index 9c830bdb9a..d5db4615c1 100644 --- a/product_contract/i18n/sv.po +++ b/product_contract/i18n/sv.po @@ -97,12 +97,12 @@ msgstr "Antal kontrakt" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Kontraktslinje" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Contract Line för att ersätta" @@ -911,11 +911,11 @@ msgid "" msgstr "" #~ msgid "" -#~ "You must specify a contract template for '%(product_name)s' product in " -#~ "'%(company_name)s' company." +#~ "You must specify a contract template for '%(product_name)s' product in '%" +#~ "(company_name)s' company." #~ msgstr "" -#~ "Du måste ange en avtalsmall för '%(product_name)s' produkt i " -#~ "'%(company_name)s' företag." +#~ "Du måste ange en avtalsmall för '%(product_name)s' produkt i '%" +#~ "(company_name)s' företag." #~ msgid "" #~ "{product}:\n" diff --git a/product_contract/i18n/tr.po b/product_contract/i18n/tr.po index 88dd93bf83..d95563ab11 100644 --- a/product_contract/i18n/tr.po +++ b/product_contract/i18n/tr.po @@ -100,12 +100,12 @@ msgstr "Abonelik Sayısı" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id msgid "Contract Line" msgstr "Abonelik Satırı" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "Abonelik Şablonu" @@ -861,8 +861,8 @@ msgstr "" " " #~ msgid "" -#~ "You must specify a contract template for '%(product_name)s' product in " -#~ "'%(company_name)s' company." +#~ "You must specify a contract template for '%(product_name)s' product in '%" +#~ "(company_name)s' company." #~ msgstr "" #~ "'%(company_name)s' firmasındaki '%(product_name)s' ürünü için abonelik " #~ "şablonu oluşturmak zorundasınız." diff --git a/product_contract/i18n/tr_TR.po b/product_contract/i18n/tr_TR.po index 3b2f9f364e..33e6271793 100644 --- a/product_contract/i18n/tr_TR.po +++ b/product_contract/i18n/tr_TR.po @@ -101,13 +101,13 @@ msgstr "Sözleşme" #. module: product_contract #: model:ir.model,name:product_contract.model_contract_line +#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #, fuzzy msgid "Contract Line" msgstr "Sözleşme" #. module: product_contract #: model:ir.model.fields,field_description:product_contract.field_product_contract_configurator__contract_line_id -#: model:ir.model.fields,field_description:product_contract.field_sale_order_line__contract_line_id #: model:ir.model.fields,field_description:product_contract.field_sale_order_line_contract_mixin__contract_line_id msgid "Contract Line to replace" msgstr "" diff --git a/product_contract_recurrence_in_price/README.rst b/product_contract_recurrence_in_price/README.rst new file mode 100644 index 0000000000..d676a93292 --- /dev/null +++ b/product_contract_recurrence_in_price/README.rst @@ -0,0 +1,102 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +==================================== +Product Contract Recurrence In Price +==================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b7553a51d6d689f4c14a4ec69cf9fa9234dc6853ab1964876aae43594bf77b0c + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-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/18.0/product_contract_recurrence_in_price + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-18-0/contract-18-0-product_contract_recurrence_in_price + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/contract&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of ``product_contract`` to add an +option to compute the total amounts on "contract" Sale Order lines, +including every invoicing planned. + +For instance, a product worth 10€ invoiced every month for one year +would have a total of 120€ (unit_price \* #invoices) instead of 10€ +(unit_price \* quantity). + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +- Go to Sales > Products > Products +- In "Product" form, for contract products, select "Include Recurrence + In Price". + +This configuration is also available on each individual Sale Order line, +in the contract configurator (see ``product_contract``). + +When "Include Recurrence In Price" is set, the amounts (total, subtotal, +tax total) of the Sale Order line are multiplied by the number of times +the line will be invoiced. + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* ACSONE SA/NV + +Contributors +------------ + +- Quentin Groulard + +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. + +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_recurrence_in_price/__init__.py b/product_contract_recurrence_in_price/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/product_contract_recurrence_in_price/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_contract_recurrence_in_price/__manifest__.py b/product_contract_recurrence_in_price/__manifest__.py new file mode 100644 index 0000000000..4fceb9d8b4 --- /dev/null +++ b/product_contract_recurrence_in_price/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2025 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Product Contract Recurrence In Price", + "summary": """ + Add an option to include the recurrences + in the total of a Sale Order Line. + """, + "version": "18.0.1.0.0", + "category": "Contract Management", + "license": "AGPL-3", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/contract", + "depends": ["product_contract"], + "data": [ + "views/product_template.xml", + "views/sale_order.xml", + "wizards/product_contract_configurator_views.xml", + ], + "assets": { + "web.assets_backend": ["product_contract_recurrence_in_price/static/src/js/*"] + }, +} diff --git a/product_contract_recurrence_in_price/i18n/product_contract_recurrence_in_price.pot b/product_contract_recurrence_in_price/i18n/product_contract_recurrence_in_price.pot new file mode 100644 index 0000000000..a976cb4fe1 --- /dev/null +++ b/product_contract_recurrence_in_price/i18n/product_contract_recurrence_in_price.pot @@ -0,0 +1,69 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_contract_recurrence_in_price +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_contract_recurrence_in_price +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_product_contract_configurator__include_recurrence_in_price +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_product_product__include_recurrence_in_price +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_product_template__include_recurrence_in_price +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_sale_order_line__include_recurrence_in_price +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_sale_order_line_contract_mixin__include_recurrence_in_price +msgid "Include Recurrence In Price" +msgstr "" + +#. module: product_contract_recurrence_in_price +#. odoo-python +#: code:addons/product_contract_recurrence_in_price/models/sale_order_line_contract_mixin.py:0 +msgid "Invalid recurring_rule_type." +msgstr "" + +#. module: product_contract_recurrence_in_price +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_product_contract_configurator__recurring_invoicing_number +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_sale_order_line__recurring_invoicing_number +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_sale_order_line_contract_mixin__recurring_invoicing_number +msgid "Number of times a line will be invoiced." +msgstr "" + +#. module: product_contract_recurrence_in_price +#: model:ir.model,name:product_contract_recurrence_in_price.model_product_template +msgid "Product" +msgstr "" + +#. module: product_contract_recurrence_in_price +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_product_contract_configurator__recurring_invoicing_number +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_sale_order_line__recurring_invoicing_number +#: model:ir.model.fields,field_description:product_contract_recurrence_in_price.field_sale_order_line_contract_mixin__recurring_invoicing_number +msgid "Recurring Invoicing Number" +msgstr "" + +#. module: product_contract_recurrence_in_price +#: model:ir.model,name:product_contract_recurrence_in_price.model_sale_order_line_contract_mixin +msgid "Sale Order Line Contract Mixin" +msgstr "" + +#. module: product_contract_recurrence_in_price +#: model:ir.model,name:product_contract_recurrence_in_price.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: product_contract_recurrence_in_price +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_product_contract_configurator__include_recurrence_in_price +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_product_product__include_recurrence_in_price +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_product_template__include_recurrence_in_price +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_sale_order_line__include_recurrence_in_price +#: model:ir.model.fields,help:product_contract_recurrence_in_price.field_sale_order_line_contract_mixin__include_recurrence_in_price +msgid "" +"The amounts of the Sale Order Line will be multipliedby the number of times " +"the line will be invoiced." +msgstr "" diff --git a/product_contract_recurrence_in_price/models/__init__.py b/product_contract_recurrence_in_price/models/__init__.py new file mode 100644 index 0000000000..da6e90be70 --- /dev/null +++ b/product_contract_recurrence_in_price/models/__init__.py @@ -0,0 +1,3 @@ +from . import product_template +from . import sale_order_line_contract_mixin +from . import sale_order_line diff --git a/product_contract_recurrence_in_price/models/product_template.py b/product_contract_recurrence_in_price/models/product_template.py new file mode 100644 index 0000000000..3722dc78a2 --- /dev/null +++ b/product_contract_recurrence_in_price/models/product_template.py @@ -0,0 +1,13 @@ +# Copyright 2025 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + include_recurrence_in_price = fields.Boolean( + help="The amounts of the Sale Order Line will be multiplied" + "by the number of times the line will be invoiced." + ) diff --git a/product_contract_recurrence_in_price/models/sale_order_line.py b/product_contract_recurrence_in_price/models/sale_order_line.py new file mode 100644 index 0000000000..4beffa3b0a --- /dev/null +++ b/product_contract_recurrence_in_price/models/sale_order_line.py @@ -0,0 +1,34 @@ +# Copyright 2025 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + def _prepare_base_line_for_taxes_computation(self, **kwargs): + """ + This is the base method for all line amounts computations. + For 'include_recurrence_in_price' lines, we multiply the quantity by + the number of times the line will be invoiced. + """ + self.ensure_one() + if self.include_recurrence_in_price: + return self.env["account.tax"]._prepare_base_line_for_taxes_computation( + self, + **{ + "tax_ids": self.tax_id, + "quantity": self.product_uom_qty * self.recurring_invoicing_number, + "partner_id": self.order_id.partner_id, + "currency_id": self.order_id.currency_id + or self.order_id.company_id.currency_id, + "rate": self.order_id.currency_rate, + **kwargs, + }, + ) + return super()._prepare_base_line_for_taxes_computation(**kwargs) + + @api.depends("recurring_invoicing_number", "include_recurrence_in_price") + def _compute_amount(self): + return super()._compute_amount() diff --git a/product_contract_recurrence_in_price/models/sale_order_line_contract_mixin.py b/product_contract_recurrence_in_price/models/sale_order_line_contract_mixin.py new file mode 100644 index 0000000000..8e9d9e1641 --- /dev/null +++ b/product_contract_recurrence_in_price/models/sale_order_line_contract_mixin.py @@ -0,0 +1,64 @@ +# Copyright 2025 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class SaleOrderLineContractMixin(models.AbstractModel): + _inherit = "sale.order.line.contract.mixin" + + include_recurrence_in_price = fields.Boolean( + help="The amounts of the Sale Order Line will be multiplied" + "by the number of times the line will be invoiced.", + compute="_compute_product_contract_data", + precompute=True, + store=True, + readonly=False, + ) + recurring_invoicing_number = fields.Float( + compute="_compute_recurring_invoice_number", + digits=(16, 1), + help="Number of times a line will be invoiced.", + store=True, + readonly=False, + precompute=True, + ) + + @api.depends("product_id") + def _compute_product_contract_data(self): + res = super()._compute_product_contract_data() + for rec in self: + rec.include_recurrence_in_price = ( + rec.product_id.is_contract + and rec.product_id.include_recurrence_in_price + ) + return res + + @api.depends("date_start", "date_end", "recurring_interval", "recurring_rule_type") + def _compute_recurring_invoice_number(self): + for rec in self: + if ( + not rec.date_start + or not rec.date_end + or not rec.recurring_interval + or not rec.recurring_rule_type + ): + rec.recurring_invoicing_number = 0 + continue + days_total = (rec.date_end - rec.date_start).days + if rec.recurring_rule_type == "dayly": + interval_number = days_total + elif rec.recurring_rule_type == "weekly": + interval_number = days_total / 7 + elif rec.recurring_rule_type in ("monthly", "monthlylastday"): + interval_number = days_total / (365.25 / 12) + elif rec.recurring_rule_type == "quarterly": + interval_number = days_total / (365.25 / 4) + elif rec.recurring_rule_type == "semesterly": + interval_number = days_total / (365.25 / 2) + elif rec.recurring_rule_type == "yearly": + interval_number = days_total / 365.25 + else: + raise ValidationError(_("Invalid recurring_rule_type.")) + rec.recurring_invoicing_number = interval_number / rec.recurring_interval diff --git a/product_contract_recurrence_in_price/pyproject.toml b/product_contract_recurrence_in_price/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/product_contract_recurrence_in_price/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/product_contract_recurrence_in_price/readme/CONTRIBUTORS.md b/product_contract_recurrence_in_price/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..01f3219a11 --- /dev/null +++ b/product_contract_recurrence_in_price/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Quentin Groulard \<\> diff --git a/product_contract_recurrence_in_price/readme/DESCRIPTION.md b/product_contract_recurrence_in_price/readme/DESCRIPTION.md new file mode 100644 index 0000000000..835758d0fa --- /dev/null +++ b/product_contract_recurrence_in_price/readme/DESCRIPTION.md @@ -0,0 +1,5 @@ +This module extends the functionality of ``product_contract`` to add an option to compute +the total amounts on "contract" Sale Order lines, including every invoicing planned. + +For instance, a product worth 10€ invoiced every month for one year would have a total +of 120€ (unit_price * #invoices) instead of 10€ (unit_price * quantity). diff --git a/product_contract_recurrence_in_price/readme/USAGE.md b/product_contract_recurrence_in_price/readme/USAGE.md new file mode 100644 index 0000000000..43ed6f8995 --- /dev/null +++ b/product_contract_recurrence_in_price/readme/USAGE.md @@ -0,0 +1,10 @@ +To use this module, you need to: + +- Go to Sales > Products > Products +- In "Product" form, for contract products, select "Include Recurrence In Price". + +This configuration is also available on each individual Sale Order line, in the contract +configurator (see ``product_contract``). + +When "Include Recurrence In Price" is set, the amounts (total, subtotal, tax total) of the +Sale Order line are multiplied by the number of times the line will be invoiced. diff --git a/product_contract_recurrence_in_price/static/description/icon.png b/product_contract_recurrence_in_price/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/product_contract_recurrence_in_price/static/description/icon.png differ diff --git a/product_contract_recurrence_in_price/static/description/index.html b/product_contract_recurrence_in_price/static/description/index.html new file mode 100644 index 0000000000..cbff48f049 --- /dev/null +++ b/product_contract_recurrence_in_price/static/description/index.html @@ -0,0 +1,449 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Product Contract Recurrence In Price

+ +

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

+

This module extends the functionality of product_contract to add an +option to compute the total amounts on “contract” Sale Order lines, +including every invoicing planned.

+

For instance, a product worth 10€ invoiced every month for one year +would have a total of 120€ (unit_price * #invoices) instead of 10€ +(unit_price * quantity).

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  • Go to Sales > Products > Products
  • +
  • In “Product” form, for contract products, select “Include Recurrence +In Price”.
  • +
+

This configuration is also available on each individual Sale Order line, +in the contract configurator (see product_contract).

+

When “Include Recurrence In Price” is set, the amounts (total, subtotal, +tax total) of the Sale Order line are multiplied by the number of times +the line will be invoiced.

+
+
+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • 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.

+

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_recurrence_in_price/static/src/js/contract_configurator_controller.esm.js b/product_contract_recurrence_in_price/static/src/js/contract_configurator_controller.esm.js new file mode 100644 index 0000000000..f99e2bd952 --- /dev/null +++ b/product_contract_recurrence_in_price/static/src/js/contract_configurator_controller.esm.js @@ -0,0 +1,12 @@ +/** @odoo-module **/ + +import {patch} from "@web/core/utils/patch"; +import {ProductContractConfiguratorController} from "@product_contract/js/contract_configurator_controller.esm"; + +patch(ProductContractConfiguratorController.prototype, { + _getProductContractConfiguration(record) { + const config = super._getProductContractConfiguration(record); + config.include_recurrence_in_price = record.data.include_recurrence_in_price; + return config; + }, +}); diff --git a/product_contract_recurrence_in_price/static/src/js/sale_product_field.esm.js b/product_contract_recurrence_in_price/static/src/js/sale_product_field.esm.js new file mode 100644 index 0000000000..64e62729e1 --- /dev/null +++ b/product_contract_recurrence_in_price/static/src/js/sale_product_field.esm.js @@ -0,0 +1,15 @@ +/** @odoo-module **/ + +import {patch} from "@web/core/utils/patch"; +import {SaleOrderLineProductField} from "@sale/js/sale_product_field"; + +patch(SaleOrderLineProductField.prototype, { + get contractContext() { + const context = super.contractContext; + return { + ...context, + default_include_recurrence_in_price: + this.props.record.data.include_recurrence_in_price, + }; + }, +}); diff --git a/product_contract_recurrence_in_price/tests/__init__.py b/product_contract_recurrence_in_price/tests/__init__.py new file mode 100644 index 0000000000..6f699d0d8b --- /dev/null +++ b/product_contract_recurrence_in_price/tests/__init__.py @@ -0,0 +1 @@ +from . import test_sale_order diff --git a/product_contract_recurrence_in_price/tests/test_sale_order.py b/product_contract_recurrence_in_price/tests/test_sale_order.py new file mode 100644 index 0000000000..fcf68b29e3 --- /dev/null +++ b/product_contract_recurrence_in_price/tests/test_sale_order.py @@ -0,0 +1,41 @@ +# Copyright 2025 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.addons.product_contract.tests.test_sale_order import ( + TestSaleOrder as TestSaleOrderBase, +) + + +class TestSaleOrder(TestSaleOrderBase): + def test_compute_amount(self): + """ + Check that recurrence is taken into account in line amounts. + A SO line recurrent over 2 years and invoiced every 4 months will + be invoiced 6 times in total. + """ + tax = self.env["account.tax"].create( + { + "name": "10% tax", + "amount_type": "percent", + "amount": 10, + } + ) + self.order_line1.update( + { + "price_unit": 100, + "product_uom_qty": 10, + "recurrence_number": 2, + "recurrence_interval": "yearly", + "recurring_interval": 4, + "recurring_rule_type": "monthly", + "tax_id": [(4, tax.id)], + } + ) + self.assertEqual(self.order_line1.price_subtotal, 1000) + self.assertEqual(self.order_line1.price_tax, 100) + self.assertEqual(self.order_line1.price_total, 1100) + self.order_line1.include_recurrence_in_price = True + self.assertEqual(self.order_line1.recurring_invoicing_number, 6) + self.assertEqual(self.order_line1.price_subtotal, 6000) + self.assertEqual(self.order_line1.price_tax, 600) + self.assertEqual(self.order_line1.price_total, 6600) diff --git a/product_contract_recurrence_in_price/views/product_template.xml b/product_contract_recurrence_in_price/views/product_template.xml new file mode 100644 index 0000000000..b01c873bdc --- /dev/null +++ b/product_contract_recurrence_in_price/views/product_template.xml @@ -0,0 +1,17 @@ + + + + + product.template + + + + + + + + diff --git a/product_contract_recurrence_in_price/views/sale_order.xml b/product_contract_recurrence_in_price/views/sale_order.xml new file mode 100644 index 0000000000..7287862181 --- /dev/null +++ b/product_contract_recurrence_in_price/views/sale_order.xml @@ -0,0 +1,23 @@ + + + + + sale.order + + + + + + + + + + + diff --git a/product_contract_recurrence_in_price/wizards/product_contract_configurator_views.xml b/product_contract_recurrence_in_price/wizards/product_contract_configurator_views.xml new file mode 100644 index 0000000000..5ae3ab0911 --- /dev/null +++ b/product_contract_recurrence_in_price/wizards/product_contract_configurator_views.xml @@ -0,0 +1,15 @@ + + + + product.contract.configurator + + + + + + + + diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index ca061da7b3..7ef6614daf 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-contract" -version = "18.0.20260210.0" +version = "18.0.20260227.1" dependencies = [ "odoo-addon-agreement_rebate_partner_company_group==18.0.*", "odoo-addon-contract==18.0.*", @@ -17,6 +17,7 @@ dependencies = [ "odoo-addon-contract_queue_job==18.0.*", "odoo-addon-contract_refund_on_stop==18.0.*", "odoo-addon-contract_sale==18.0.*", + "odoo-addon-contract_sale_generation==18.0.*", "odoo-addon-contract_sale_invoicing==18.0.*", "odoo-addon-contract_sale_mandate==18.0.*", "odoo-addon-contract_sale_payment_mode==18.0.*", @@ -28,6 +29,7 @@ dependencies = [ "odoo-addon-contract_variable_qty_timesheet==18.0.*", "odoo-addon-contract_variable_quantity==18.0.*", "odoo-addon-product_contract==18.0.*", + "odoo-addon-product_contract_recurrence_in_price==18.0.*", "odoo-addon-product_contract_variable_quantity==18.0.*", "odoo-addon-subscription_oca==18.0.*", ]