From e9ee94b7f0c06fe8a6a309566831162f40e9dda5 Mon Sep 17 00:00:00 2001 From: Sylvain Van Hoof Date: Fri, 2 Mar 2018 17:29:56 +0100 Subject: [PATCH 0001/1277] Add the module purchase_cancel_reason. Copy/past from the module sale_cancel_reason (OCA/sale-workflow) developed by CampToCamp. (#438) * [ADD] Add the module purchase_cancel_reason. Copy/past from the module sale_cancel_reason (OCA/sale-workflow) developed by CampToCamp. --- purchase_cancel_reason/README.rst | 59 +++++++ purchase_cancel_reason/__init__.py | 6 + purchase_cancel_reason/__manifest__.py | 21 +++ .../data/purchase_order_cancel_reason.xml | 12 ++ purchase_cancel_reason/i18n/am.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/ar.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/bg.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/bs.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/ca.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/cs.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/da.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/de.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/el_GR.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/en_GB.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_AR.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_CO.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_CR.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_DO.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_EC.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_ES.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_MX.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_PE.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_PY.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/es_VE.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/et.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/eu.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/fa.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/fi.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/fr.po | 147 ++++++++++++++++++ purchase_cancel_reason/i18n/fr_BE.po | 146 +++++++++++++++++ purchase_cancel_reason/i18n/fr_CA.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/fr_CH.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/gl.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/gl_ES.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/he.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/hr.po | 145 +++++++++++++++++ purchase_cancel_reason/i18n/hr_HR.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/hu.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/id.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/it.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/ja.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/ko.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/lt.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/lt_LT.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/lv.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/mk.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/mn.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/nb.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/nb_NO.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/nl.po | 145 +++++++++++++++++ purchase_cancel_reason/i18n/nl_BE.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/nl_NL.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/pl.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/pt.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/pt_BR.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/pt_PT.po | 144 +++++++++++++++++ .../i18n/purchase_cancel_reason.pot | 141 +++++++++++++++++ purchase_cancel_reason/i18n/ro.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/ru.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/sk.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/sl.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/sr.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/sr@latin.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/sv.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/th.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/tr.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/uk.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/vi.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/vi_VN.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/zh_CN.po | 144 +++++++++++++++++ purchase_cancel_reason/i18n/zh_TW.po | 144 +++++++++++++++++ purchase_cancel_reason/model/__init__.py | 5 + .../model/purchase_order.py | 22 +++ .../security/ir.model.access.csv | 3 + .../static/description/icon.png | Bin 0 -> 9455 bytes purchase_cancel_reason/tests/__init__.py | 5 + .../tests/test_purchase_cancel_reason.py | 50 ++++++ .../views/purchase_order.xml | 56 +++++++ purchase_cancel_reason/wizard/__init__.py | 5 + .../wizard/purchase_cancel_reason.py | 30 ++++ .../wizard/purchase_cancel_reason_view.xml | 36 +++++ 82 files changed, 10106 insertions(+) create mode 100644 purchase_cancel_reason/README.rst create mode 100644 purchase_cancel_reason/__init__.py create mode 100644 purchase_cancel_reason/__manifest__.py create mode 100644 purchase_cancel_reason/data/purchase_order_cancel_reason.xml create mode 100644 purchase_cancel_reason/i18n/am.po create mode 100644 purchase_cancel_reason/i18n/ar.po create mode 100644 purchase_cancel_reason/i18n/bg.po create mode 100644 purchase_cancel_reason/i18n/bs.po create mode 100644 purchase_cancel_reason/i18n/ca.po create mode 100644 purchase_cancel_reason/i18n/cs.po create mode 100644 purchase_cancel_reason/i18n/da.po create mode 100644 purchase_cancel_reason/i18n/de.po create mode 100644 purchase_cancel_reason/i18n/el_GR.po create mode 100644 purchase_cancel_reason/i18n/en_GB.po create mode 100644 purchase_cancel_reason/i18n/es.po create mode 100644 purchase_cancel_reason/i18n/es_AR.po create mode 100644 purchase_cancel_reason/i18n/es_CO.po create mode 100644 purchase_cancel_reason/i18n/es_CR.po create mode 100644 purchase_cancel_reason/i18n/es_DO.po create mode 100644 purchase_cancel_reason/i18n/es_EC.po create mode 100644 purchase_cancel_reason/i18n/es_ES.po create mode 100644 purchase_cancel_reason/i18n/es_MX.po create mode 100644 purchase_cancel_reason/i18n/es_PE.po create mode 100644 purchase_cancel_reason/i18n/es_PY.po create mode 100644 purchase_cancel_reason/i18n/es_VE.po create mode 100644 purchase_cancel_reason/i18n/et.po create mode 100644 purchase_cancel_reason/i18n/eu.po create mode 100644 purchase_cancel_reason/i18n/fa.po create mode 100644 purchase_cancel_reason/i18n/fi.po create mode 100644 purchase_cancel_reason/i18n/fr.po create mode 100644 purchase_cancel_reason/i18n/fr_BE.po create mode 100644 purchase_cancel_reason/i18n/fr_CA.po create mode 100644 purchase_cancel_reason/i18n/fr_CH.po create mode 100644 purchase_cancel_reason/i18n/gl.po create mode 100644 purchase_cancel_reason/i18n/gl_ES.po create mode 100644 purchase_cancel_reason/i18n/he.po create mode 100644 purchase_cancel_reason/i18n/hr.po create mode 100644 purchase_cancel_reason/i18n/hr_HR.po create mode 100644 purchase_cancel_reason/i18n/hu.po create mode 100644 purchase_cancel_reason/i18n/id.po create mode 100644 purchase_cancel_reason/i18n/it.po create mode 100644 purchase_cancel_reason/i18n/ja.po create mode 100644 purchase_cancel_reason/i18n/ko.po create mode 100644 purchase_cancel_reason/i18n/lt.po create mode 100644 purchase_cancel_reason/i18n/lt_LT.po create mode 100644 purchase_cancel_reason/i18n/lv.po create mode 100644 purchase_cancel_reason/i18n/mk.po create mode 100644 purchase_cancel_reason/i18n/mn.po create mode 100644 purchase_cancel_reason/i18n/nb.po create mode 100644 purchase_cancel_reason/i18n/nb_NO.po create mode 100644 purchase_cancel_reason/i18n/nl.po create mode 100644 purchase_cancel_reason/i18n/nl_BE.po create mode 100644 purchase_cancel_reason/i18n/nl_NL.po create mode 100644 purchase_cancel_reason/i18n/pl.po create mode 100644 purchase_cancel_reason/i18n/pt.po create mode 100644 purchase_cancel_reason/i18n/pt_BR.po create mode 100644 purchase_cancel_reason/i18n/pt_PT.po create mode 100644 purchase_cancel_reason/i18n/purchase_cancel_reason.pot create mode 100644 purchase_cancel_reason/i18n/ro.po create mode 100644 purchase_cancel_reason/i18n/ru.po create mode 100644 purchase_cancel_reason/i18n/sk.po create mode 100644 purchase_cancel_reason/i18n/sl.po create mode 100644 purchase_cancel_reason/i18n/sr.po create mode 100644 purchase_cancel_reason/i18n/sr@latin.po create mode 100644 purchase_cancel_reason/i18n/sv.po create mode 100644 purchase_cancel_reason/i18n/th.po create mode 100644 purchase_cancel_reason/i18n/tr.po create mode 100644 purchase_cancel_reason/i18n/uk.po create mode 100644 purchase_cancel_reason/i18n/vi.po create mode 100644 purchase_cancel_reason/i18n/vi_VN.po create mode 100644 purchase_cancel_reason/i18n/zh_CN.po create mode 100644 purchase_cancel_reason/i18n/zh_TW.po create mode 100644 purchase_cancel_reason/model/__init__.py create mode 100644 purchase_cancel_reason/model/purchase_order.py create mode 100644 purchase_cancel_reason/security/ir.model.access.csv create mode 100644 purchase_cancel_reason/static/description/icon.png create mode 100644 purchase_cancel_reason/tests/__init__.py create mode 100644 purchase_cancel_reason/tests/test_purchase_cancel_reason.py create mode 100644 purchase_cancel_reason/views/purchase_order.xml create mode 100644 purchase_cancel_reason/wizard/__init__.py create mode 100644 purchase_cancel_reason/wizard/purchase_cancel_reason.py create mode 100644 purchase_cancel_reason/wizard/purchase_cancel_reason_view.xml diff --git a/purchase_cancel_reason/README.rst b/purchase_cancel_reason/README.rst new file mode 100644 index 00000000000..f751e964d22 --- /dev/null +++ b/purchase_cancel_reason/README.rst @@ -0,0 +1,59 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +====================== +Purchase Cancel Reason +====================== + +When a purchase order is canceled, a reason must be given, +it is chosen from a configured list. + +Usage +===== + +* During purchase order state equal to Draft, RFQ Sent or Purchase Order +* Click at "Cancel" button, a wizard will show a list of cancel reasons +* Choose a reason and confirm cancellation, the reason will be stamped in the purchase order + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/142/10.0 + +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 smash it by providing detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Guewen Baconnier, Camptocamp SA +* Kitti U. +* Sylvain Van Hoof + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +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. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/purchase_cancel_reason/__init__.py b/purchase_cancel_reason/__init__.py new file mode 100644 index 00000000000..6fd985040c1 --- /dev/null +++ b/purchase_cancel_reason/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2013 Guewen Baconnier, Camptocamp SA +# Copyright 2017 Okia SPRL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from . import wizard +from . import model diff --git a/purchase_cancel_reason/__manifest__.py b/purchase_cancel_reason/__manifest__.py new file mode 100644 index 00000000000..d64e1e1c6f1 --- /dev/null +++ b/purchase_cancel_reason/__manifest__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright 2013 Guewen Baconnier, Camptocamp SA +# Copyright 2017 Okia SPRL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{'name': 'Purchase Cancel Reason', + 'version': '10.0.1.0.0', + 'author': "Camptocamp,Odoo Community Association (OCA), Okia SPRL", + 'category': 'Purchase', + 'license': 'AGPL-3', + 'complexity': 'normal', + 'website': "https://github.com/OCA/purchase-workflow", + 'depends': [ + 'purchase'], + 'data': ['wizard/purchase_cancel_reason_view.xml', + 'views/purchase_order.xml', + 'security/ir.model.access.csv', + 'data/purchase_order_cancel_reason.xml', + ], + 'auto_install': False, + 'installable': True, + } diff --git a/purchase_cancel_reason/data/purchase_order_cancel_reason.xml b/purchase_cancel_reason/data/purchase_order_cancel_reason.xml new file mode 100644 index 00000000000..6d40e6b888e --- /dev/null +++ b/purchase_cancel_reason/data/purchase_order_cancel_reason.xml @@ -0,0 +1,12 @@ + + + + Just for Quotation + + + Service no longer needed + + + Other Service Provider selected + + diff --git a/purchase_cancel_reason/i18n/am.po b/purchase_cancel_reason/i18n/am.po new file mode 100644 index 00000000000..dcf4275cfe3 --- /dev/null +++ b/purchase_cancel_reason/i18n/am.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: am\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/ar.po b/purchase_cancel_reason/i18n/ar.po new file mode 100644 index 00000000000..ac8dbebf7fc --- /dev/null +++ b/purchase_cancel_reason/i18n/ar.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "أنشئ بواسطة" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "أنشئ في" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "المعرف" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "آخر تحديث بواسطة" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "آخر تحديث في" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/bg.po b/purchase_cancel_reason/i18n/bg.po new file mode 100644 index 00000000000..e6abf53db68 --- /dev/null +++ b/purchase_cancel_reason/i18n/bg.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Създадено от" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Създадено на" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Последно обновено от" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Последно обновено на" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/bs.po b/purchase_cancel_reason/i18n/bs.po new file mode 100644 index 00000000000..18608a28b0c --- /dev/null +++ b/purchase_cancel_reason/i18n/bs.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Bosnian (https://www.transifex.com/oca/teams/23907/bs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: bs\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/ca.po b/purchase_cancel_reason/i18n/ca.po new file mode 100644 index 00000000000..2730217acd6 --- /dev/null +++ b/purchase_cancel_reason/i18n/ca.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creat el" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Darrera Actualització per" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Darrera Actualització el" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/cs.po b/purchase_cancel_reason/i18n/cs.po new file mode 100644 index 00000000000..b9820f48301 --- /dev/null +++ b/purchase_cancel_reason/i18n/cs.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Czech (https://www.transifex.com/oca/teams/23907/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: cs\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Vytvořil(a)" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Vytvořeno" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Naposled upraveno" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Naposled upraveno" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/da.po b/purchase_cancel_reason/i18n/da.po new file mode 100644 index 00000000000..aebd2b60739 --- /dev/null +++ b/purchase_cancel_reason/i18n/da.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Danish (https://www.transifex.com/oca/teams/23907/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Oprettet af" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Oprettet den" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "Id" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Sidst opdateret af" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Sidst opdateret den" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/de.po b/purchase_cancel_reason/i18n/de.po new file mode 100644 index 00000000000..e64ef6aa913 --- /dev/null +++ b/purchase_cancel_reason/i18n/de.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Erstellt am:" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Anzeigebezeichnung" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Zuletzt geändert am" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Zuletzt aktualisiert von" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Zuletzt aktualisiert am" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Bestellauftrag" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/el_GR.po b/purchase_cancel_reason/i18n/el_GR.po new file mode 100644 index 00000000000..8189674bfc8 --- /dev/null +++ b/purchase_cancel_reason/i18n/el_GR.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/el_GR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: el_GR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Δημιουργήθηκε από " + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Δημιουργήθηκε στις" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "Κωδικός" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Τελευταία ενημέρωση από" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Τελευταία ενημέρωση στις" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/en_GB.po b/purchase_cancel_reason/i18n/en_GB.po new file mode 100644 index 00000000000..728d3015816 --- /dev/null +++ b/purchase_cancel_reason/i18n/en_GB.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: English (United Kingdom) (https://www.transifex.com/oca/teams/23907/en_GB/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Created by" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Created on" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es.po b/purchase_cancel_reason/i18n/es.po new file mode 100644 index 00000000000..cf7c976bf1e --- /dev/null +++ b/purchase_cancel_reason/i18n/es.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID (identificación)" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Orden de Compra" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_AR.po b/purchase_cancel_reason/i18n/es_AR.po new file mode 100644 index 00000000000..4f3803ce7cb --- /dev/null +++ b/purchase_cancel_reason/i18n/es_AR.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Argentina) (https://www.transifex.com/oca/teams/23907/es_AR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_CO.po b/purchase_cancel_reason/i18n/es_CO.po new file mode 100644 index 00000000000..2fe1a1f7bfe --- /dev/null +++ b/purchase_cancel_reason/i18n/es_CO.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Colombia) (https://www.transifex.com/oca/teams/23907/es_CO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_CR.po b/purchase_cancel_reason/i18n/es_CR.po new file mode 100644 index 00000000000..da24cb20598 --- /dev/null +++ b/purchase_cancel_reason/i18n/es_CR.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/teams/23907/es_CR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_DO.po b/purchase_cancel_reason/i18n/es_DO.po new file mode 100644 index 00000000000..2921a95f43c --- /dev/null +++ b/purchase_cancel_reason/i18n/es_DO.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Dominican Republic) (https://www.transifex.com/oca/teams/23907/es_DO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_DO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID (identificación)" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_EC.po b/purchase_cancel_reason/i18n/es_EC.po new file mode 100644 index 00000000000..a1efdae4dd1 --- /dev/null +++ b/purchase_cancel_reason/i18n/es_EC.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Ecuador) (https://www.transifex.com/oca/teams/23907/es_EC/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_EC\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_ES.po b/purchase_cancel_reason/i18n/es_ES.po new file mode 100644 index 00000000000..c2c4c7f704f --- /dev/null +++ b/purchase_cancel_reason/i18n/es_ES.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/es_ES/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_ES\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_MX.po b/purchase_cancel_reason/i18n/es_MX.po new file mode 100644 index 00000000000..e5099cf669b --- /dev/null +++ b/purchase_cancel_reason/i18n/es_MX.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/es_MX/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_PE.po b/purchase_cancel_reason/i18n/es_PE.po new file mode 100644 index 00000000000..f1a507fc391 --- /dev/null +++ b/purchase_cancel_reason/i18n/es_PE.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# Henry Garcia , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: Henry Garcia , 2018\n" +"Language-Team: Spanish (Peru) (https://www.transifex.com/oca/teams/23907/es_PE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_PE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "Cancelar" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Última modificación" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Última actualización" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Orden de compra" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "o" diff --git a/purchase_cancel_reason/i18n/es_PY.po b/purchase_cancel_reason/i18n/es_PY.po new file mode 100644 index 00000000000..3f129b0773b --- /dev/null +++ b/purchase_cancel_reason/i18n/es_PY.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Paraguay) (https://www.transifex.com/oca/teams/23907/es_PY/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_PY\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/es_VE.po b/purchase_cancel_reason/i18n/es_VE.po new file mode 100644 index 00000000000..b24696452d8 --- /dev/null +++ b/purchase_cancel_reason/i18n/es_VE.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (Venezuela) (https://www.transifex.com/oca/teams/23907/es_VE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_VE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/et.po b/purchase_cancel_reason/i18n/et.po new file mode 100644 index 00000000000..2118e6efe7c --- /dev/null +++ b/purchase_cancel_reason/i18n/et.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Estonian (https://www.transifex.com/oca/teams/23907/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Loodud" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/eu.po b/purchase_cancel_reason/i18n/eu.po new file mode 100644 index 00000000000..1664babed6b --- /dev/null +++ b/purchase_cancel_reason/i18n/eu.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Basque (https://www.transifex.com/oca/teams/23907/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/fa.po b/purchase_cancel_reason/i18n/fa.po new file mode 100644 index 00000000000..bd982c6f161 --- /dev/null +++ b/purchase_cancel_reason/i18n/fa.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "ایجاد شده توسط" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "ایجاد شده در" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "شناسه" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "آخرین به روز رسانی توسط" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "آخرین به روز رسانی در" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/fi.po b/purchase_cancel_reason/i18n/fi.po new file mode 100644 index 00000000000..a4c20d43ba9 --- /dev/null +++ b/purchase_cancel_reason/i18n/fi.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Luonut" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Luotu" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nimi" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Viimeksi muokattu" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Viimeksi päivittänyt" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Viimeksi päivitetty" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/fr.po b/purchase_cancel_reason/i18n/fr.po new file mode 100644 index 00000000000..8d2f62d8c3c --- /dev/null +++ b/purchase_cancel_reason/i18n/fr.po @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +# Quentin THEURET , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: Quentin THEURET , 2018\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "Demander une motif lors de l'annulation du bon de commande." + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "Annuler" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "Motif de l'annulation :" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" +"Choisissez le motif de l'annulation du \n" +" bon de commande." + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "Confirmer" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Display Name" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "Juste un devis" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Dernière modification par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Dernière modification le" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "Un autre fournisseur de service a été sélectionné" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Bon de commande" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "Motif de l'annulation du bon de commande" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "Motifs de l'annulation du bon de commande" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "Motif" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "Motif d'annulation" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "Motif de l'annulation" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "Le service n'est plus requis" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "ou" diff --git a/purchase_cancel_reason/i18n/fr_BE.po b/purchase_cancel_reason/i18n/fr_BE.po new file mode 100644 index 00000000000..ee42d6049ba --- /dev/null +++ b/purchase_cancel_reason/i18n/fr_BE.po @@ -0,0 +1,146 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: French (Belgium) (https://www.transifex.com/oca/teams/23907/fr_BE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr_BE\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr " Demande une cause de l'annulation de la commande." + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "Annuler" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "Cause de l'annulation:" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" +"Veuillez choisir la cause de l'annulation\n" +" de la commande." + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "Confirmer" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "Juste pour une offre" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Derniere fois mis à jour par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Dernière mis à jour le" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "Autre fournisseur sélectionné" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Commande fournisseur" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "Cause d'annulation pour un bon de commande" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "Cause d'annulation pour un bon de commande" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "Cause" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "Cause de l'annulation" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "Cause de l'annulation" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "Le service n'est plus nécessaire" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "ou" diff --git a/purchase_cancel_reason/i18n/fr_CA.po b/purchase_cancel_reason/i18n/fr_CA.po new file mode 100644 index 00000000000..7a5be7ba436 --- /dev/null +++ b/purchase_cancel_reason/i18n/fr_CA.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/fr_CA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr_CA\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Afficher le nom" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "Identifiant" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/fr_CH.po b/purchase_cancel_reason/i18n/fr_CH.po new file mode 100644 index 00000000000..b03229f9a31 --- /dev/null +++ b/purchase_cancel_reason/i18n/fr_CH.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/teams/23907/fr_CH/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr_CH\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Modifié par" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Modifié le" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/gl.po b/purchase_cancel_reason/i18n/gl.po new file mode 100644 index 00000000000..d3ecf21efa3 --- /dev/null +++ b/purchase_cancel_reason/i18n/gl.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Modificado por última vez o" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "ültima actualización por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Orde de compra" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/gl_ES.po b/purchase_cancel_reason/i18n/gl_ES.po new file mode 100644 index 00000000000..89073f8891d --- /dev/null +++ b/purchase_cancel_reason/i18n/gl_ES.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Galician (Spain) (https://www.transifex.com/oca/teams/23907/gl_ES/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: gl_ES\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/he.po b/purchase_cancel_reason/i18n/he.po new file mode 100644 index 00000000000..50e0fdc0cdc --- /dev/null +++ b/purchase_cancel_reason/i18n/he.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Hebrew (https://www.transifex.com/oca/teams/23907/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "נוצר על ידי" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "נוצר ב-" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "מזהה" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "עודכן לאחרונה על ידי" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "עודכן לאחרונה על" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/hr.po b/purchase_cancel_reason/i18n/hr.po new file mode 100644 index 00000000000..f257dfd1011 --- /dev/null +++ b/purchase_cancel_reason/i18n/hr.po @@ -0,0 +1,145 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: Bole , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "Odustani" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Kreirano " + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Prikaži naziv" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Zadnja izmjena na" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Zadnje ažuriranje izvršio" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Zadnje ažuriranje na" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Nabavni nalog" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "ili" diff --git a/purchase_cancel_reason/i18n/hr_HR.po b/purchase_cancel_reason/i18n/hr_HR.po new file mode 100644 index 00000000000..681e6f6dc78 --- /dev/null +++ b/purchase_cancel_reason/i18n/hr_HR.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/hr_HR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr_HR\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Naziv" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Zadnje ažurirao" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/hu.po b/purchase_cancel_reason/i18n/hu.po new file mode 100644 index 00000000000..7c60618a5c6 --- /dev/null +++ b/purchase_cancel_reason/i18n/hu.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Készítette" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Létrehozás dátuma" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "Azonosító ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Utoljára frissítve, által" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Utoljára frissítve ekkor" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/id.po b/purchase_cancel_reason/i18n/id.po new file mode 100644 index 00000000000..bf357831f74 --- /dev/null +++ b/purchase_cancel_reason/i18n/id.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Indonesian (https://www.transifex.com/oca/teams/23907/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Dibuat oleh" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Dibuat pada" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Diperbaharui oleh" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Diperbaharui pada" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/it.po b/purchase_cancel_reason/i18n/it.po new file mode 100644 index 00000000000..3b82ada563b --- /dev/null +++ b/purchase_cancel_reason/i18n/it.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creato il" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nome da visualizzare" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Ordine Acquisto" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/ja.po b/purchase_cancel_reason/i18n/ja.po new file mode 100644 index 00000000000..94ce34e6104 --- /dev/null +++ b/purchase_cancel_reason/i18n/ja.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "作成者" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "作成日" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "最終更新者" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "最終更新日" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/ko.po b/purchase_cancel_reason/i18n/ko.po new file mode 100644 index 00000000000..997d3923197 --- /dev/null +++ b/purchase_cancel_reason/i18n/ko.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Korean (https://www.transifex.com/oca/teams/23907/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "작성자" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "작성일" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "최근 갱신한 사람" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "최근 갱신 날짜" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/lt.po b/purchase_cancel_reason/i18n/lt.po new file mode 100644 index 00000000000..7e2e457897c --- /dev/null +++ b/purchase_cancel_reason/i18n/lt.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Sukūrė" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Sukurta" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Paskutini kartą atnaujino" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Paskutinį kartą atnaujinta" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/lt_LT.po b/purchase_cancel_reason/i18n/lt_LT.po new file mode 100644 index 00000000000..cae3a7ad8b1 --- /dev/null +++ b/purchase_cancel_reason/i18n/lt_LT.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/teams/23907/lt_LT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lt_LT\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Sukūrė" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Sukurta" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Paskutinį kartą atnaujino" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Paskutinį kartą atnaujinta" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/lv.po b/purchase_cancel_reason/i18n/lv.po new file mode 100644 index 00000000000..28dcb1abb8d --- /dev/null +++ b/purchase_cancel_reason/i18n/lv.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Izveidoja" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Izveidots" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Pēdējo reizi atjaunoja" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Pēdējās izmaiņas" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/mk.po b/purchase_cancel_reason/i18n/mk.po new file mode 100644 index 00000000000..3e2384b130c --- /dev/null +++ b/purchase_cancel_reason/i18n/mk.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Креирано од" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Креирано на" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Последно ажурирање од" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Последно ажурирање на" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/mn.po b/purchase_cancel_reason/i18n/mn.po new file mode 100644 index 00000000000..4820e8a3885 --- /dev/null +++ b/purchase_cancel_reason/i18n/mn.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: mn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Үүсгэгч" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Үүсгэсэн огноо" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Сүүлийн засвар хийсэн" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Сүүлийн засвар хийсэн огноо" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/nb.po b/purchase_cancel_reason/i18n/nb.po new file mode 100644 index 00000000000..de5b356c112 --- /dev/null +++ b/purchase_cancel_reason/i18n/nb.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Opprettet av" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Opprettet" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Sist oppdatert av" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Sist oppdatert" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/nb_NO.po b/purchase_cancel_reason/i18n/nb_NO.po new file mode 100644 index 00000000000..06eda8cd4d1 --- /dev/null +++ b/purchase_cancel_reason/i18n/nb_NO.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/teams/23907/nb_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Laget av" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Laget den" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Vis navn" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Sist endret den" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Sist oppdatert av" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Sist oppdatert den" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/nl.po b/purchase_cancel_reason/i18n/nl.po new file mode 100644 index 00000000000..ce679bc5796 --- /dev/null +++ b/purchase_cancel_reason/i18n/nl.po @@ -0,0 +1,145 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# Erwin van der Ploeg , 2018 +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Weergave naam" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Laatst bijgewerkt op" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Laatste bijgewerkt door" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Inkooporder" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/nl_BE.po b/purchase_cancel_reason/i18n/nl_BE.po new file mode 100644 index 00000000000..1fb589e7083 --- /dev/null +++ b/purchase_cancel_reason/i18n/nl_BE.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Dutch (Belgium) (https://www.transifex.com/oca/teams/23907/nl_BE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl_BE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Gemaakt door" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Gemaakt op" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/nl_NL.po b/purchase_cancel_reason/i18n/nl_NL.po new file mode 100644 index 00000000000..359d1ecfdac --- /dev/null +++ b/purchase_cancel_reason/i18n/nl_NL.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# Peter Hageman , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: Peter Hageman , 2018\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "Annuleer" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Laatst gewijzigd op" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Laatst aangepast door" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Laatst aangepast op" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Inkooporder" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "of" diff --git a/purchase_cancel_reason/i18n/pl.po b/purchase_cancel_reason/i18n/pl.po new file mode 100644 index 00000000000..715ee5bb0fb --- /dev/null +++ b/purchase_cancel_reason/i18n/pl.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Utworzone przez" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Data utworzenia" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Ostatnio modyfikowane przez" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Data ostatniej modyfikacji" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/pt.po b/purchase_cancel_reason/i18n/pt.po new file mode 100644 index 00000000000..5fed640d1d4 --- /dev/null +++ b/purchase_cancel_reason/i18n/pt.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Criado em" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Última Modificação Em" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Atualizado pela última vez por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Atualizado pela última vez em" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/pt_BR.po b/purchase_cancel_reason/i18n/pt_BR.po new file mode 100644 index 00000000000..d48d120c3f0 --- /dev/null +++ b/purchase_cancel_reason/i18n/pt_BR.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "Cancelar" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Criado em" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Mostrar Nome" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "Identificação" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Ordem de Compra" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/pt_PT.po b/purchase_cancel_reason/i18n/pt_PT.po new file mode 100644 index 00000000000..ab3ef9221b4 --- /dev/null +++ b/purchase_cancel_reason/i18n/pt_PT.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/teams/23907/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Criado em" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Atualizado pela última vez por" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Atualizado pela última vez em" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/purchase_cancel_reason.pot b/purchase_cancel_reason/i18n/purchase_cancel_reason.pot new file mode 100644 index 00000000000..c0369bd1fa0 --- /dev/null +++ b/purchase_cancel_reason/i18n/purchase_cancel_reason.pot @@ -0,0 +1,141 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-25 11:53+0000\n" +"PO-Revision-Date: 2017-07-25 11:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_7986 +msgid "ID" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_7978 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" + diff --git a/purchase_cancel_reason/i18n/ro.po b/purchase_cancel_reason/i18n/ro.po new file mode 100644 index 00000000000..d535d4399b8 --- /dev/null +++ b/purchase_cancel_reason/i18n/ro.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Creat de" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Creat la" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Nume Afişat" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Ultima actualizare în" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Ultima actualizare făcută de" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Ultima actualizare la" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Comandă achiziție" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/ru.po b/purchase_cancel_reason/i18n/ru.po new file mode 100644 index 00000000000..3639e243416 --- /dev/null +++ b/purchase_cancel_reason/i18n/ru.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Создано" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Создан" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Последний раз обновлено" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Последний раз обновлено" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/sk.po b/purchase_cancel_reason/i18n/sk.po new file mode 100644 index 00000000000..960ed75d151 --- /dev/null +++ b/purchase_cancel_reason/i18n/sk.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Slovak (https://www.transifex.com/oca/teams/23907/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Vytvoril" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Vytvorené" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Naposledy upravil" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Naposledy upravené" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/sl.po b/purchase_cancel_reason/i18n/sl.po new file mode 100644 index 00000000000..ee68564c37a --- /dev/null +++ b/purchase_cancel_reason/i18n/sl.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "Preklic" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Ustvaril" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "Prikazni naziv" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "Zadnjič spremenjeno" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Nabavni nalog" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/sr.po b/purchase_cancel_reason/i18n/sr.po new file mode 100644 index 00000000000..8e0aafe9f20 --- /dev/null +++ b/purchase_cancel_reason/i18n/sr.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Serbian (https://www.transifex.com/oca/teams/23907/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Kreiran" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/sr@latin.po b/purchase_cancel_reason/i18n/sr@latin.po new file mode 100644 index 00000000000..7397778a70f --- /dev/null +++ b/purchase_cancel_reason/i18n/sr@latin.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Serbian (Latin) (https://www.transifex.com/oca/teams/23907/sr%40latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Kreiran" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/sv.po b/purchase_cancel_reason/i18n/sv.po new file mode 100644 index 00000000000..7acf8a5cb2b --- /dev/null +++ b/purchase_cancel_reason/i18n/sv.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Skapad av" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Skapad den" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Senast uppdaterad av" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Senast uppdaterad" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/th.po b/purchase_cancel_reason/i18n/th.po new file mode 100644 index 00000000000..90a902d31fb --- /dev/null +++ b/purchase_cancel_reason/i18n/th.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Thai (https://www.transifex.com/oca/teams/23907/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "สร้างโดย" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "สร้างเมื่อ" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "รหัส" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "อัพเดทครั้งสุดท้ายโดย" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "อัพเดทครั้งสุดท้ายเมื่อ" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/tr.po b/purchase_cancel_reason/i18n/tr.po new file mode 100644 index 00000000000..f552abf0325 --- /dev/null +++ b/purchase_cancel_reason/i18n/tr.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Oluşturuldu" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Son güncelleyen" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Son güncelleme" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/uk.po b/purchase_cancel_reason/i18n/uk.po new file mode 100644 index 00000000000..f4dddd91ecb --- /dev/null +++ b/purchase_cancel_reason/i18n/uk.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Створив" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Створено" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Востаннє відредаговано" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Дата останньої зміни" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/vi.po b/purchase_cancel_reason/i18n/vi.po new file mode 100644 index 00000000000..a6102b0ce7d --- /dev/null +++ b/purchase_cancel_reason/i18n/vi.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Vietnamese (https://www.transifex.com/oca/teams/23907/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Tạo trên" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/vi_VN.po b/purchase_cancel_reason/i18n/vi_VN.po new file mode 100644 index 00000000000..5dc29a20995 --- /dev/null +++ b/purchase_cancel_reason/i18n/vi_VN.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/teams/23907/vi_VN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: vi_VN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "Tạo bởi" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "Tạo vào" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "Cập nhật lần cuối bởi" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "Cập nhật lần cuối vào" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "Đơn hàng Mua" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/zh_CN.po b/purchase_cancel_reason/i18n/zh_CN.po new file mode 100644 index 00000000000..3b202fc2261 --- /dev/null +++ b/purchase_cancel_reason/i18n/zh_CN.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "创建人" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "创建时间" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "显示名称" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "最后修改时间" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "最后更新人" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "最后更新时间" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/i18n/zh_TW.po b/purchase_cancel_reason/i18n/zh_TW.po new file mode 100644 index 00000000000..5961ab2b6ed --- /dev/null +++ b/purchase_cancel_reason/i18n/zh_TW.po @@ -0,0 +1,144 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_cancel_reason +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-03 03:48+0000\n" +"PO-Revision-Date: 2018-03-03 03:48+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/oca/teams/23907/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel +msgid " Ask a reason for the purchase order cancellation." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Cancel" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.purchase_order_form +msgid "Cancellation reason:" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "" +"Choose the reason for the cancellation of the\n" +" purchase order." +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Confirm" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_create_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_create_date +msgid "Created on" +msgstr "建立於" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_display_name +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4690 +msgid "ID" +msgstr "ID" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_only_quotation +msgid "Just for Quotation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel___last_update +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_uid +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_write_date +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_other_provider +msgid "Other Service Provider selected" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel_reason +#: model:ir.model,name:purchase_cancel_reason.model_purchase_order_cancel_reason +msgid "Purchase Order Cancel Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.menu,name:purchase_cancel_reason.menu_purchase_order_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_form +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel_reason_tree +msgid "Purchase Order Cancel Reasons" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_name +msgid "Reason" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.model.fields,field_description:purchase_cancel_reason.field_purchase_order_cancel_reason_id_4682 +msgid "Reason for cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.actions.act_window,name:purchase_cancel_reason.action_purchase_order_cancel +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "Reason for the cancellation" +msgstr "" + +#. module: purchase_cancel_reason +#: model:purchase.order.cancel.reason,name:purchase_cancel_reason.cancel_reason_no_service_needed +msgid "Service no longer needed" +msgstr "" + +#. module: purchase_cancel_reason +#: model:ir.ui.view,arch_db:purchase_cancel_reason.view_purchase_order_cancel +msgid "or" +msgstr "" diff --git a/purchase_cancel_reason/model/__init__.py b/purchase_cancel_reason/model/__init__.py new file mode 100644 index 00000000000..d4fc5778236 --- /dev/null +++ b/purchase_cancel_reason/model/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2013 Guewen Baconnier, Camptocamp SA +# Copyright 2017 Okia SPRL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from . import purchase_order diff --git a/purchase_cancel_reason/model/purchase_order.py b/purchase_cancel_reason/model/purchase_order.py new file mode 100644 index 00000000000..5ba40988afb --- /dev/null +++ b/purchase_cancel_reason/model/purchase_order.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2013 Guewen Baconnier, Camptocamp SA +# Copyright 2017 Okia SPRL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class PurchaseOrder(models.Model): + _inherit = 'purchase.order' + + cancel_reason_id = fields.Many2one( + 'purchase.order.cancel.reason', + string="Reason for cancellation", + readonly=True, + ondelete="restrict") + + +class PurchaseOrderCancelReason(models.Model): + _name = 'purchase.order.cancel.reason' + _description = 'Purchase Order Cancel Reason' + + name = fields.Char('Reason', required=True, translate=True) diff --git a/purchase_cancel_reason/security/ir.model.access.csv b/purchase_cancel_reason/security/ir.model.access.csv new file mode 100644 index 00000000000..1675d86015c --- /dev/null +++ b/purchase_cancel_reason/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_purchase_order_cancel_reason_user,access_purchase_order_cancel_reason user,model_purchase_order_cancel_reason,purchase.group_purchase_user,1,0,0,0 +access_purchase_order_cancel_reason_manager,access_purchase_order_cancel_reason manager,model_purchase_order_cancel_reason,purchase.group_purchase_manager,1,1,1,1 diff --git a/purchase_cancel_reason/static/description/icon.png b/purchase_cancel_reason/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/purchase_cancel_reason/tests/__init__.py b/purchase_cancel_reason/tests/__init__.py new file mode 100644 index 00000000000..78aff63047e --- /dev/null +++ b/purchase_cancel_reason/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2013 Guewen Baconnier, Camptocamp SA +# Copyright 2017 Okia SPRL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from . import test_purchase_cancel_reason diff --git a/purchase_cancel_reason/tests/test_purchase_cancel_reason.py b/purchase_cancel_reason/tests/test_purchase_cancel_reason.py new file mode 100644 index 00000000000..d84853b0c09 --- /dev/null +++ b/purchase_cancel_reason/tests/test_purchase_cancel_reason.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2013 Guewen Baconnier, Camptocamp SA +# Copyright 2017 Okia SPRL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields +from odoo.tests.common import TransactionCase + + +class TestPurchaseCancelReason(TransactionCase): + + def setUp(self): + super(TestPurchaseCancelReason, self).setUp() + PurchaseOrder = self.env['purchase.order'] + CancelReason = self.env['purchase.order.cancel.reason'] + self.reason = CancelReason.create({'name': 'Canceled for tests'}) + self.supplier = self.env['res.partner'].create({ + 'name': 'Supplier', + 'supplier': True, + }) + self.product = self.env['product.product'].create({ + 'name': 'Product' + }) + uom = self.env.ref('product.product_uom_unit') + self.purchase_order = PurchaseOrder.create({ + 'partner_id': self.supplier.id, + 'date_planned': fields.Datetime.now(), + 'order_line': [(0, 0, { + 'name': 'Line 1', + 'product_id': self.product.id, + 'product_qty': 8, + 'product_uom': uom.id, + 'price_unit': 100.00, + 'date_planned': fields.Datetime.now(), + })], + }) + + def test_purchase_order_cancel_reason(self): + """ + - Cancel a purchase order with the wizard asking for the reason + - Then the purchase order should be canceled and the reason stored + """ + PurchaseOrderCancel = self.env['purchase.order.cancel'] + context = {'active_model': 'purchase.order', + 'active_ids': [self.purchase_order.id], } + wizard = PurchaseOrderCancel.create({'reason_id': self.reason.id}) + wizard.with_context(context).confirm_cancel() + self.assertEqual(self.purchase_order.state, 'cancel', + 'the purchase order should be canceled') + self.assertEqual(self.purchase_order.cancel_reason_id.id, + self.reason.id) diff --git a/purchase_cancel_reason/views/purchase_order.xml b/purchase_cancel_reason/views/purchase_order.xml new file mode 100644 index 00000000000..63b3831122e --- /dev/null +++ b/purchase_cancel_reason/views/purchase_order.xml @@ -0,0 +1,56 @@ + + + + purchase.order.form + purchase.order + + + + True + + + + +
+
+ + + + + + + + + + + + + + + +
+
+ + purchase.request.type + + + + + + + + + + + + + + + Purchase Request Types + ir.actions.act_window + purchase.request.type + form,tree + + + +

+ Click to set a new type for purchase request. +

+
+
+ + + +
diff --git a/purchase_request_type/views/purchase_request_view.xml b/purchase_request_type/views/purchase_request_view.xml new file mode 100644 index 00000000000..f2bd88ee5e5 --- /dev/null +++ b/purchase_request_type/views/purchase_request_view.xml @@ -0,0 +1,54 @@ + + + + purchase.request + + + + + + + + + + + purchase.request + + + + + + + + + purchase.request + + + + + + + + + + + From 87c2b630ea00ce7040a6c583e145613fbca948cc Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 19 Jul 2021 22:42:12 +0000 Subject: [PATCH 0012/1277] [UPD] Update purchase_request_type.pot --- .../i18n/purchase_request_type.pot | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 purchase_request_type/i18n/purchase_request_type.pot diff --git a/purchase_request_type/i18n/purchase_request_type.pot b/purchase_request_type/i18n/purchase_request_type.pot new file mode 100644 index 00000000000..2bbaaa4120c --- /dev/null +++ b/purchase_request_type/i18n/purchase_request_type.pot @@ -0,0 +1,146 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_request_type +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__active +msgid "Active" +msgstr "" + +#. module: purchase_request_type +#: model_terms:ir.actions.act_window,help:purchase_request_type.action_purchase_request_type_view +msgid "Click to set a new type for purchase request." +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__company_id +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_type_search +msgid "Company" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__create_date +msgid "Created on" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__description +msgid "Description" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request__display_name +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_request_type +#: code:addons/purchase_request_type/models/purchase_request.py:0 +#, python-format +msgid "Document's company and type's company mismatch" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__sequence_id +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_type_search +msgid "Entry Sequence" +msgstr "" + +#. module: purchase_request_type +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_type_search +msgid "Group By" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request__id +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__id +msgid "ID" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request____last_update +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__name +msgid "Name" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request__request_type +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_search +msgid "PR Type" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__picking_type_id +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_type_search +msgid "Picking Type" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model,name:purchase_request_type.model_purchase_request +msgid "Purchase Request" +msgstr "" + +#. module: purchase_request_type +#: model:ir.actions.act_window,name:purchase_request_type.action_purchase_request_type_view +#: model:ir.ui.menu,name:purchase_request_type.menu_purchase_request_type +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_type_search +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_type_tree +msgid "Purchase Request Types" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request__reduce_step +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__reduce_step +msgid "Reduce Step" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request__name +msgid "Request Reference" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model.fields,field_description:purchase_request_type.field_purchase_request_type__sequence +msgid "Sequence" +msgstr "" + +#. module: purchase_request_type +#: model_terms:ir.ui.view,arch_db:purchase_request_type.view_purchase_request_type_form +msgid "Type" +msgstr "" + +#. module: purchase_request_type +#: model:ir.model,name:purchase_request_type.model_purchase_request_type +msgid "Type of purchase request" +msgstr "" From 04ad234061f02eb520b7b15eebd9e98c6d828296 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 19 Jul 2021 23:16:35 +0000 Subject: [PATCH 0013/1277] [UPD] README.rst --- purchase_request_type/README.rst | 97 +++++++++++++++++++ .../static/description/index.html | 33 ++++--- 2 files changed, 116 insertions(+), 14 deletions(-) create mode 100644 purchase_request_type/README.rst diff --git a/purchase_request_type/README.rst b/purchase_request_type/README.rst new file mode 100644 index 00000000000..b9da2b22236 --- /dev/null +++ b/purchase_request_type/README.rst @@ -0,0 +1,97 @@ +===================== +Purchase Request Type +===================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_request_type + :alt: OCA/purchase-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_request_type + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/142/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds the following functions: + + - Adds a configurable *type* on the purchase requests. + - Choose reduce step not to create rfq. + - This type can be used in filters and groupbys. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module, you need to: + +* Go to **Purchases > Configuration > Purchase Request types** +* Modify / create the purchase request types + +Usage +===== + +To use this module, you need to: + +* Attribute a type when editing purchase requests + +Known issues / Roadmap +====================== + +* Suggestion: add a default configuration attached to the types + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ProThai + +Contributors +~~~~~~~~~~~~ + +* Prapassorn Sornkaew + +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/purchase-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_request_type/static/description/index.html b/purchase_request_type/static/description/index.html index 7ad40d84644..04e4ec1a1bc 100644 --- a/purchase_request_type/static/description/index.html +++ b/purchase_request_type/static/description/index.html @@ -4,7 +4,7 @@ -Purchase Order Type +Purchase Request Type -
-

Purchase Order Type

+
+

Purchase Request Type

-

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

-

Adds a configurable type on the purchase orders. -This type can be used in filters and groupbys.

+

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

+

This module adds the following functions:

+
+
    +
  • Adds a configurable type on the purchase requests.
  • +
  • Choose reduce step not to create rfq.
  • +
  • This type can be used in filters and groupbys.
  • +
+

Table of contents

    @@ -389,15 +395,15 @@

    Purchase Order Type

    Configuration

    To configure this module, you need to:

      -
    • Go to Purchases > Configuration > Purchase types
    • -
    • Modify / create the purchase order types
    • +
    • Go to Purchases > Configuration > Purchase Request types
    • +
    • Modify / create the purchase request types

Usage

To use this module, you need to:

    -
  • Attribute a type when editing purchase orders
  • +
  • Attribute a type when editing purchase requests
@@ -411,7 +417,7 @@

Bug Tracker

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

+feedback.

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

@@ -419,14 +425,13 @@

Credits

Authors

    -
  • Camptocamp
  • +
  • ProThai

Contributors

@@ -436,7 +441,7 @@

Maintainers

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/purchase-workflow project on GitHub.

+

This module is part of the OCA/purchase-workflow project on GitHub.

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

From 59f8ba6b1131ccdd81bc47a09382f91d6f82ac2d Mon Sep 17 00:00:00 2001 From: Kitti U Date: Thu, 19 Aug 2021 11:20:53 +0700 Subject: [PATCH 0014/1277] [14.0][FIX] purchase_request_type, use tracking=True --- purchase_request_type/models/purchase_request.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_request_type/models/purchase_request.py b/purchase_request_type/models/purchase_request.py index 1c14ccfa3b2..b21ed835a29 100644 --- a/purchase_request_type/models/purchase_request.py +++ b/purchase_request_type/models/purchase_request.py @@ -18,7 +18,7 @@ def _default_request_type(self): string="Request Reference", required=True, default="/", - track_visibility="onchange", + tracking=True, ) request_type = fields.Many2one( comodel_name="purchase.request.type", From 0b319936c6e11f5a98edc9d183d28031d9e103f5 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 19 Aug 2021 05:14:48 +0000 Subject: [PATCH 0015/1277] purchase_request_type 14.0.1.0.1 --- purchase_request_type/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_request_type/__manifest__.py b/purchase_request_type/__manifest__.py index 25eaaca69de..db7f0de023d 100644 --- a/purchase_request_type/__manifest__.py +++ b/purchase_request_type/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Request Type", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "author": "ProThai, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Purchase Management", From b45cff794c72c9cd4f7d28088abbed928a881b2f Mon Sep 17 00:00:00 2001 From: Vandan Pandeji Date: Fri, 24 Mar 2023 11:08:10 +0530 Subject: [PATCH 0016/1277] [MIG]purchase_request_type: Migration to V16 --- purchase_request_type/__manifest__.py | 2 +- .../models/purchase_request.py | 27 +++++++++---------- .../models/purchase_request_type.py | 4 +-- .../tests/test_purchase_request_type.py | 6 +++-- .../views/purchase_request_type_view.xml | 4 +-- .../views/purchase_request_view.xml | 1 + .../odoo/addons/purchase_request_type | 1 + setup/purchase_request_type/setup.py | 6 +++++ 8 files changed, 29 insertions(+), 22 deletions(-) create mode 120000 setup/purchase_request_type/odoo/addons/purchase_request_type create mode 100644 setup/purchase_request_type/setup.py diff --git a/purchase_request_type/__manifest__.py b/purchase_request_type/__manifest__.py index db7f0de023d..6c178b9b8cf 100644 --- a/purchase_request_type/__manifest__.py +++ b/purchase_request_type/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Request Type", - "version": "14.0.1.0.1", + "version": "16.0.1.0.0", "author": "ProThai, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Purchase Management", diff --git a/purchase_request_type/models/purchase_request.py b/purchase_request_type/models/purchase_request.py index b21ed835a29..0b12cf8b334 100644 --- a/purchase_request_type/models/purchase_request.py +++ b/purchase_request_type/models/purchase_request.py @@ -32,10 +32,10 @@ def _default_request_type(self): @api.depends("request_type") def _compute_request_type(self): for obj in self: + reduce_step = False if obj.request_type: - obj.reduce_step = obj.request_type.reduce_step - else: - obj.reduce_step = False + reduce_step = obj.request_type.reduce_step + obj.reduce_step = reduce_step @api.onchange("request_type") def onchange_request_type(self): @@ -43,17 +43,16 @@ def onchange_request_type(self): if request.request_type.picking_type_id: request.picking_type_id = request.request_type.picking_type_id.id - @api.model - def create(self, vals): - if vals.get("name", "/") == "/" and vals.get("request_type"): - purchase_type = self.env["purchase.request.type"].browse( - vals["request_type"] - ) - if purchase_type and purchase_type.sequence_id: - vals["name"] = purchase_type.sequence_id.next_by_id() - else: - vals["name"] = self.env["ir.sequence"].next_by_code("purchase.request") - return super().create(vals) + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get("name", "/") == "/" and vals.get("request_type"): + purchase_type = self.env["purchase.request.type"].browse( + vals["request_type"] + ) + if purchase_type and purchase_type.sequence_id: + vals["name"] = purchase_type.sequence_id.next_by_id() + return super().create(vals_list) @api.constrains("company_id") def _check_pr_type_company(self): diff --git a/purchase_request_type/models/purchase_request_type.py b/purchase_request_type/models/purchase_request_type.py index 48a635b6bdf..63cd2eee47a 100644 --- a/purchase_request_type/models/purchase_request_type.py +++ b/purchase_request_type/models/purchase_request_type.py @@ -24,7 +24,7 @@ def _default_sequence_id(self): name = fields.Char(required=True) active = fields.Boolean(default=True) - description = fields.Text(string="Description", translate=True) + description = fields.Text(translate=True) sequence_id = fields.Many2one( comodel_name="ir.sequence", string="Entry Sequence", @@ -42,4 +42,4 @@ def _default_sequence_id(self): string="Company", default=lambda self: self.env.company, ) - reduce_step = fields.Boolean(string="Reduce Step", default=False) + reduce_step = fields.Boolean(default=False) diff --git a/purchase_request_type/tests/test_purchase_request_type.py b/purchase_request_type/tests/test_purchase_request_type.py index 2eec56bb73d..77abbd1bc02 100644 --- a/purchase_request_type/tests/test_purchase_request_type.py +++ b/purchase_request_type/tests/test_purchase_request_type.py @@ -10,7 +10,7 @@ @tagged("post_install", "-at_install") -class TestPurchaseRequestType(common.SavepointCase): +class TestPurchaseRequestType(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() @@ -25,6 +25,7 @@ def setUpClass(cls): cls.type2 = cls.env.ref("purchase_request_type.pr_type_reduce_step") # Picking Type cls.picking_type = cls.env.ref("stock.picking_type_in") + cls.picking_type2 = cls.env.ref("stock.picking_type_internal") cls.type2.picking_type_id = cls.picking_type cls.company2 = cls.company_obj.create({"name": "company2"}) @@ -34,7 +35,7 @@ def test_purchase_request_type(self): ) self.assertEqual(purchase_request.request_type, self.type1) purchase_request.onchange_request_type() - self.assertEqual(purchase_request.picking_type_id, self.picking_type) + self.assertEqual(purchase_request.picking_type_id, self.picking_type2) def _create_purchase_request(self, line_products): """Create a purchase request. @@ -54,6 +55,7 @@ def _create_purchase_request(self, line_products): purchase_request = self.pr_obj.create( { "request_type": self.type1.id, + "picking_type_id": self.picking_type2.id, "line_ids": lines, } ) diff --git a/purchase_request_type/views/purchase_request_type_view.xml b/purchase_request_type/views/purchase_request_type_view.xml index c35ab1faeee..d86b27eb6a0 100644 --- a/purchase_request_type/views/purchase_request_type_view.xml +++ b/purchase_request_type/views/purchase_request_type_view.xml @@ -3,7 +3,7 @@ purchase.request.type - + @@ -53,8 +53,6 @@ groups="base.group_multi_company" /> - - diff --git a/purchase_request_type/views/purchase_request_view.xml b/purchase_request_type/views/purchase_request_view.xml index f2bd88ee5e5..60ac664e296 100644 --- a/purchase_request_type/views/purchase_request_view.xml +++ b/purchase_request_type/views/purchase_request_view.xml @@ -18,6 +18,7 @@ name="request_type" required="True" attrs="{'readonly': [('is_editable','=', False)]}" + groups="base.group_multi_company" /> diff --git a/setup/purchase_request_type/odoo/addons/purchase_request_type b/setup/purchase_request_type/odoo/addons/purchase_request_type new file mode 120000 index 00000000000..3e82faa2d0a --- /dev/null +++ b/setup/purchase_request_type/odoo/addons/purchase_request_type @@ -0,0 +1 @@ +../../../../purchase_request_type \ No newline at end of file diff --git a/setup/purchase_request_type/setup.py b/setup/purchase_request_type/setup.py new file mode 100644 index 00000000000..28c57bb6403 --- /dev/null +++ b/setup/purchase_request_type/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From da747a86fc58825d8165b5e509aa6fa48319ca71 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 5 May 2020 23:29:58 +0200 Subject: [PATCH 0017/1277] Add module purchase_reception_status --- purchase_reception_status/__init__.py | 1 + purchase_reception_status/__manifest__.py | 19 +++++++ purchase_reception_status/models/__init__.py | 1 + .../models/purchase_order.py | 50 ++++++++++++++++++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 5 ++ purchase_reception_status/readme/USAGE.rst | 1 + .../views/purchase_order.xml | 51 +++++++++++++++++++ 8 files changed, 129 insertions(+) create mode 100644 purchase_reception_status/__init__.py create mode 100644 purchase_reception_status/__manifest__.py create mode 100644 purchase_reception_status/models/__init__.py create mode 100644 purchase_reception_status/models/purchase_order.py create mode 100644 purchase_reception_status/readme/CONTRIBUTORS.rst create mode 100644 purchase_reception_status/readme/DESCRIPTION.rst create mode 100644 purchase_reception_status/readme/USAGE.rst create mode 100644 purchase_reception_status/views/purchase_order.xml diff --git a/purchase_reception_status/__init__.py b/purchase_reception_status/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/purchase_reception_status/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_reception_status/__manifest__.py b/purchase_reception_status/__manifest__.py new file mode 100644 index 00000000000..2c4e329bb7f --- /dev/null +++ b/purchase_reception_status/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2020 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Purchase Reception Status', + 'version': '12.0.1.0.0', + 'category': 'Purchases', + 'license': 'AGPL-3', + 'summary': 'Add reception status on purchase orders', + 'author': 'Akretion,Odoo Community Association (OCA)', + 'maintainers': ['alexis-via'], + 'website': 'https://github.com/OCA/purchase-workflow', + 'depends': ['purchase'], + 'data': [ + 'views/purchase_order.xml', + ], + 'installable': True, +} diff --git a/purchase_reception_status/models/__init__.py b/purchase_reception_status/models/__init__.py new file mode 100644 index 00000000000..9f03530643d --- /dev/null +++ b/purchase_reception_status/models/__init__.py @@ -0,0 +1 @@ +from . import purchase_order diff --git a/purchase_reception_status/models/purchase_order.py b/purchase_reception_status/models/purchase_order.py new file mode 100644 index 00000000000..5e7facc7a2d --- /dev/null +++ b/purchase_reception_status/models/purchase_order.py @@ -0,0 +1,50 @@ +# Copyright 2020 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models +from odoo.tools import float_compare + + +class PurchaseOrder(models.Model): + _inherit = 'purchase.order' + + reception_status = fields.Selection([ + ('no', 'Nothing Received'), + ('partial', 'Partially Received'), + ('received', 'Fully Received'), + ], compute='_compute_reception_status', + string='Reception Status', store=True) + force_received = fields.Boolean( + string='Force Received', + readonly=True, states={'done': [('readonly', False)]}, copy=False, + help="If true, the reception status will be forced to Fully Received, " + "even if some lines are not fully received. " + "To be able to modify this field, you must first lock the order.") + + @api.depends( + 'state', 'force_received', + 'order_line.qty_received', 'order_line.product_qty') + def _compute_reception_status(self): + prec = self.env['decimal.precision'].precision_get( + 'Product Unit of Measure') + for order in self: + status = 'no' + if order.state in ('purchase', 'done'): + if order.force_received: + status = 'received' + elif all([ + float_compare( + line.qty_received, + line.product_qty, + precision_digits=prec) >= 0 + for line in order.order_line]): + status = 'received' + elif any([ + float_compare( + line.qty_received, + 0, + precision_digits=prec) > 0 + for line in order.order_line]): + status = 'partial' + order.reception_status = status diff --git a/purchase_reception_status/readme/CONTRIBUTORS.rst b/purchase_reception_status/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..ff65d68ce6d --- /dev/null +++ b/purchase_reception_status/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Alexis de Lattre diff --git a/purchase_reception_status/readme/DESCRIPTION.rst b/purchase_reception_status/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..285d3626d25 --- /dev/null +++ b/purchase_reception_status/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module adds a field *Receiption Status* on purchase orders. On a confirmed purchase order, it can have 3 different values: + +* Nothing Received +* Partially Received +* Fully Received diff --git a/purchase_reception_status/readme/USAGE.rst b/purchase_reception_status/readme/USAGE.rst new file mode 100644 index 00000000000..8af96fb5f2a --- /dev/null +++ b/purchase_reception_status/readme/USAGE.rst @@ -0,0 +1 @@ +If you are part of the *Purchase Manager* group, you can force a confirmed purchase order to **Full Received** status: you should first *lock* the order, then check the field **Force Received** located in the *Other Information* tab. diff --git a/purchase_reception_status/views/purchase_order.xml b/purchase_reception_status/views/purchase_order.xml new file mode 100644 index 00000000000..e3fb00b27e6 --- /dev/null +++ b/purchase_reception_status/views/purchase_order.xml @@ -0,0 +1,51 @@ + + + + + + + + received_status.purchase.order.form + purchase.order + + + + + + + + + + + received_status.purchase.order.tree + purchase.order + + + + + + + + + + received_status.purchase.order.search + purchase.order + + + + + + + + + + + + + + + From 39a837ac54e339d37019989d2229e5e472f624b0 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 6 May 2020 13:39:05 +0000 Subject: [PATCH 0018/1277] [UPD] Update purchase_reception_status.pot --- .../i18n/purchase_reception_status.pot | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 purchase_reception_status/i18n/purchase_reception_status.pot diff --git a/purchase_reception_status/i18n/purchase_reception_status.pot b/purchase_reception_status/i18n/purchase_reception_status.pot new file mode 100644 index 00000000000..2d2a5675089 --- /dev/null +++ b/purchase_reception_status/i18n/purchase_reception_status.pot @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_reception_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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: purchase_reception_status +#: model:ir.model.fields,field_description:purchase_reception_status.field_purchase_order__force_received +msgid "Force Received" +msgstr "" + +#. module: purchase_reception_status +#: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter +#: selection:purchase.order,reception_status:0 +msgid "Fully Received" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model.fields,help:purchase_reception_status.field_purchase_order__force_received +msgid "If true, the reception status will be forced to Fully Received, even if some lines are not fully received. To be able to modify this field, you must first lock the order." +msgstr "" + +#. module: purchase_reception_status +#: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter +msgid "Not Fully Received" +msgstr "" + +#. module: purchase_reception_status +#: selection:purchase.order,reception_status:0 +msgid "Nothing Received" +msgstr "" + +#. module: purchase_reception_status +#: selection:purchase.order,reception_status:0 +msgid "Partially Received" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model,name:purchase_reception_status.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model.fields,field_description:purchase_reception_status.field_purchase_order__reception_status +#: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter +msgid "Reception Status" +msgstr "" + From efbe267217e8a3b49f19aa7a080c2d1824e45d13 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 6 May 2020 14:23:35 +0000 Subject: [PATCH 0019/1277] [UPD] README.rst --- purchase_reception_status/README.rst | 90 ++++ .../static/description/index.html | 431 ++++++++++++++++++ 2 files changed, 521 insertions(+) create mode 100644 purchase_reception_status/README.rst create mode 100644 purchase_reception_status/static/description/index.html diff --git a/purchase_reception_status/README.rst b/purchase_reception_status/README.rst new file mode 100644 index 00000000000..5603de3ddff --- /dev/null +++ b/purchase_reception_status/README.rst @@ -0,0 +1,90 @@ +========================= +Purchase Reception Status +========================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/12.0/purchase_reception_status + :alt: OCA/purchase-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/purchase-workflow-12-0/purchase-workflow-12-0-purchase_reception_status + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/142/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a field *Receiption Status* on purchase orders. On a confirmed purchase order, it can have 3 different values: + +* Nothing Received +* Partially Received +* Fully Received + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +If you are part of the *Purchase Manager* group, you can force a confirmed purchase order to **Full Received** status: you should first *lock* the order, then check the field **Force Received** located in the *Other Information* tab. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-alexis-via| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-alexis-via| + +This module is part of the `OCA/purchase-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_reception_status/static/description/index.html b/purchase_reception_status/static/description/index.html new file mode 100644 index 00000000000..1bc2a8757a0 --- /dev/null +++ b/purchase_reception_status/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Purchase Reception Status + + + +
+

Purchase Reception Status

+ + +

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

+

This module adds a field Receiption Status on purchase orders. On a confirmed purchase order, it can have 3 different values:

+
    +
  • Nothing Received
  • +
  • Partially Received
  • +
  • Fully Received
  • +
+

Table of contents

+ +
+

Usage

+

If you are part of the Purchase Manager group, you can force a confirmed purchase order to Full Received status: you should first lock the order, then check the field Force Received located in the Other Information tab.

+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

Current maintainer:

+

alexis-via

+

This module is part of the OCA/purchase-workflow project on GitHub.

+

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

+
+
+
+ + From 7a92309d869b3b8c61e510d06a01e4aa05ed7730 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 6 May 2020 14:23:35 +0000 Subject: [PATCH 0020/1277] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 purchase_reception_status/static/description/icon.png diff --git a/purchase_reception_status/static/description/icon.png b/purchase_reception_status/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 257eb96c68bd337b79cb1771b50b9365f3f86231 Mon Sep 17 00:00:00 2001 From: Radovan Skolnik Date: Sat, 23 May 2020 20:40:46 +0200 Subject: [PATCH 0021/1277] [IMP] purchase_reception_status: black, isort, prettier --- purchase_reception_status/__manifest__.py | 24 +++-- .../models/purchase_order.py | 69 ++++++++------ .../views/purchase_order.xml | 93 ++++++++++--------- 3 files changed, 101 insertions(+), 85 deletions(-) diff --git a/purchase_reception_status/__manifest__.py b/purchase_reception_status/__manifest__.py index 2c4e329bb7f..84756977d33 100644 --- a/purchase_reception_status/__manifest__.py +++ b/purchase_reception_status/__manifest__.py @@ -3,17 +3,15 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Purchase Reception Status', - 'version': '12.0.1.0.0', - 'category': 'Purchases', - 'license': 'AGPL-3', - 'summary': 'Add reception status on purchase orders', - 'author': 'Akretion,Odoo Community Association (OCA)', - 'maintainers': ['alexis-via'], - 'website': 'https://github.com/OCA/purchase-workflow', - 'depends': ['purchase'], - 'data': [ - 'views/purchase_order.xml', - ], - 'installable': True, + "name": "Purchase Reception Status", + "version": "12.0.1.0.0", + "category": "Purchases", + "license": "AGPL-3", + "summary": "Add reception status on purchase orders", + "author": "Akretion,Odoo Community Association (OCA)", + "maintainers": ["alexis-via"], + "website": "https://github.com/OCA/purchase-workflow", + "depends": ["purchase"], + "data": ["views/purchase_order.xml",], + "installable": True, } diff --git a/purchase_reception_status/models/purchase_order.py b/purchase_reception_status/models/purchase_order.py index 5e7facc7a2d..5f9da770b55 100644 --- a/purchase_reception_status/models/purchase_order.py +++ b/purchase_reception_status/models/purchase_order.py @@ -7,44 +7,53 @@ class PurchaseOrder(models.Model): - _inherit = 'purchase.order' + _inherit = "purchase.order" - reception_status = fields.Selection([ - ('no', 'Nothing Received'), - ('partial', 'Partially Received'), - ('received', 'Fully Received'), - ], compute='_compute_reception_status', - string='Reception Status', store=True) + reception_status = fields.Selection( + [ + ("no", "Nothing Received"), + ("partial", "Partially Received"), + ("received", "Fully Received"), + ], + compute="_compute_reception_status", + string="Reception Status", + store=True, + ) force_received = fields.Boolean( - string='Force Received', - readonly=True, states={'done': [('readonly', False)]}, copy=False, + string="Force Received", + readonly=True, + states={"done": [("readonly", False)]}, + copy=False, help="If true, the reception status will be forced to Fully Received, " "even if some lines are not fully received. " - "To be able to modify this field, you must first lock the order.") + "To be able to modify this field, you must first lock the order.", + ) @api.depends( - 'state', 'force_received', - 'order_line.qty_received', 'order_line.product_qty') + "state", "force_received", "order_line.qty_received", "order_line.product_qty" + ) def _compute_reception_status(self): - prec = self.env['decimal.precision'].precision_get( - 'Product Unit of Measure') + prec = self.env["decimal.precision"].precision_get("Product Unit of Measure") for order in self: - status = 'no' - if order.state in ('purchase', 'done'): + status = "no" + if order.state in ("purchase", "done"): if order.force_received: - status = 'received' - elif all([ + status = "received" + elif all( + [ float_compare( - line.qty_received, - line.product_qty, - precision_digits=prec) >= 0 - for line in order.order_line]): - status = 'received' - elif any([ - float_compare( - line.qty_received, - 0, - precision_digits=prec) > 0 - for line in order.order_line]): - status = 'partial' + line.qty_received, line.product_qty, precision_digits=prec + ) + >= 0 + for line in order.order_line + ] + ): + status = "received" + elif any( + [ + float_compare(line.qty_received, 0, precision_digits=prec) > 0 + for line in order.order_line + ] + ): + status = "partial" order.reception_status = status diff --git a/purchase_reception_status/views/purchase_order.xml b/purchase_reception_status/views/purchase_order.xml index e3fb00b27e6..d68659952c7 100644 --- a/purchase_reception_status/views/purchase_order.xml +++ b/purchase_reception_status/views/purchase_order.xml @@ -1,51 +1,60 @@ - + - - - - - received_status.purchase.order.form - purchase.order - - - - - + + received_status.purchase.order.form + purchase.order + + + + + + - - - - - received_status.purchase.order.tree - purchase.order - - - - + + + received_status.purchase.order.tree + purchase.order + + + + + - - - - - received_status.purchase.order.search - purchase.order - - - - - - - - - - - - - - + + + received_status.purchase.order.search + purchase.order + + + + + + + + + + + + From 552536fdd3a3cec1bc81a39dfe0f45b386e87536 Mon Sep 17 00:00:00 2001 From: Radovan Skolnik Date: Sun, 24 May 2020 00:32:28 +0200 Subject: [PATCH 0022/1277] [MIG] purchase_receptions_status: Migration to 13.0 --- purchase_reception_status/README.rst | 8 ++++---- purchase_reception_status/__manifest__.py | 4 ++-- .../i18n/purchase_reception_status.pot | 2 +- .../static/description/index.html | 6 +++--- purchase_reception_status/views/purchase_order.xml | 12 +++++++++++- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/purchase_reception_status/README.rst b/purchase_reception_status/README.rst index 5603de3ddff..2a27866368a 100644 --- a/purchase_reception_status/README.rst +++ b/purchase_reception_status/README.rst @@ -14,13 +14,13 @@ Purchase Reception Status :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/12.0/purchase_reception_status + :target: https://github.com/OCA/purchase-workflow/tree/13.0/purchase_reception_status :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/purchase-workflow-12-0/purchase-workflow-12-0-purchase_reception_status :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/12.0 + :target: https://runbot.odoo-community.org/runbot/142/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -47,7 +47,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -85,6 +85,6 @@ Current `maintainer `__: |maintainer-alexis-via| -This module is part of the `OCA/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_reception_status/__manifest__.py b/purchase_reception_status/__manifest__.py index 84756977d33..62524282dd3 100644 --- a/purchase_reception_status/__manifest__.py +++ b/purchase_reception_status/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Reception Status", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "category": "Purchases", "license": "AGPL-3", "summary": "Add reception status on purchase orders", @@ -12,6 +12,6 @@ "maintainers": ["alexis-via"], "website": "https://github.com/OCA/purchase-workflow", "depends": ["purchase"], - "data": ["views/purchase_order.xml",], + "data": ["views/purchase_order.xml"], "installable": True, } diff --git a/purchase_reception_status/i18n/purchase_reception_status.pot b/purchase_reception_status/i18n/purchase_reception_status.pot index 2d2a5675089..1eff77f55e9 100644 --- a/purchase_reception_status/i18n/purchase_reception_status.pot +++ b/purchase_reception_status/i18n/purchase_reception_status.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/purchase_reception_status/static/description/index.html b/purchase_reception_status/static/description/index.html index 1bc2a8757a0..7d5ebec62b8 100644 --- a/purchase_reception_status/static/description/index.html +++ b/purchase_reception_status/static/description/index.html @@ -367,7 +367,7 @@

Purchase Reception Status

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module adds a field Receiption Status on purchase orders. On a confirmed purchase order, it can have 3 different values:

  • Nothing Received
  • @@ -396,7 +396,7 @@

    Bug Tracker

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

    +feedback.

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

@@ -422,7 +422,7 @@

Maintainers

promote its widespread use.

Current maintainer:

alexis-via

-

This module is part of the OCA/purchase-workflow project on GitHub.

+

This module is part of the OCA/purchase-workflow project on GitHub.

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

diff --git a/purchase_reception_status/views/purchase_order.xml b/purchase_reception_status/views/purchase_order.xml index d68659952c7..b855040dbc2 100644 --- a/purchase_reception_status/views/purchase_order.xml +++ b/purchase_reception_status/views/purchase_order.xml @@ -30,10 +30,20 @@ + + received_status.purchase.order.tree + purchase.order + + + + + + + received_status.purchase.order.search purchase.order - + Date: Sat, 7 Nov 2020 15:08:05 +0000 Subject: [PATCH 0023/1277] Added translation using Weblate (Italian) --- purchase_reception_status/i18n/it.po | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 purchase_reception_status/i18n/it.po diff --git a/purchase_reception_status/i18n/it.po b/purchase_reception_status/i18n/it.po new file mode 100644 index 00000000000..f164be79955 --- /dev/null +++ b/purchase_reception_status/i18n/it.po @@ -0,0 +1,60 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_reception_status +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\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" + +#. module: purchase_reception_status +#: model:ir.model.fields,field_description:purchase_reception_status.field_purchase_order__force_received +msgid "Force Received" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model.fields.selection,name:purchase_reception_status.selection__purchase_order__reception_status__received +#: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter +msgid "Fully Received" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model.fields,help:purchase_reception_status.field_purchase_order__force_received +msgid "" +"If true, the reception status will be forced to Fully Received, even if some" +" lines are not fully received. To be able to modify this field, you must " +"first lock the order." +msgstr "" + +#. module: purchase_reception_status +#: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter +msgid "Not Fully Received" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model.fields.selection,name:purchase_reception_status.selection__purchase_order__reception_status__no +msgid "Nothing Received" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model.fields.selection,name:purchase_reception_status.selection__purchase_order__reception_status__partial +msgid "Partially Received" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model,name:purchase_reception_status.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_reception_status +#: model:ir.model.fields,field_description:purchase_reception_status.field_purchase_order__reception_status +#: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter +msgid "Reception Status" +msgstr "" From 9cf3745e7ba33e2cbc73b11d8dde19fdd0c764a3 Mon Sep 17 00:00:00 2001 From: Alessandro Fiorino Date: Sat, 7 Nov 2020 15:08:22 +0000 Subject: [PATCH 0024/1277] Translated using Weblate (Italian) Currently translated at 100.0% (8 of 8 strings) Translation: purchase-workflow-13.0/purchase-workflow-13.0-purchase_reception_status Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-13-0/purchase-workflow-13-0-purchase_reception_status/it/ --- purchase_reception_status/i18n/it.po | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/purchase_reception_status/i18n/it.po b/purchase_reception_status/i18n/it.po index f164be79955..5a5d82e949b 100644 --- a/purchase_reception_status/i18n/it.po +++ b/purchase_reception_status/i18n/it.po @@ -6,24 +6,26 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-11-07 18:08+0000\n" +"Last-Translator: Alessandro Fiorino \n" "Language-Team: none\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 3.10\n" #. module: purchase_reception_status #: model:ir.model.fields,field_description:purchase_reception_status.field_purchase_order__force_received msgid "Force Received" -msgstr "" +msgstr "Forza Ricevuto" #. module: purchase_reception_status #: model:ir.model.fields.selection,name:purchase_reception_status.selection__purchase_order__reception_status__received #: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter msgid "Fully Received" -msgstr "" +msgstr "Ricevuto Completamente" #. module: purchase_reception_status #: model:ir.model.fields,help:purchase_reception_status.field_purchase_order__force_received @@ -32,29 +34,32 @@ msgid "" " lines are not fully received. To be able to modify this field, you must " "first lock the order." msgstr "" +"Se vero, lo stato di ricezione sarà forzato a Completamente Ricevuto, anche " +"se alcune righe non sono state completamente ricevute. Per essere in grado " +"di modificare questo campo, devi prima aver bloccato l'ordine." #. module: purchase_reception_status #: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter msgid "Not Fully Received" -msgstr "" +msgstr "Ricevuto Parzialmente" #. module: purchase_reception_status #: model:ir.model.fields.selection,name:purchase_reception_status.selection__purchase_order__reception_status__no msgid "Nothing Received" -msgstr "" +msgstr "Nulla Ricevuto" #. module: purchase_reception_status #: model:ir.model.fields.selection,name:purchase_reception_status.selection__purchase_order__reception_status__partial msgid "Partially Received" -msgstr "" +msgstr "Ricevuto Parzialmente" #. module: purchase_reception_status #: model:ir.model,name:purchase_reception_status.model_purchase_order msgid "Purchase Order" -msgstr "" +msgstr "Ordine d'Acquisto" #. module: purchase_reception_status #: model:ir.model.fields,field_description:purchase_reception_status.field_purchase_order__reception_status #: model_terms:ir.ui.view,arch_db:purchase_reception_status.view_purchase_order_filter msgid "Reception Status" -msgstr "" +msgstr "Stato Ricezione" From 8b390b372174d8bfb44dbd59b4f6e3b2651c3ed2 Mon Sep 17 00:00:00 2001 From: koen Date: Tue, 5 Jan 2021 17:09:53 +0100 Subject: [PATCH 0025/1277] [14.0-mig-purchase] [MIG] purchase_reception_status: Migration to 14.0 --- purchase_reception_status/README.rst | 6 +++--- purchase_reception_status/__manifest__.py | 2 +- purchase_reception_status/static/description/index.html | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/purchase_reception_status/README.rst b/purchase_reception_status/README.rst index 2a27866368a..977a3946350 100644 --- a/purchase_reception_status/README.rst +++ b/purchase_reception_status/README.rst @@ -23,7 +23,7 @@ Purchase Reception Status :target: https://runbot.odoo-community.org/runbot/142/13.0 :alt: Try me on Runbot -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds a field *Receiption Status* on purchase orders. On a confirmed purchase order, it can have 3 different values: @@ -83,8 +83,8 @@ promote its widespread use. Current `maintainer `__: -|maintainer-alexis-via| +|maintainer-alexis-via| -This module is part of the `OCA/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_reception_status/__manifest__.py b/purchase_reception_status/__manifest__.py index 62524282dd3..a69b328fe32 100644 --- a/purchase_reception_status/__manifest__.py +++ b/purchase_reception_status/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Reception Status", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "category": "Purchases", "license": "AGPL-3", "summary": "Add reception status on purchase orders", diff --git a/purchase_reception_status/static/description/index.html b/purchase_reception_status/static/description/index.html index 7d5ebec62b8..967deb300f3 100644 --- a/purchase_reception_status/static/description/index.html +++ b/purchase_reception_status/static/description/index.html @@ -367,7 +367,7 @@

Purchase Reception Status

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module adds a field Receiption Status on purchase orders. On a confirmed purchase order, it can have 3 different values:

+
  • Eduardo de Miguel (Moduon)
  • diff --git a/purchase_allowed_product/views/account_move_views.xml b/purchase_allowed_product/views/account_move_views.xml index ad1eaaca191..764f4af387f 100644 --- a/purchase_allowed_product/views/account_move_views.xml +++ b/purchase_allowed_product/views/account_move_views.xml @@ -4,18 +4,13 @@ account.move - + - + purchase.order - + - + - + From b96f4040ab4d711700cf123d57f79d22ed042d82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Gil=20Sorribes?= Date: Fri, 30 Nov 2018 13:45:15 +0100 Subject: [PATCH 0721/1277] [11.0][ADD] Add the module purchase_blanket_order --- purchase_blanket_order/README.rst | 83 ++++ purchase_blanket_order/__init__.py | 4 + purchase_blanket_order/__manifest__.py | 28 ++ purchase_blanket_order/data/ir_cron.xml | 19 + purchase_blanket_order/data/sequence.xml | 13 + purchase_blanket_order/models/__init__.py | 5 + .../models/blanket_orders.py | 362 ++++++++++++++++ .../models/purchase_config_settings.py | 13 + .../models/purchase_order.py | 19 + .../readme/CONTRIBUTORS.rst | 1 + purchase_blanket_order/readme/DESCRIPTION.rst | 4 + purchase_blanket_order/readme/USAGE.rst | 2 + purchase_blanket_order/report/report.xml | 11 + purchase_blanket_order/report/templates.xml | 70 +++ .../security/ir.model.access.csv | 7 + purchase_blanket_order/security/security.xml | 23 + .../static/description/index.html | 406 ++++++++++++++++++ purchase_blanket_order/tests/__init__.py | 3 + .../tests/test_purchase_blanket_order.py | 86 ++++ .../views/blanket_orders.xml | 152 +++++++ .../views/purchase_config_settings.xml | 29 ++ .../views/purchase_orders.xml | 68 +++ purchase_blanket_order/wizard/__init__.py | 3 + .../wizard/create_purchase_orders.py | 103 +++++ .../wizard/create_purchase_orders.xml | 34 ++ 25 files changed, 1548 insertions(+) create mode 100644 purchase_blanket_order/README.rst create mode 100644 purchase_blanket_order/__init__.py create mode 100644 purchase_blanket_order/__manifest__.py create mode 100644 purchase_blanket_order/data/ir_cron.xml create mode 100644 purchase_blanket_order/data/sequence.xml create mode 100644 purchase_blanket_order/models/__init__.py create mode 100644 purchase_blanket_order/models/blanket_orders.py create mode 100644 purchase_blanket_order/models/purchase_config_settings.py create mode 100644 purchase_blanket_order/models/purchase_order.py create mode 100644 purchase_blanket_order/readme/CONTRIBUTORS.rst create mode 100644 purchase_blanket_order/readme/DESCRIPTION.rst create mode 100644 purchase_blanket_order/readme/USAGE.rst create mode 100644 purchase_blanket_order/report/report.xml create mode 100644 purchase_blanket_order/report/templates.xml create mode 100644 purchase_blanket_order/security/ir.model.access.csv create mode 100644 purchase_blanket_order/security/security.xml create mode 100644 purchase_blanket_order/static/description/index.html create mode 100644 purchase_blanket_order/tests/__init__.py create mode 100644 purchase_blanket_order/tests/test_purchase_blanket_order.py create mode 100644 purchase_blanket_order/views/blanket_orders.xml create mode 100644 purchase_blanket_order/views/purchase_config_settings.xml create mode 100644 purchase_blanket_order/views/purchase_orders.xml create mode 100644 purchase_blanket_order/wizard/__init__.py create mode 100644 purchase_blanket_order/wizard/create_purchase_orders.py create mode 100644 purchase_blanket_order/wizard/create_purchase_orders.xml diff --git a/purchase_blanket_order/README.rst b/purchase_blanket_order/README.rst new file mode 100644 index 00000000000..a3f176e5475 --- /dev/null +++ b/purchase_blanket_order/README.rst @@ -0,0 +1,83 @@ +======================= +Purchase Blanket Orders +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/11.0/purchase_blanket_order + :alt: OCA/purchase-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/purchase-workflow-11-0/purchase-workflow-11-0-purchase_blanket_order + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/142/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +A purchase blanket order is a pre-agreement to purchase a certain number of +quantities of products at a specific price. From a confirmed blanket order, +the users can create new purchase orders at such price, until the blanket +order expires due to either reaching the validity date or receiving all the +original agreed product quantities. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +A new menu in the Purchase area is created, allowing users to create new blanket +orders. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Eficent S.L. + +Contributors +~~~~~~~~~~~~ + +* Adrià Gil Sorribes + +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/purchase-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_blanket_order/__init__.py b/purchase_blanket_order/__init__.py new file mode 100644 index 00000000000..93aa2c1f84b --- /dev/null +++ b/purchase_blanket_order/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models +from . import wizard diff --git a/purchase_blanket_order/__manifest__.py b/purchase_blanket_order/__manifest__.py new file mode 100644 index 00000000000..f994ab7fae7 --- /dev/null +++ b/purchase_blanket_order/__manifest__.py @@ -0,0 +1,28 @@ +# Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + 'name': 'Purchase Blanket Orders', + 'category': 'Purchase', + 'license': 'AGPL-3', + 'author': 'Eficent S.L.,Odoo Community Association (OCA)', + 'version': '11.0.1.0.0', + 'website': 'https://github.com/OCA/purchase-workflow', + 'summary': "Purchase Blanket Orders", + 'depends': [ + 'purchase', + 'web_action_conditionable', + ], + 'data': [ + 'security/ir.model.access.csv', + 'security/security.xml', + 'data/sequence.xml', + 'data/ir_cron.xml', + 'wizard/create_purchase_orders.xml', + 'views/purchase_config_settings.xml', + 'views/blanket_orders.xml', + 'views/purchase_orders.xml', + 'report/templates.xml', + 'report/report.xml', + ], + 'installable': True, +} diff --git a/purchase_blanket_order/data/ir_cron.xml b/purchase_blanket_order/data/ir_cron.xml new file mode 100644 index 00000000000..c417df7b3bc --- /dev/null +++ b/purchase_blanket_order/data/ir_cron.xml @@ -0,0 +1,19 @@ + + + + + + + Expire Blanket Orders + 1 + days + + -1 + + + code + model.expire_orders() + + + diff --git a/purchase_blanket_order/data/sequence.xml b/purchase_blanket_order/data/sequence.xml new file mode 100644 index 00000000000..e0ac8396376 --- /dev/null +++ b/purchase_blanket_order/data/sequence.xml @@ -0,0 +1,13 @@ + + + + + + Purchase Blanket Order + purchase.blanket.order + PBO + 3 + + + + diff --git a/purchase_blanket_order/models/__init__.py b/purchase_blanket_order/models/__init__.py new file mode 100644 index 00000000000..a1217ef766a --- /dev/null +++ b/purchase_blanket_order/models/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import blanket_orders +from . import purchase_order +from . import purchase_config_settings diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py new file mode 100644 index 00000000000..1f83a83ff42 --- /dev/null +++ b/purchase_blanket_order/models/blanket_orders.py @@ -0,0 +1,362 @@ +# Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models, api, _ +from odoo.exceptions import UserError +from odoo.tools import float_is_zero + +import odoo.addons.decimal_precision as dp + + +class BlanketOrder(models.Model): + _name = 'purchase.blanket.order' + _inherit = ['mail.thread'] + _description = 'Blanket Order' + + @api.model + def _default_currency(self): + return self.env.user.company_id.currency_id + + @api.model + def _default_company(self): + return self.env.user.company_id + + name = fields.Char( + default='Draft', + readonly=True + ) + partner_id = fields.Many2one( + 'res.partner', string='Vendor', readonly=True, + states={'draft': [('readonly', False)]}) + lines_ids = fields.One2many( + 'purchase.blanket.order.line', 'order_id', string='Order lines', + copy=True) + currency_id = fields.Many2one( + 'res.currency', related='company_id.currency_id', readonly=True) + payment_term_id = fields.Many2one( + 'account.payment.term', string='Payment Terms', readonly=True, + states={'draft': [('readonly', False)]}) + confirmed = fields.Boolean() + state = fields.Selection(selection=[ + ('draft', 'Draft'), + ('open', 'Open'), + ('expired', 'Expired'), + ], compute='_compute_state', store=True, copy=False) + validity_date = fields.Date( + readonly=True, + states={'draft': [('readonly', False)]}) + date_order = fields.Datetime( + readonly=True, + required=True, + string='Ordering Date', + default=fields.Datetime.now, + states={'draft': [('readonly', False)]}) + date_deliver = fields.Datetime( + readonly=True, + string='Delivery Date', + states={'draft': [('readonly', False)]}) + note = fields.Text( + readonly=True, + states={'draft': [('readonly', False)]}) + user_id = fields.Many2one( + 'res.users', string='Responsible', readonly=True, + states={'draft': [('readonly', False)]}) + company_id = fields.Many2one( + 'res.company', string='Company', default=_default_company, + readonly=True, + states={'draft': [('readonly', False)]}) + purchase_count = fields.Integer(compute='_compute_purchase_count') + + # Fields use to filter in tree view + original_qty = fields.Float( + string='Original quantity', compute='_compute_original_qty', + search='_search_original_qty', default=0.0) + ordered_qty = fields.Float( + string='Ordered quantity', compute='_compute_ordered_qty', + search='_search_ordered_qty', default=0.0) + invoiced_qty = fields.Float( + string='Invoiced quantity', compute='_compute_invoiced_qty', + search='_search_invoiced_qty', default=0.0) + remaining_qty = fields.Float( + string='Remaining quantity', compute='_compute_remaining_qty', + search='_search_remaining_qty', default=0.0) + received_qty = fields.Float( + string='Delivered quantity', compute='_compute_received_qty', + search='_search_received_qty', default=0.0) + + @api.multi + def _get_purchase_orders(self): + return self.mapped('lines_ids.purchase_order_lines_ids.order_id') + + @api.multi + def _compute_purchase_count(self): + for blanket_order in self: + blanket_order.purchase_count = \ + len(blanket_order._get_purchase_orders()) + + @api.multi + @api.depends( + 'lines_ids.remaining_qty', + 'validity_date', + 'confirmed', + ) + def _compute_state(self): + today = fields.Date.today() + precision = self.env['decimal.precision'].precision_get( + 'Product Unit of Measure') + for order in self: + if not order.confirmed: + order.state = 'draft' + elif order.validity_date <= today: + order.state = 'expired' + elif float_is_zero(sum(order.lines_ids.mapped('remaining_qty')), + precision_digits=precision): + order.state = 'expired' + else: + order.state = 'open' + + def _compute_original_qty(self): + for bo in self: + bo.original_qty = sum(bo.mapped('order_id.original_qty')) + + def _compute_ordered_qty(self): + for bo in self: + bo.ordered_qty = sum(bo.mapped('order_id.ordered_qty')) + + def _compute_invoiced_qty(self): + for bo in self: + bo.invoiced_qty = sum(bo.mapped('order_id.invoiced_qty')) + + def _compute_received_qty(self): + for bo in self: + bo.received_qty = sum(bo.mapped('order_id.received_qty')) + + def _compute_remaining_qty(self): + for bo in self: + bo.remaining_qty = sum(bo.mapped('order_id.remaining_qty')) + + @api.multi + @api.onchange('partner_id') + def onchange_partner_id(self): + """ + Update the following fields when the partner is changed: + - Payment term + """ + if not self.partner_id: + self.payment_term_id = False + return + + self.payment_term_id = \ + (self.partner_id.property_supplier_payment_term_id and + self.partner_id.property_supplier_payment_term_id.id or + False) + + if self.partner_id.user_id: + self.user_id = self.partner_id.user_id.id + + @api.multi + def copy_data(self, default=None): + if default is None: + default = {} + default.update(self.default_get(['name', 'confirmed'])) + return super(BlanketOrder, self).copy_data(default) + + @api.multi + def _validate(self): + try: + today = fields.Date.today() + for order in self: + assert order.validity_date, _("Validity date is mandatory") + assert order.validity_date > today, \ + _("Validity date must be in the future") + assert order.partner_id, _("Partner is mandatory") + assert len(order.lines_ids) > 0, _("Must have some lines") + order.lines_ids._validate() + except AssertionError as e: + raise UserError(e) + + @api.multi + def action_confirm(self): + self._validate() + for order in self: + sequence_obj = self.env['ir.sequence'] + if order.company_id: + sequence_obj = sequence_obj.with_context( + force_company=order.company_id.id) + name = sequence_obj.next_by_code('purchase.blanket.order') + order.write({'confirmed': True, 'name': name}) + return True + + @api.multi + def action_view_purchase_orders(self): + purchase_orders = self._get_purchase_orders() + action = self.env.ref('purchase.purchase_rfq').read()[0] + if len(purchase_orders) > 0: + action['domain'] = [('id', 'in', purchase_orders.ids)] + action['context'] = [('id', 'in', purchase_orders.ids)] + else: + action = {'type': 'ir.actions.act_window_close'} + return action + + @api.model + def expire_orders(self): + today = fields.Date.today() + expired_orders = self.search([ + ('state', '=', 'open'), + ('validity_date', '<=', today), + ]) + expired_orders.modified(['validity_date']) + expired_orders.recompute() + + @api.model + def _search_original_qty(self, operator, value): + bo_line_obj = self.env['purchase.blanket.order.line'] + res = [] + bo_lines = bo_line_obj.search( + [('original_qty', operator, value)]) + order_ids = bo_lines.mapped('order_id') + res.append(('id', 'in', order_ids.ids)) + return res + + @api.model + def _search_ordered_qty(self, operator, value): + bo_line_obj = self.env['purchase.blanket.order.line'] + res = [] + bo_lines = bo_line_obj.search( + [('ordered_qty', operator, value)]) + order_ids = bo_lines.mapped('order_id') + res.append(('id', 'in', order_ids.ids)) + return res + + @api.model + def _search_invoiced_qty(self, operator, value): + bo_line_obj = self.env['purchase.blanket.order.line'] + res = [] + bo_lines = bo_line_obj.search( + [('invoiced_qty', operator, value)]) + order_ids = bo_lines.mapped('order_id') + res.append(('id', 'in', order_ids.ids)) + return res + + @api.model + def _search_received_qty(self, operator, value): + bo_line_obj = self.env['purchase.blanket.order.line'] + res = [] + bo_lines = bo_line_obj.search( + [('received_qty', operator, value)]) + order_ids = bo_lines.mapped('order_id') + res.append(('id', 'in', order_ids.ids)) + return res + + @api.model + def _search_remaining_qty(self, operator, value): + bo_line_obj = self.env['purchase.blanket.order.line'] + res = [] + bo_lines = bo_line_obj.search( + [('remaining_qty', operator, value)]) + order_ids = bo_lines.mapped('order_id') + res.append(('id', 'in', order_ids.ids)) + return res + + +class BlanketOrderLine(models.Model): + _name = 'purchase.blanket.order.line' + _description = 'Blanket Order Line' + + sequence = fields.Integer() + order_id = fields.Many2one( + 'purchase.blanket.order', required=True, ondelete='cascade') + product_id = fields.Many2one( + 'product.product', string='Product', required=True) + product_uom = fields.Many2one( + 'product.uom', string='Unit of Measure', required=True) + price_unit = fields.Float(string='Price', required=True) + original_qty = fields.Float( + string='Original quantity', required=True, default=1, + digits=dp.get_precision('Product Unit of Measure')) + ordered_qty = fields.Float( + string='Ordered quantity', compute='_compute_quantities', + store=True) + invoiced_qty = fields.Float( + string='Invoiced quantity', compute='_compute_quantities', + store=True) + remaining_qty = fields.Float( + string='Remaining quantity', compute='_compute_quantities', + store=True) + received_qty = fields.Float( + string='Received quantity', compute='_compute_quantities', + store=True) + purchase_order_lines_ids = fields.One2many( + 'purchase.order.line', 'blanket_line_id', string='Sale order lines') + company_id = fields.Many2one( + 'res.company', related='order_id.company_id', store=True, + readonly=True) + + @api.multi + def _get_display_price(self, product): + + seller = product._select_seller( + partner_id=self.order_id.partner_id, + quantity=self.original_qty, + date=self.order_id.date_order and self.order_id.date_order[:10], + uom_id=self.product_uom) + + if not seller: + return + + price_unit = self.env['account.tax']._fix_tax_included_price_company( + seller.price, product.supplier_taxes_id, + self.purchase_order_lines_ids.taxes_id, + self.company_id) if seller else 0.0 + if price_unit and seller and self.order_id.currency_id and \ + seller.currency_id != self.order_id.currency_id: + price_unit = seller.currency_id.compute(price_unit, + self.order_id.currency_id) + + if seller and self.product_uom and seller.product_uom != \ + self.product_uom: + price_unit = seller.product_uom._compute_price(price_unit, + self.product_uom) + + return price_unit + + @api.multi + @api.onchange('product_id', 'original_qty') + def onchange_product(self): + precision = self.env['decimal.precision'].precision_get( + 'Product Unit of Measure') + if self.product_id: + self.product_uom = self.product_id.uom_id.id + if self.order_id.partner_id and \ + float_is_zero(self.price_unit, precision_digits=precision): + self.price_unit = self._get_display_price(self.product_id) + + @api.multi + @api.depends( + 'purchase_order_lines_ids.order_id.state', + 'purchase_order_lines_ids.blanket_line_id', + 'purchase_order_lines_ids.product_qty', + 'purchase_order_lines_ids.qty_received', + 'purchase_order_lines_ids.qty_invoiced', + 'original_qty', + ) + def _compute_quantities(self): + for line in self: + purchase_lines = line.purchase_order_lines_ids + line.ordered_qty = sum(l.product_qty for l in purchase_lines if + l.order_id.state != 'cancel') + line.invoiced_qty = sum(l.qty_invoiced for l in purchase_lines if + l.order_id.state != 'cancel') + line.received_qty = sum(l.qty_received for l in purchase_lines if + l.order_id.state != 'cancel') + line.remaining_qty = line.original_qty - line.ordered_qty + + @api.multi + def _validate(self): + try: + for line in self: + assert line.price_unit > 0.0, \ + _("Price must be greater than zero") + assert line.original_qty > 0.0, \ + _("Quantity must be greater than zero") + except AssertionError as e: + raise UserError(e) diff --git a/purchase_blanket_order/models/purchase_config_settings.py b/purchase_blanket_order/models/purchase_config_settings.py new file mode 100644 index 00000000000..c06a2754dfd --- /dev/null +++ b/purchase_blanket_order/models/purchase_config_settings.py @@ -0,0 +1,13 @@ +# Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class PurchaseConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + group_purchase_blanket_disable_adding_lines = fields.Boolean( + string='Disable adding more lines to SOs', + implied_group='purchase_blanket_order.' + 'purchase_blanket_orders_disable_adding_lines') diff --git a/purchase_blanket_order/models/purchase_order.py b/purchase_blanket_order/models/purchase_order.py new file mode 100644 index 00000000000..23502a3fe56 --- /dev/null +++ b/purchase_blanket_order/models/purchase_order.py @@ -0,0 +1,19 @@ +# Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class PurchaseOrder(models.Model): + _inherit = 'purchase.order' + + blanket_order_id = fields.Many2one( + 'purchase.blanket.order', string='Origin blanket order', + related='order_line.blanket_line_id.order_id', + readonly=True) + + +class PurchaseOrderLine(models.Model): + _inherit = 'purchase.order.line' + + blanket_line_id = fields.Many2one('purchase.blanket.order.line', + string='Origin blanket order line') diff --git a/purchase_blanket_order/readme/CONTRIBUTORS.rst b/purchase_blanket_order/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..2586049ad73 --- /dev/null +++ b/purchase_blanket_order/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Adrià Gil Sorribes diff --git a/purchase_blanket_order/readme/DESCRIPTION.rst b/purchase_blanket_order/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..e4d52f2b90d --- /dev/null +++ b/purchase_blanket_order/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +A purchase blanket order is a pre-agreement to purchase a certain number of +quantities of products at a specific price. From a confirmed blanket order, +the users can create new purchase orders at such price, until the blanket +order expires due to reaching the validity date. diff --git a/purchase_blanket_order/readme/USAGE.rst b/purchase_blanket_order/readme/USAGE.rst new file mode 100644 index 00000000000..ec3ef5995f4 --- /dev/null +++ b/purchase_blanket_order/readme/USAGE.rst @@ -0,0 +1,2 @@ +A new menu in the Purchase area is created, allowing users to create new blanket +orders. diff --git a/purchase_blanket_order/report/report.xml b/purchase_blanket_order/report/report.xml new file mode 100644 index 00000000000..22e36867bc0 --- /dev/null +++ b/purchase_blanket_order/report/report.xml @@ -0,0 +1,11 @@ + + + + diff --git a/purchase_blanket_order/report/templates.xml b/purchase_blanket_order/report/templates.xml new file mode 100644 index 00000000000..6461933ba2b --- /dev/null +++ b/purchase_blanket_order/report/templates.xml @@ -0,0 +1,70 @@ + + + + + + + diff --git a/purchase_blanket_order/security/ir.model.access.csv b/purchase_blanket_order/security/ir.model.access.csv new file mode 100644 index 00000000000..f6f164e1cc1 --- /dev/null +++ b/purchase_blanket_order/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_purchase_blanket_order,purchase.order,model_purchase_blanket_order,purchase.group_purchase_manager,1,1,1,0 +access_purchase_blanket_order_line,purchase.order.line,model_purchase_blanket_order_line,purchase.group_purchase_manager,1,1,1,1 +access_purchase_blanket_order_manager,purchase.order.manager,model_purchase_blanket_order,purchase.group_purchase_manager,1,1,1,1 +access_purchase_blanket_order_line_manager,purchase.order.line.manager,model_purchase_blanket_order_line,purchase.group_purchase_manager,1,1,1,1 +access_purchase_blanket_order_accountant,purchase.order.accountant,model_purchase_blanket_order,account.group_account_user,1,1,0,0 +access_purchase_blanket_order_line_accountant,purchase.order.line accountant,model_purchase_blanket_order_line,account.group_account_user,1,1,0,0 diff --git a/purchase_blanket_order/security/security.xml b/purchase_blanket_order/security/security.xml new file mode 100644 index 00000000000..e5d7e39d41c --- /dev/null +++ b/purchase_blanket_order/security/security.xml @@ -0,0 +1,23 @@ + + + + Disable adding more lines to SOs from Purchase Blanket Orders + + + + + + Blanket Order multi-company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + + Blanket Order Line multi-company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + diff --git a/purchase_blanket_order/static/description/index.html b/purchase_blanket_order/static/description/index.html new file mode 100644 index 00000000000..0dbd8d39e0a --- /dev/null +++ b/purchase_blanket_order/static/description/index.html @@ -0,0 +1,406 @@ + + + + + + +Purchase Blanket Orders + + + +
    +

    Purchase Blanket Orders

    + + +

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

    +

    A purchase blanket order is a pre-agreement to purchase a certain number of +quantities of products at a specific price. From a confirmed blanket order, +the users can create new purchase orders at such price, until the blanket +order expires due to reaching the validity date.

    +

    Table of contents

    + +
    +

    Usage

    +

    A new menu in the Purchase area is created, allowing users to create new blanket +orders.

    +
    +
    +

    Bug Tracker

    +

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

    +

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

    +
    +
    +

    Credits

    +
    +

    Authors

    +
      +
    • Eficent S.L.
    • +
    +
    +
    +

    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/purchase-workflow project on GitHub.

    +

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

    +
    +
    +
    + + diff --git a/purchase_blanket_order/tests/__init__.py b/purchase_blanket_order/tests/__init__.py new file mode 100644 index 00000000000..a6d059eae7f --- /dev/null +++ b/purchase_blanket_order/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_purchase_blanket_order diff --git a/purchase_blanket_order/tests/test_purchase_blanket_order.py b/purchase_blanket_order/tests/test_purchase_blanket_order.py new file mode 100644 index 00000000000..a77e2081b17 --- /dev/null +++ b/purchase_blanket_order/tests/test_purchase_blanket_order.py @@ -0,0 +1,86 @@ +# Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from datetime import date, timedelta + +from odoo.tests import common +from odoo import fields +from odoo.exceptions import UserError + + +class TestPurchaseBlanketOrders(common.TransactionCase): + + def setUp(self): + super(TestPurchaseBlanketOrders, self).setUp() + self.blanket_order_obj = self.env['purchase.blanket.order'] + self.blanket_order_wiz_obj = self.env['purchase.blanket.order.wizard'] + + self.partner = self.env['res.partner'].create({ + 'name': 'TEST SUPPLIER', + 'supplier': True, + }) + self.payment_term = self.env.ref('account.account_payment_term_net') + + # Seller IDS + seller = self.env['product.supplierinfo'].create({ + 'name': self.partner.id, + 'price': 30.0, + }) + + self.product = self.env['product.product'].create({ + 'name': 'Demo', + 'categ_id': self.env.ref('product.product_category_1').id, + 'standard_price': 35.0, + 'seller_ids': [(6, 0, [seller.id])], + 'type': 'consu', + 'uom_id': self.env.ref('product.product_uom_unit').id, + 'default_code': 'PROD_DEL02', + }) + + self.yesterday = date.today() - timedelta(days=1) + self.tomorrow = date.today() + timedelta(days=1) + + def test_create_purchase_orders(self): + + blanket_order = self.blanket_order_obj.create({ + 'partner_id': self.partner.id, + 'validity_date': fields.Date.to_string(self.yesterday), + 'payment_term_id': self.payment_term.id, + 'lines_ids': [(0, 0, { + 'product_id': self.product.id, + 'product_uom': self.product.uom_id.id, + 'original_qty': 20.0, + 'price_unit': 0.0, # will be updated later + })], + }) + blanket_order.onchange_partner_id() + blanket_order.lines_ids[0].onchange_product() + + self.assertEqual(blanket_order.state, 'draft') + self.assertEqual(blanket_order.lines_ids[0].price_unit, 30.0) + + # date in the past + with self.assertRaises(UserError): + blanket_order.action_confirm() + + blanket_order.validity_date = fields.Date.to_string(self.tomorrow) + blanket_order.action_confirm() + + self.assertEqual(blanket_order.state, 'open') + + wizard1 = self.blanket_order_wiz_obj.with_context( + active_id=blanket_order.id).create({}) + wizard1.lines_ids[0].write({'qty': 10.0}) + wizard1.create_purchase_order() + + wizard2 = self.blanket_order_wiz_obj.with_context( + active_id=blanket_order.id).create({}) + wizard2.lines_ids[0].write({'qty': 10.0}) + wizard2.create_purchase_order() + + self.assertEqual(blanket_order.state, 'expired') + + self.assertEqual(blanket_order.purchase_count, 2) + + view_action = blanket_order.action_view_purchase_orders() + domain_ids = view_action['domain'][0][2] + self.assertEqual(len(domain_ids), 2) diff --git a/purchase_blanket_order/views/blanket_orders.xml b/purchase_blanket_order/views/blanket_orders.xml new file mode 100644 index 00000000000..ed7a19247b2 --- /dev/null +++ b/purchase_blanket_order/views/blanket_orders.xml @@ -0,0 +1,152 @@ + + + + + + + purchase.blanket.order.tree + purchase.blanket.order + + + + + + + + + + + + purchase.blanket.order.form + purchase.blanket.order + + +
    +
    + +
    + +
    +
    +

    + +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + +
    + + + + + + purchase.blanket.order.search + purchase.blanket.order + + + + + + + + + + + + + Blanket Orders + ir.actions.act_window + purchase.blanket.order + form + tree,form + + [] + {} + +

    + Click to create a blanket order that can be converted into a purchase order. +

    + Use this menu to search within your blanket orders. For each blanket order, + you can track the related discussion with the vendor, control + the products received and control the vendor bills. +

    +
    +
    + + + diff --git a/purchase_blanket_order/views/purchase_config_settings.xml b/purchase_blanket_order/views/purchase_config_settings.xml new file mode 100644 index 00000000000..ac3b02fd270 --- /dev/null +++ b/purchase_blanket_order/views/purchase_config_settings.xml @@ -0,0 +1,29 @@ + + + + + + res.config.settings.form (in purchase_blanket_order) + res.config.settings + + + +

    Blanket Orders

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/purchase_blanket_order/views/purchase_orders.xml b/purchase_blanket_order/views/purchase_orders.xml new file mode 100644 index 00000000000..1d0f3230268 --- /dev/null +++ b/purchase_blanket_order/views/purchase_orders.xml @@ -0,0 +1,68 @@ + + + + + + purchase.order.from.blanket.form + purchase.order + + + + + + + + + + + + + + + + + + {'readonly': ['|', '|', ('blanket_line_id', '!=', False)]} + + + {'readonly': [('blanket_line_id', '!=', False)]} + + + {'readonly': ['|', ('state', 'in', ('purchase','done', 'cancel')), ('blanket_line_id', '!=', False)]} + + + {'readonly': [('blanket_line_id', '!=', False)]} + + + + + + + + {'readonly': ['|', '|', ('qty_invoiced', '>', 0), ('blanket_line_id', '!=', False)]} + + + {'readonly': [('blanket_line_id', '!=', False)]} + + + {'readonly': ['|', ('state', 'in', ('purchase','done', 'cancel')), ('blanket_line_id', '!=', False)]} + + + {'readonly': [('blanket_line_id', '!=', False)]} + + + + + + purchase.order.from.blanket.form - disable adding lines + purchase.order + + + + + blanket_order_id==False + + + + diff --git a/purchase_blanket_order/wizard/__init__.py b/purchase_blanket_order/wizard/__init__.py new file mode 100644 index 00000000000..c45a6c80631 --- /dev/null +++ b/purchase_blanket_order/wizard/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import create_purchase_orders diff --git a/purchase_blanket_order/wizard/create_purchase_orders.py b/purchase_blanket_order/wizard/create_purchase_orders.py new file mode 100644 index 00000000000..b2dfba23523 --- /dev/null +++ b/purchase_blanket_order/wizard/create_purchase_orders.py @@ -0,0 +1,103 @@ +# Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models, api, _ +from odoo.exceptions import UserError + + +class BlanketOrderWizard(models.TransientModel): + _name = 'purchase.blanket.order.wizard' + _description = 'Blanket Order Wizard' + + @api.model + def _default_order(self): + # in case the cron hasn't run + self.env['purchase.blanket.order'].expire_orders() + if not self.env.context.get('active_id'): + return False + blanket_order = self.env['purchase.blanket.order'].browse( + self.env.context['active_id']) + if blanket_order.state == 'expired': + raise UserError(_('You can\'t create a purchase order from ' + 'an expired blanket order!')) + return blanket_order + + @api.model + def _default_lines(self): + blanket_order = self._default_order() + lines = [(0, 0, { + 'blanket_line_id': l.id, + 'product_id': l.product_id.id, + 'remaining_qty': l.remaining_qty, + 'qty': l.remaining_qty, + }) for l in blanket_order.lines_ids] + return lines + + blanket_order_id = fields.Many2one( + 'purchase.blanket.order', default=_default_order, readonly=True) + lines_ids = fields.One2many( + 'purchase.blanket.order.wizard.line', 'wizard_id', + string='Lines', default=_default_lines) + + @api.multi + def create_purchase_order(self): + self.ensure_one() + + order_lines = [] + for line in self.lines_ids: + if line.qty == 0.0: + continue + + if line.qty > line.remaining_qty: + raise UserError( + _('You can\'t order more than the remaining quantities')) + + vals = {'product_id': line.product_id.id, + 'name': line.product_id.name, + 'date_planned': line.blanket_line_id.order_id.date_order, + 'product_uom': line.blanket_line_id.product_uom.id, + 'sequence': line.blanket_line_id.sequence, + 'price_unit': line.blanket_line_id.price_unit, + 'blanket_line_id': line.blanket_line_id.id, + 'product_qty': line.qty} + order_lines.append((0, 0, vals)) + + if not order_lines: + raise UserError(_('An order can\'t be empty')) + + order_vals = { + 'partner_id': self.blanket_order_id.partner_id.id, + } + order_vals.update(self.env['purchase.order'].onchange( + order_vals, 'partner_id', {'partner_id': 'true'})['value']) + order_vals.update({ + 'origin': self.blanket_order_id.name, + 'currency_id': self.blanket_order_id.currency_id.id, + 'order_line': order_lines, + 'payment_term_id': (self.blanket_order_id.payment_term_id.id + if self.blanket_order_id.payment_term_id + else False), + }) + + purchase_order = self.env['purchase.order'].create(order_vals) + return { + 'type': 'ir.actions.act_window', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'purchase.order', + 'res_id': purchase_order.id, + } + + +class BlanketOrderWizardLine(models.TransientModel): + _name = 'purchase.blanket.order.wizard.line' + + wizard_id = fields.Many2one('purchase.blanket.order.wizard') + blanket_line_id = fields.Many2one( + 'purchase.blanket.order.line') + product_id = fields.Many2one( + 'product.product', + related='blanket_line_id.product_id', + string='Product', readonly=True) + remaining_qty = fields.Float( + related='blanket_line_id.remaining_qty', readonly=True) + qty = fields.Float(string='Quantity to Order', required=True) diff --git a/purchase_blanket_order/wizard/create_purchase_orders.xml b/purchase_blanket_order/wizard/create_purchase_orders.xml new file mode 100644 index 00000000000..b4875577200 --- /dev/null +++ b/purchase_blanket_order/wizard/create_purchase_orders.xml @@ -0,0 +1,34 @@ + + + + Create Purchase Order + purchase.blanket.order.wizard + +
    + + + + + + + + + +
    +
    +
    +
    +
    + + + Create Purchase Order + ir.actions.act_window + purchase.blanket.order.wizard + form + form + new + +
    From 6be2ae7bfb1c53684e17b96c3453989ac14a618c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Gil=20Sorribes?= Date: Mon, 28 Jan 2019 08:47:20 +0100 Subject: [PATCH 0722/1277] Add schedule date to blanket order lines --- purchase_blanket_order/models/blanket_orders.py | 17 +++++++---------- purchase_blanket_order/views/blanket_orders.xml | 2 +- .../wizard/create_purchase_orders.py | 8 +++++++- .../wizard/create_purchase_orders.xml | 1 + 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py index 1f83a83ff42..f02cd21451f 100644 --- a/purchase_blanket_order/models/blanket_orders.py +++ b/purchase_blanket_order/models/blanket_orders.py @@ -50,10 +50,6 @@ def _default_company(self): string='Ordering Date', default=fields.Datetime.now, states={'draft': [('readonly', False)]}) - date_deliver = fields.Datetime( - readonly=True, - string='Delivery Date', - states={'draft': [('readonly', False)]}) note = fields.Text( readonly=True, states={'draft': [('readonly', False)]}) @@ -69,19 +65,19 @@ def _default_company(self): # Fields use to filter in tree view original_qty = fields.Float( string='Original quantity', compute='_compute_original_qty', - search='_search_original_qty', default=0.0) + search='_search_original_qty') ordered_qty = fields.Float( string='Ordered quantity', compute='_compute_ordered_qty', - search='_search_ordered_qty', default=0.0) + search='_search_ordered_qty') invoiced_qty = fields.Float( string='Invoiced quantity', compute='_compute_invoiced_qty', - search='_search_invoiced_qty', default=0.0) + search='_search_invoiced_qty') remaining_qty = fields.Float( string='Remaining quantity', compute='_compute_remaining_qty', - search='_search_remaining_qty', default=0.0) + search='_search_remaining_qty') received_qty = fields.Float( string='Delivered quantity', compute='_compute_received_qty', - search='_search_received_qty', default=0.0) + search='_search_received_qty') @api.multi def _get_purchase_orders(self): @@ -270,8 +266,9 @@ class BlanketOrderLine(models.Model): product_uom = fields.Many2one( 'product.uom', string='Unit of Measure', required=True) price_unit = fields.Float(string='Price', required=True) + date_schedule = fields.Date(string='Scheduled Date') original_qty = fields.Float( - string='Original quantity', required=True, default=1, + string='Original quantity', required=True, default=1.0, digits=dp.get_precision('Product Unit of Measure')) ordered_qty = fields.Float( string='Ordered quantity', compute='_compute_quantities', diff --git a/purchase_blanket_order/views/blanket_orders.xml b/purchase_blanket_order/views/blanket_orders.xml index ed7a19247b2..a56d754eade 100644 --- a/purchase_blanket_order/views/blanket_orders.xml +++ b/purchase_blanket_order/views/blanket_orders.xml @@ -59,7 +59,6 @@ - @@ -76,6 +75,7 @@ /> + + From 4570ca300258921e359efc2ccb27ad4e0e7ebe0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Gil=20Sorribes?= Date: Fri, 8 Feb 2019 13:58:06 +0100 Subject: [PATCH 0723/1277] [ADD] Blanket Order Lines View and ability to create PO from BO lines --- .../models/blanket_orders.py | 113 +++++++++++--- .../models/purchase_order.py | 71 ++++++++- .../tests/test_purchase_blanket_order.py | 84 +++++++++-- .../views/blanket_orders.xml | 140 +++++++++++++++++- .../views/purchase_orders.xml | 49 +----- .../wizard/create_purchase_orders.py | 120 +++++++++++---- .../wizard/create_purchase_orders.xml | 7 +- 7 files changed, 469 insertions(+), 115 deletions(-) diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py index f02cd21451f..36a5774ec19 100644 --- a/purchase_blanket_order/models/blanket_orders.py +++ b/purchase_blanket_order/models/blanket_orders.py @@ -9,7 +9,7 @@ class BlanketOrder(models.Model): _name = 'purchase.blanket.order' - _inherit = ['mail.thread'] + _inherit = ['mail.thread', 'mail.activity.mixin'] _description = 'Blanket Order' @api.model @@ -27,9 +27,14 @@ def _default_company(self): partner_id = fields.Many2one( 'res.partner', string='Vendor', readonly=True, states={'draft': [('readonly', False)]}) - lines_ids = fields.One2many( + line_ids = fields.One2many( 'purchase.blanket.order.line', 'order_id', string='Order lines', copy=True) + line_count = fields.Integer( + string='Purchase Blanket Order Line count', + compute='_compute_line_count', + readonly=True + ) currency_id = fields.Many2one( 'res.currency', related='company_id.currency_id', readonly=True) payment_term_id = fields.Many2one( @@ -39,11 +44,14 @@ def _default_company(self): state = fields.Selection(selection=[ ('draft', 'Draft'), ('open', 'Open'), + ('done', 'Done'), ('expired', 'Expired'), ], compute='_compute_state', store=True, copy=False) validity_date = fields.Date( readonly=True, - states={'draft': [('readonly', False)]}) + states={'draft': [('readonly', False)]}, + help="Date until which the blanket order will be valid, after this " + "date the blanket order will be marked as expired") date_order = fields.Datetime( readonly=True, required=True, @@ -54,7 +62,8 @@ def _default_company(self): readonly=True, states={'draft': [('readonly', False)]}) user_id = fields.Many2one( - 'res.users', string='Responsible', readonly=True, + 'res.users', string='Responsible', + readonly=True, default=lambda self: self.env.uid, states={'draft': [('readonly', False)]}) company_id = fields.Many2one( 'res.company', string='Company', default=_default_company, @@ -81,7 +90,11 @@ def _default_company(self): @api.multi def _get_purchase_orders(self): - return self.mapped('lines_ids.purchase_order_lines_ids.order_id') + return self.mapped('line_ids.purchase_lines.order_id') + + @api.depends('line_ids') + def _compute_line_count(self): + self.line_count = len(self.mapped('line_ids')) @api.multi def _compute_purchase_count(self): @@ -91,7 +104,7 @@ def _compute_purchase_count(self): @api.multi @api.depends( - 'lines_ids.remaining_qty', + 'line_ids.remaining_qty', 'validity_date', 'confirmed', ) @@ -104,9 +117,9 @@ def _compute_state(self): order.state = 'draft' elif order.validity_date <= today: order.state = 'expired' - elif float_is_zero(sum(order.lines_ids.mapped('remaining_qty')), + elif float_is_zero(sum(order.line_ids.mapped('remaining_qty')), precision_digits=precision): - order.state = 'expired' + order.state = 'done' else: order.state = 'open' @@ -165,8 +178,8 @@ def _validate(self): assert order.validity_date > today, \ _("Validity date must be in the future") assert order.partner_id, _("Partner is mandatory") - assert len(order.lines_ids) > 0, _("Must have some lines") - order.lines_ids._validate() + assert len(order.line_ids) > 0, _("Must have some lines") + order.line_ids._validate() except AssertionError as e: raise UserError(e) @@ -193,6 +206,16 @@ def action_view_purchase_orders(self): action = {'type': 'ir.actions.act_window_close'} return action + @api.multi + def action_view_purchase_blanket_order_line(self): + action = self.env.ref( + 'purchase_blanket_order' + '.act_open_purchase_blanket_order_lines_view_tree').read()[0] + lines = self.mapped('line_ids') + if len(lines) > 0: + action['domain'] = [('id', 'in', lines.ids)] + return action + @api.model def expire_orders(self): today = fields.Date.today() @@ -253,11 +276,17 @@ def _search_remaining_qty(self, operator, value): res.append(('id', 'in', order_ids.ids)) return res + @api.multi + def set_to_draft(self): + return self.write({'state': 'draft'}) + class BlanketOrderLine(models.Model): _name = 'purchase.blanket.order.line' _description = 'Blanket Order Line' + _inherit = ['mail.thread', 'mail.activity.mixin'] + name = fields.Char('Description', track_visibility='onchange') sequence = fields.Integer() order_id = fields.Many2one( 'purchase.blanket.order', required=True, ondelete='cascade') @@ -282,11 +311,32 @@ class BlanketOrderLine(models.Model): received_qty = fields.Float( string='Received quantity', compute='_compute_quantities', store=True) - purchase_order_lines_ids = fields.One2many( - 'purchase.order.line', 'blanket_line_id', string='Sale order lines') + purchase_lines = fields.One2many( + comodel_name='purchase.order.line', + inverse_name='blanket_order_line', + string='Purchase Order Lines', readonly=True, copy=False) company_id = fields.Many2one( 'res.company', related='order_id.company_id', store=True, readonly=True) + currency_id = fields.Many2one( + 'res.currency', related='company_id.currency_id', readonly=True) + partner_id = fields.Many2one( + related='order_id.partner_id', + string='Vendor', + readonly=True) + + def name_get(self): + """Return special label when showing fields in chart update wizard.""" + result = [] + if self.env.context.get('from_purchase_order'): + for record in self: + res = "[%s] - Date Scheduled: %s (remaining: %s)" % ( + record.order_id.name, + record.date_schedule, + str(record.remaining_qty)) + result.append((record.id, res)) + return result + return super(BlanketOrderLine, self).name_get() @api.multi def _get_display_price(self, product): @@ -302,7 +352,7 @@ def _get_display_price(self, product): price_unit = self.env['account.tax']._fix_tax_included_price_company( seller.price, product.supplier_taxes_id, - self.purchase_order_lines_ids.taxes_id, + self.purchase_lines.taxes_id, self.company_id) if seller else 0.0 if price_unit and seller and self.order_id.currency_id and \ seller.currency_id != self.order_id.currency_id: @@ -322,30 +372,39 @@ def onchange_product(self): precision = self.env['decimal.precision'].precision_get( 'Product Unit of Measure') if self.product_id: + name = self.product_id.name self.product_uom = self.product_id.uom_id.id if self.order_id.partner_id and \ float_is_zero(self.price_unit, precision_digits=precision): self.price_unit = self._get_display_price(self.product_id) + if self.product_id.code: + name = '[%s] %s' % (name, self.product_id.code) + if self.product_id.description_purchase: + name += '\n' + self.product_id.description_purchase + self.name = name @api.multi @api.depends( - 'purchase_order_lines_ids.order_id.state', - 'purchase_order_lines_ids.blanket_line_id', - 'purchase_order_lines_ids.product_qty', - 'purchase_order_lines_ids.qty_received', - 'purchase_order_lines_ids.qty_invoiced', + 'purchase_lines.order_id.state', + 'purchase_lines.blanket_order_line', + 'purchase_lines.product_qty', + 'purchase_lines.qty_received', + 'purchase_lines.qty_invoiced', 'original_qty', ) def _compute_quantities(self): for line in self: - purchase_lines = line.purchase_order_lines_ids + purchase_lines = line.purchase_lines line.ordered_qty = sum(l.product_qty for l in purchase_lines if - l.order_id.state != 'cancel') + l.order_id.state != 'cancel' and + l.product_id == line.product_id) line.invoiced_qty = sum(l.qty_invoiced for l in purchase_lines if - l.order_id.state != 'cancel') + l.order_id.state != 'cancel' and + l.product_id == line.product_id) line.received_qty = sum(l.qty_received for l in purchase_lines if - l.order_id.state != 'cancel') - line.remaining_qty = line.original_qty - line.ordered_qty + l.order_id.state != 'cancel' and + l.product_id == line.product_id) + line.remaining_qty = max(line.original_qty - line.ordered_qty, 0.0) @api.multi def _validate(self): @@ -357,3 +416,11 @@ def _validate(self): _("Quantity must be greater than zero") except AssertionError as e: raise UserError(e) + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + """Add search argument for field type if the context says so. This + should be in old API because context argument is not the last one. + """ + return super(BlanketOrderLine, self).search( + args, offset=offset, limit=limit, order=order, count=count) diff --git a/purchase_blanket_order/models/purchase_order.py b/purchase_blanket_order/models/purchase_order.py index 23502a3fe56..ec728925b3c 100644 --- a/purchase_blanket_order/models/purchase_order.py +++ b/purchase_blanket_order/models/purchase_order.py @@ -1,6 +1,8 @@ # Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import api, fields, models, _ +from datetime import date, timedelta +from odoo.exceptions import ValidationError class PurchaseOrder(models.Model): @@ -8,12 +10,73 @@ class PurchaseOrder(models.Model): blanket_order_id = fields.Many2one( 'purchase.blanket.order', string='Origin blanket order', - related='order_line.blanket_line_id.order_id', + related='order_line.blanket_order_line.order_id', readonly=True) + @api.constrains('partner_id') + def check_partner_id(self): + if self.partner_id: + if self.order_line: + for line in self.order_line: + if line.blanket_order_line.partner_id != self.partner_id: + raise ValidationError(_( + 'The vendor must be equal to the blanket order ' + 'lines vendor')) + class PurchaseOrderLine(models.Model): _inherit = 'purchase.order.line' - blanket_line_id = fields.Many2one('purchase.blanket.order.line', - string='Origin blanket order line') + blanket_order_line = fields.Many2one( + 'purchase.blanket.order.line', + 'Blanket Order Line', + copy=False) + + @api.onchange('product_id') + def onchange_product_id(self): + super(PurchaseOrderLine, self).onchange_product_id() + # If product has changed remove the relation with blanket order line + if self.product_id: + eligible_bo_lines = self.get_eligible_bo_lines() + if eligible_bo_lines: + if not self.blanket_order_line or \ + self.blanket_order_line.product_id != self.product_id: + self.blanket_order_line = \ + self.get_assigned_bo_line(eligible_bo_lines) + return {'domain': {'blanket_order_line': [ + ('id', 'in', eligible_bo_lines.ids)]}} + + @api.onchange('blanket_order_line') + def onchange_blanket_order_line(self): + if self.blanket_order_line: + self.product_id = self.blanket_order_line.product_id + self.order_id.partner_id = self.blanket_order_line.partner_id + + def get_assigned_bo_line(self, bo_lines): + # We get the blanket order line with enough quantity and closest + # scheduled date + assigned_bo_line = False + today = date.today() + date_delta = timedelta(days=365) + for line in bo_lines: + date_schedule = fields.Date.from_string(line.date_schedule) + if self.product_qty >= 0: + if line.remaining_qty > self.product_qty: + if date_schedule and date_schedule - today < date_delta: + assigned_bo_line = line + date_delta = date_schedule - today + if not assigned_bo_line: + assigned_bo_line = bo_lines[0] + return assigned_bo_line + + def get_eligible_bo_lines(self): + filters = ['&', '&', + ('product_id', '=', self.product_id.id), + ('remaining_qty', '>', 0.0), + ('order_id.state', '=', 'open')] + if self.product_qty: + filters.append(('remaining_qty', '>', self.product_qty)) + if self.order_id.partner_id: + filters.append( + ('partner_id', '=', self.order_id.partner_id.id)) + return self.env['purchase.blanket.order.line'].search(filters) diff --git a/purchase_blanket_order/tests/test_purchase_blanket_order.py b/purchase_blanket_order/tests/test_purchase_blanket_order.py index a77e2081b17..235c6cd8cb9 100644 --- a/purchase_blanket_order/tests/test_purchase_blanket_order.py +++ b/purchase_blanket_order/tests/test_purchase_blanket_order.py @@ -12,6 +12,7 @@ class TestPurchaseBlanketOrders(common.TransactionCase): def setUp(self): super(TestPurchaseBlanketOrders, self).setUp() self.blanket_order_obj = self.env['purchase.blanket.order'] + self.blanket_order_line_obj = self.env['purchase.blanket.order.line'] self.blanket_order_wiz_obj = self.env['purchase.blanket.order.wizard'] self.partner = self.env['res.partner'].create({ @@ -33,19 +34,27 @@ def setUp(self): 'seller_ids': [(6, 0, [seller.id])], 'type': 'consu', 'uom_id': self.env.ref('product.product_uom_unit').id, + 'default_code': 'PROD_DEL01', + }) + self.product2 = self.env['product.product'].create({ + 'name': 'Demo 2', + 'categ_id': self.env.ref('product.product_category_1').id, + 'standard_price': 50.0, + 'type': 'consu', + 'uom_id': self.env.ref('product.product_uom_unit').id, 'default_code': 'PROD_DEL02', }) self.yesterday = date.today() - timedelta(days=1) self.tomorrow = date.today() + timedelta(days=1) - def test_create_purchase_orders(self): - + def test_create_blanket_order(self): + """ We create a blanket order and check constrains to confirm BO """ blanket_order = self.blanket_order_obj.create({ 'partner_id': self.partner.id, 'validity_date': fields.Date.to_string(self.yesterday), 'payment_term_id': self.payment_term.id, - 'lines_ids': [(0, 0, { + 'line_ids': [(0, 0, { 'product_id': self.product.id, 'product_uom': self.product.uom_id.id, 'original_qty': 20.0, @@ -53,10 +62,10 @@ def test_create_purchase_orders(self): })], }) blanket_order.onchange_partner_id() - blanket_order.lines_ids[0].onchange_product() + blanket_order.line_ids[0].onchange_product() self.assertEqual(blanket_order.state, 'draft') - self.assertEqual(blanket_order.lines_ids[0].price_unit, 30.0) + self.assertEqual(blanket_order.line_ids[0].price_unit, 30.0) # date in the past with self.assertRaises(UserError): @@ -67,20 +76,75 @@ def test_create_purchase_orders(self): self.assertEqual(blanket_order.state, 'open') + def test_create_purchase_orders_from_blanket_order(self): + """ We create a blanket order and create two purchase orders """ + blanket_order = self.blanket_order_obj.create({ + 'partner_id': self.partner.id, + 'validity_date': fields.Date.to_string(self.tomorrow), + 'payment_term_id': self.payment_term.id, + 'line_ids': [(0, 0, { + 'product_id': self.product.id, + 'product_uom': self.product.uom_id.id, + 'original_qty': 20.0, + 'price_unit': 30.0, + })], + }) + blanket_order.onchange_partner_id() + blanket_order.action_confirm() + wizard1 = self.blanket_order_wiz_obj.with_context( - active_id=blanket_order.id).create({}) - wizard1.lines_ids[0].write({'qty': 10.0}) + active_id=blanket_order.id, + active_model='purchase.blanket.order').create({}) + wizard1.line_ids[0].write({'qty': 10.0}) wizard1.create_purchase_order() wizard2 = self.blanket_order_wiz_obj.with_context( - active_id=blanket_order.id).create({}) - wizard2.lines_ids[0].write({'qty': 10.0}) + active_id=blanket_order.id, + active_model='purchase.blanket.order').create({}) + wizard2.line_ids[0].write({'qty': 10.0}) wizard2.create_purchase_order() - self.assertEqual(blanket_order.state, 'expired') + self.assertEqual(blanket_order.state, 'done') self.assertEqual(blanket_order.purchase_count, 2) view_action = blanket_order.action_view_purchase_orders() domain_ids = view_action['domain'][0][2] self.assertEqual(len(domain_ids), 2) + + def test_create_purchase_orders_from_blanket_order_line(self): + """ We create a blanket order and create two purchase orders + from the blanket order lines """ + blanket_order = self.blanket_order_obj.create({ + 'partner_id': self.partner.id, + 'validity_date': fields.Date.to_string(self.tomorrow), + 'payment_term_id': self.payment_term.id, + 'line_ids': [ + (0, 0, { + 'product_id': self.product.id, + 'product_uom': self.product.uom_id.id, + 'original_qty': 20.0, + 'price_unit': 30.0, + }), (0, 0, { + 'product_id': self.product2.id, + 'product_uom': self.product2.uom_id.id, + 'original_qty': 50.0, + 'price_unit': 60.0, + }) + ], + }) + blanket_order.onchange_partner_id() + blanket_order.action_confirm() + + bo_lines = self.blanket_order_line_obj.search([]) + self.assertEqual(len(bo_lines), 2) + + wizard1 = self.blanket_order_wiz_obj.with_context( + active_ids=[bo_lines[0].id, bo_lines[1].id]).create({}) + self.assertEqual(len(wizard1.line_ids), 2) + wizard1.line_ids[0].write({'qty': 10.0}) + wizard1.line_ids[1].write({'qty': 20.0}) + wizard1.create_purchase_order() + + self.assertEqual(bo_lines[0].remaining_qty, 10.0) + self.assertEqual(bo_lines[1].remaining_qty, 30.0) diff --git a/purchase_blanket_order/views/blanket_orders.xml b/purchase_blanket_order/views/blanket_orders.xml index a56d754eade..e27cc46dd4b 100644 --- a/purchase_blanket_order/views/blanket_orders.xml +++ b/purchase_blanket_order/views/blanket_orders.xml @@ -8,8 +8,10 @@ purchase.blanket.order.tree purchase.blanket.order - + + @@ -26,6 +28,7 @@ +

    @@ -66,10 +76,10 @@ - + + @@ -94,6 +104,7 @@
    +
    @@ -144,9 +155,132 @@
    + + purchase.blanket.order.line.tree + purchase.blanket.order.line + + + + + + + + + + + + + + + + + + + + purchase.request.line.form + purchase.blanket.order.line + + +
    + +

    + +

    + + + + + + + + + + + + + + + + + +
    +
    + + + +
    +
    +
    +
    + + + purchase.blanket.order.line.search + purchase.blanket.order.line + + + + + + + + + + Blanket Order Lines + ir.actions.act_window + purchase.blanket.order.line + form + tree,form + + + + + diff --git a/purchase_blanket_order/views/purchase_orders.xml b/purchase_blanket_order/views/purchase_orders.xml index 1d0f3230268..1acedcfac44 100644 --- a/purchase_blanket_order/views/purchase_orders.xml +++ b/purchase_blanket_order/views/purchase_orders.xml @@ -8,49 +8,12 @@ purchase.order - - - - - - - - - - - - - - - - {'readonly': ['|', '|', ('blanket_line_id', '!=', False)]} - - - {'readonly': [('blanket_line_id', '!=', False)]} - - - {'readonly': ['|', ('state', 'in', ('purchase','done', 'cancel')), ('blanket_line_id', '!=', False)]} - - - {'readonly': [('blanket_line_id', '!=', False)]} - - - - - - - - {'readonly': ['|', '|', ('qty_invoiced', '>', 0), ('blanket_line_id', '!=', False)]} - - - {'readonly': [('blanket_line_id', '!=', False)]} - - - {'readonly': ['|', ('state', 'in', ('purchase','done', 'cancel')), ('blanket_line_id', '!=', False)]} - - - {'readonly': [('blanket_line_id', '!=', False)]} - + + + + + {'from_purchase_order': True} + diff --git a/purchase_blanket_order/wizard/create_purchase_orders.py b/purchase_blanket_order/wizard/create_purchase_orders.py index b7148b24afc..244f0b6d36f 100644 --- a/purchase_blanket_order/wizard/create_purchase_orders.py +++ b/purchase_blanket_order/wizard/create_purchase_orders.py @@ -1,6 +1,8 @@ # Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import fields, models, api, _ +from odoo.tools import float_is_zero +from collections import defaultdict from odoo.exceptions import UserError @@ -14,37 +16,79 @@ def _default_order(self): self.env['purchase.blanket.order'].expire_orders() if not self.env.context.get('active_id'): return False - blanket_order = self.env['purchase.blanket.order'].browse( - self.env.context['active_id']) + blanket_order = self.env['purchase.blanket.order'].search( + [('id', '=', self.env.context['active_id'])], limit=1) if blanket_order.state == 'expired': raise UserError(_('You can\'t create a purchase order from ' 'an expired blanket order!')) return blanket_order + @api.model + def _check_valid_blanket_order_line(self, bo_lines): + precision = self.env['decimal.precision'].precision_get( + 'Product Unit of Measure') + company_id = False + + for line in bo_lines: + + if line.order_id.state != 'open': + raise UserError( + _('Purchase Blanket Order %s is not open') % + line.order_id.name) + + if float_is_zero(line.remaining_qty, precision_digits=precision): + raise UserError( + _('The purchase has already been completed.')) + + line_company_id = line.company_id \ + and line.company_id.id or False + if company_id is not False \ + and line_company_id != company_id: + raise UserError( + _('You have to select lines ' + 'from the same company.')) + else: + company_id = line_company_id + @api.model def _default_lines(self): - blanket_order = self._default_order() + blanket_order_line_obj = self.env['purchase.blanket.order.line'] + blanket_order_line_ids = self.env.context.get('active_ids', False) + active_model = self.env.context.get('active_model', False) + + if active_model == 'purchase.blanket.order': + bo_lines = self._default_order().line_ids + else: + bo_lines = blanket_order_line_obj.browse(blanket_order_line_ids) + + self._check_valid_blanket_order_line(bo_lines) + lines = [(0, 0, { 'blanket_line_id': l.id, 'product_id': l.product_id.id, 'date_schedule': l.date_schedule, 'remaining_qty': l.remaining_qty, + 'price_unit': l.price_unit, 'qty': l.remaining_qty, - }) for l in blanket_order.lines_ids] + 'partner_id': l.partner_id, + }) for l in bo_lines] return lines blanket_order_id = fields.Many2one( - 'purchase.blanket.order', default=_default_order, readonly=True) - lines_ids = fields.One2many( + 'purchase.blanket.order', readonly=True) + purchase_order_id = fields.Many2one( + 'purchase.order', + string='Purchase Order', + domain=[('state', '=', 'draft')]) + line_ids = fields.One2many( 'purchase.blanket.order.wizard.line', 'wizard_id', string='Lines', default=_default_lines) @api.multi def create_purchase_order(self): - self.ensure_one() - order_lines = [] - for line in self.lines_ids: + order_lines_by_supplier = defaultdict(list) + for line in self.line_ids: if line.qty == 0.0: continue @@ -61,34 +105,43 @@ def create_purchase_order(self): 'product_uom': line.blanket_line_id.product_uom.id, 'sequence': line.blanket_line_id.sequence, 'price_unit': line.blanket_line_id.price_unit, - 'blanket_line_id': line.blanket_line_id.id, + 'blanket_order_line': line.blanket_line_id.id, 'product_qty': line.qty} - order_lines.append((0, 0, vals)) + order_lines_by_supplier[line.partner_id.id].append((0, 0, vals)) - if not order_lines: + if not order_lines_by_supplier: raise UserError(_('An order can\'t be empty')) - order_vals = { - 'partner_id': self.blanket_order_id.partner_id.id, - } - order_vals.update(self.env['purchase.order'].onchange( - order_vals, 'partner_id', {'partner_id': 'true'})['value']) - order_vals.update({ - 'origin': self.blanket_order_id.name, - 'currency_id': self.blanket_order_id.currency_id.id, - 'order_line': order_lines, - 'payment_term_id': (self.blanket_order_id.payment_term_id.id - if self.blanket_order_id.payment_term_id - else False), - }) - - purchase_order = self.env['purchase.order'].create(order_vals) + res = [] + for supplier in order_lines_by_supplier: + order_vals = { + 'partner_id': int(supplier), + } + order_vals.update(self.env['purchase.order'].onchange( + order_vals, 'partner_id', {'partner_id': 'true'})['value']) + if self.blanket_order_id: + order_vals.update({ + 'origin': self.blanket_order_id.name, + 'currency_id': self.blanket_order_id.currency_id.id, + 'payment_term_id': ( + self.blanket_order_id.payment_term_id.id + if self.blanket_order_id.payment_term_id + else False), + }) + order_vals.update({ + 'order_line': order_lines_by_supplier[supplier], + }) + purchase_order = self.env['purchase.order'].create(order_vals) + res.append(purchase_order.id) return { - 'type': 'ir.actions.act_window', + 'domain': [('id', 'in', res)], + 'name': _('RFQ'), 'view_type': 'form', - 'view_mode': 'form', + 'view_mode': 'tree,form', 'res_model': 'purchase.order', - 'res_id': purchase_order.id, + 'view_id': False, + 'context': {'from_purchase_order': True}, + 'type': 'ir.actions.act_window' } @@ -107,3 +160,10 @@ class BlanketOrderWizardLine(models.TransientModel): remaining_qty = fields.Float( related='blanket_line_id.remaining_qty', readonly=True) qty = fields.Float(string='Quantity to Order', required=True) + price_unit = fields.Float( + related='blanket_line_id.price_unit', readonly=True) + partner_id = fields.Many2one( + 'res.partner', + related='blanket_line_id.partner_id', + string='Vendor', readonly=True, + ) diff --git a/purchase_blanket_order/wizard/create_purchase_orders.xml b/purchase_blanket_order/wizard/create_purchase_orders.xml index 475d2689281..b4e1275dd39 100644 --- a/purchase_blanket_order/wizard/create_purchase_orders.xml +++ b/purchase_blanket_order/wizard/create_purchase_orders.xml @@ -6,10 +6,12 @@
    - + + + @@ -25,11 +27,12 @@ - Create Purchase Order + Create RFQ ir.actions.act_window purchase.blanket.order.wizard form form new + From 8cc8619cb563b5a2775f1c0d0c04659a98eda4e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Gil=20Sorribes?= Date: Fri, 8 Feb 2019 15:23:13 +0100 Subject: [PATCH 0724/1277] add cancel button --- .../models/blanket_orders.py | 39 ++++++++++++------- .../models/purchase_order.py | 10 +++-- .../security/ir.model.access.csv | 2 + .../tests/test_purchase_blanket_order.py | 22 +++++------ .../views/blanket_orders.xml | 14 ++++--- .../wizard/create_purchase_orders.py | 33 +++++++++++----- 6 files changed, 75 insertions(+), 45 deletions(-) diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py index 36a5774ec19..6852524159c 100644 --- a/purchase_blanket_order/models/blanket_orders.py +++ b/purchase_blanket_order/models/blanket_orders.py @@ -26,10 +26,11 @@ def _default_company(self): ) partner_id = fields.Many2one( 'res.partner', string='Vendor', readonly=True, + track_visibility='always', states={'draft': [('readonly', False)]}) line_ids = fields.One2many( 'purchase.blanket.order.line', 'order_id', string='Order lines', - copy=True) + track_visibility='always', copy=True) line_count = fields.Integer( string='Purchase Blanket Order Line count', compute='_compute_line_count', @@ -40,16 +41,18 @@ def _default_company(self): payment_term_id = fields.Many2one( 'account.payment.term', string='Payment Terms', readonly=True, states={'draft': [('readonly', False)]}) - confirmed = fields.Boolean() + confirmed = fields.Boolean(copy=False) state = fields.Selection(selection=[ ('draft', 'Draft'), ('open', 'Open'), ('done', 'Done'), ('expired', 'Expired'), - ], compute='_compute_state', store=True, copy=False) + ], compute='_compute_state', store=True, copy=False, + track_visibility='always',) validity_date = fields.Date( readonly=True, states={'draft': [('readonly', False)]}, + track_visibility='always', help="Date until which the blanket order will be valid, after this " "date the blanket order will be marked as expired") date_order = fields.Datetime( @@ -183,6 +186,12 @@ def _validate(self): except AssertionError as e: raise UserError(e) + @api.multi + def set_to_draft(self): + for order in self: + order.write({'state': 'draft'}) + return True + @api.multi def action_confirm(self): self._validate() @@ -195,6 +204,12 @@ def action_confirm(self): order.write({'confirmed': True, 'name': name}) return True + @api.multi + def action_cancel(self): + for order in self: + order.write({'state': 'expired'}) + return True + @api.multi def action_view_purchase_orders(self): purchase_orders = self._get_purchase_orders() @@ -276,10 +291,6 @@ def _search_remaining_qty(self, operator, value): res.append(('id', 'in', order_ids.ids)) return res - @api.multi - def set_to_draft(self): - return self.write({'state': 'draft'}) - class BlanketOrderLine(models.Model): _name = 'purchase.blanket.order.line' @@ -324,6 +335,12 @@ class BlanketOrderLine(models.Model): related='order_id.partner_id', string='Vendor', readonly=True) + user_id = fields.Many2one( + related='order_id.user_id', string='Responsible', + readonly=True) + payment_term_id = fields.Many2one( + related='order_id.payment_term_id', string='Payment Terms', + readonly=True) def name_get(self): """Return special label when showing fields in chart update wizard.""" @@ -416,11 +433,3 @@ def _validate(self): _("Quantity must be greater than zero") except AssertionError as e: raise UserError(e) - - @api.model - def search(self, args, offset=0, limit=None, order=None, count=False): - """Add search argument for field type if the context says so. This - should be in old API because context argument is not the last one. - """ - return super(BlanketOrderLine, self).search( - args, offset=offset, limit=limit, order=order, count=count) diff --git a/purchase_blanket_order/models/purchase_order.py b/purchase_blanket_order/models/purchase_order.py index ec728925b3c..0989c827033 100644 --- a/purchase_blanket_order/models/purchase_order.py +++ b/purchase_blanket_order/models/purchase_order.py @@ -18,10 +18,12 @@ def check_partner_id(self): if self.partner_id: if self.order_line: for line in self.order_line: - if line.blanket_order_line.partner_id != self.partner_id: - raise ValidationError(_( - 'The vendor must be equal to the blanket order ' - 'lines vendor')) + if line.blanket_order_line: + if line.blanket_order_line.partner_id != \ + self.partner_id: + raise ValidationError(_( + 'The vendor must be equal to the blanket order' + ' lines vendor')) class PurchaseOrderLine(models.Model): diff --git a/purchase_blanket_order/security/ir.model.access.csv b/purchase_blanket_order/security/ir.model.access.csv index f6f164e1cc1..720de7ee322 100644 --- a/purchase_blanket_order/security/ir.model.access.csv +++ b/purchase_blanket_order/security/ir.model.access.csv @@ -5,3 +5,5 @@ access_purchase_blanket_order_manager,purchase.order.manager,model_purchase_blan access_purchase_blanket_order_line_manager,purchase.order.line.manager,model_purchase_blanket_order_line,purchase.group_purchase_manager,1,1,1,1 access_purchase_blanket_order_accountant,purchase.order.accountant,model_purchase_blanket_order,account.group_account_user,1,1,0,0 access_purchase_blanket_order_line_accountant,purchase.order.line accountant,model_purchase_blanket_order_line,account.group_account_user,1,1,0,0 +access_purchase_blanket_order_user,purchase.order user,model_purchase_blanket_order,base.group_user,1,0,0,0 +access_purchase_blanket_order_line_user,purchase.order.line user,model_purchase_blanket_order_line,base.group_user,1,0,0,0 diff --git a/purchase_blanket_order/tests/test_purchase_blanket_order.py b/purchase_blanket_order/tests/test_purchase_blanket_order.py index 235c6cd8cb9..2bda1a6a721 100644 --- a/purchase_blanket_order/tests/test_purchase_blanket_order.py +++ b/purchase_blanket_order/tests/test_purchase_blanket_order.py @@ -61,18 +61,18 @@ def test_create_blanket_order(self): 'price_unit': 0.0, # will be updated later })], }) - blanket_order.onchange_partner_id() - blanket_order.line_ids[0].onchange_product() + blanket_order.sudo().onchange_partner_id() + blanket_order.line_ids[0].sudo().onchange_product() self.assertEqual(blanket_order.state, 'draft') self.assertEqual(blanket_order.line_ids[0].price_unit, 30.0) # date in the past with self.assertRaises(UserError): - blanket_order.action_confirm() + blanket_order.sudo().action_confirm() blanket_order.validity_date = fields.Date.to_string(self.tomorrow) - blanket_order.action_confirm() + blanket_order.sudo().action_confirm() self.assertEqual(blanket_order.state, 'open') @@ -89,20 +89,20 @@ def test_create_purchase_orders_from_blanket_order(self): 'price_unit': 30.0, })], }) - blanket_order.onchange_partner_id() - blanket_order.action_confirm() + blanket_order.sudo().onchange_partner_id() + blanket_order.sudo().action_confirm() wizard1 = self.blanket_order_wiz_obj.with_context( active_id=blanket_order.id, active_model='purchase.blanket.order').create({}) wizard1.line_ids[0].write({'qty': 10.0}) - wizard1.create_purchase_order() + wizard1.sudo().create_purchase_order() wizard2 = self.blanket_order_wiz_obj.with_context( active_id=blanket_order.id, active_model='purchase.blanket.order').create({}) wizard2.line_ids[0].write({'qty': 10.0}) - wizard2.create_purchase_order() + wizard2.sudo().create_purchase_order() self.assertEqual(blanket_order.state, 'done') @@ -133,8 +133,8 @@ def test_create_purchase_orders_from_blanket_order_line(self): }) ], }) - blanket_order.onchange_partner_id() - blanket_order.action_confirm() + blanket_order.sudo().onchange_partner_id() + blanket_order.sudo().action_confirm() bo_lines = self.blanket_order_line_obj.search([]) self.assertEqual(len(bo_lines), 2) @@ -144,7 +144,7 @@ def test_create_purchase_orders_from_blanket_order_line(self): self.assertEqual(len(wizard1.line_ids), 2) wizard1.line_ids[0].write({'qty': 10.0}) wizard1.line_ids[1].write({'qty': 20.0}) - wizard1.create_purchase_order() + wizard1.sudo().create_purchase_order() self.assertEqual(bo_lines[0].remaining_qty, 10.0) self.assertEqual(bo_lines[1].remaining_qty, 30.0) diff --git a/purchase_blanket_order/views/blanket_orders.xml b/purchase_blanket_order/views/blanket_orders.xml index e27cc46dd4b..245e790b8fe 100644 --- a/purchase_blanket_order/views/blanket_orders.xml +++ b/purchase_blanket_order/views/blanket_orders.xml @@ -28,7 +28,8 @@

    +
    + Payment Terms: +

    +

    Purchase person:

    +
    + Currency: +

    +

    @@ -34,18 +42,22 @@ + - + + diff --git a/purchase_blanket_order/static/description/BO_actions.png b/purchase_blanket_order/static/description/BO_actions.png new file mode 100644 index 0000000000000000000000000000000000000000..348134f71eacdf85f08f1747e5b2f86329a7f125 GIT binary patch literal 68034 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 z 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 zΞ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 literal 0 HcmV?d00001 diff --git a/purchase_blanket_order/static/description/BO_lines.png b/purchase_blanket_order/static/description/BO_lines.png new file mode 100644 index 0000000000000000000000000000000000000000..770ade5552f0d8f8cc911046211270fe7fc421ae GIT binary patch literal 41092 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 j-z&a;(LjUuAg>Xz8D?{`$WFLXot? literal 0 HcmV?d00001 diff --git a/purchase_blanket_order/static/description/PO_BOLine.png b/purchase_blanket_order/static/description/PO_BOLine.png new file mode 100644 index 0000000000000000000000000000000000000000..a0cb4807d864c1d4e2539d64847ccad29f6df8e2 GIT binary patch literal 61044 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 q^tUW?guB%KbK|^icqR$*=Purchase Blanket Orders

    Usage

    -

    A new menu in the Purchase area is created, allowing users to create new blanket -orders.

    +

    A new menu in the Purchase area is created, allowing users to create new blanket orders.

    +

    To create a new Purchase Blanket Order go to the purchase menu in the Purchase section:

    +Blanket Orders menu +

    Hitting the button create will open the form view in which we can introduce the following +information:

    +
      +
    • Vendor

      +
    • +
    • Payment Terms

      +
    • +
    • Ordering and Validity dates

      +
    • +
    • +
      Order lines:
      +
        +
      • Product
      • +
      • Accorded price
      • +
      • Original, Ordered, Invoiced, Received and Remaining quantities
      • +
      +
      +
      +
    • +
    • Terms and Conditions of the Blanket Order

      +
    • +
    +Blanket Orders form +

    From the form, once the Blanket Order has been confirmed and its state is open, the user can +create a Purchase Order, check the Purchase Orders associated to the Blanket Order and/or +see the Blanket Order lines associated to the BO.

    +Actions that can be done from Blanket Order +

    Hitting the button Create Purchase Order will open a wizard that will ask for the amount of each +product in the BO lines for which the Purchase Order will be created.

    +Create Purchase Order from Blanket Order +

    Installing this module will add an additional menu which will show all the blanket order lines +currently defined in the system. From this list the user can create customized Purchase Orders +selecting the lines for which the PO (or POs if the vendors are different) is (are) created.

    +Blanket Order lines and actions +

    In the Purchase Order form one field is added in the PO lines, the Blanket Order line field. This +field keeps track to which Blanket Order line the PO line is associated. Upon adding a new product +in a newly created Purchase Order a blanket order line will be suggested depending on the following +factors:

    +
      +
    • Closer Validity date
    • +
    • Remaining quantity > Quantity introduced in the Purchase Order line
    • +
    +New field added in Purchase Order Line

    Bug Tracker

    diff --git a/purchase_blanket_order/tests/test_purchase_blanket_order.py b/purchase_blanket_order/tests/test_purchase_blanket_order.py index 2bda1a6a721..e7dc5ed40eb 100644 --- a/purchase_blanket_order/tests/test_purchase_blanket_order.py +++ b/purchase_blanket_order/tests/test_purchase_blanket_order.py @@ -57,7 +57,7 @@ def test_create_blanket_order(self): 'line_ids': [(0, 0, { 'product_id': self.product.id, 'product_uom': self.product.uom_id.id, - 'original_qty': 20.0, + 'original_uom_qty': 20.0, 'price_unit': 0.0, # will be updated later })], }) @@ -85,7 +85,7 @@ def test_create_purchase_orders_from_blanket_order(self): 'line_ids': [(0, 0, { 'product_id': self.product.id, 'product_uom': self.product.uom_id.id, - 'original_qty': 20.0, + 'original_uom_qty': 20.0, 'price_unit': 30.0, })], }) @@ -123,12 +123,12 @@ def test_create_purchase_orders_from_blanket_order_line(self): (0, 0, { 'product_id': self.product.id, 'product_uom': self.product.uom_id.id, - 'original_qty': 20.0, + 'original_uom_qty': 20.0, 'price_unit': 30.0, }), (0, 0, { 'product_id': self.product2.id, 'product_uom': self.product2.uom_id.id, - 'original_qty': 50.0, + 'original_uom_qty': 50.0, 'price_unit': 60.0, }) ], @@ -146,5 +146,5 @@ def test_create_purchase_orders_from_blanket_order_line(self): wizard1.line_ids[1].write({'qty': 20.0}) wizard1.sudo().create_purchase_order() - self.assertEqual(bo_lines[0].remaining_qty, 10.0) - self.assertEqual(bo_lines[1].remaining_qty, 30.0) + self.assertEqual(bo_lines[0].remaining_uom_qty, 10.0) + self.assertEqual(bo_lines[1].remaining_uom_qty, 30.0) diff --git a/purchase_blanket_order/views/blanket_orders.xml b/purchase_blanket_order/views/blanket_orders.xml index 245e790b8fe..1ed3b2ba7c9 100644 --- a/purchase_blanket_order/views/blanket_orders.xml +++ b/purchase_blanket_order/views/blanket_orders.xml @@ -54,24 +54,25 @@
    - - + + - + + - + - - + + - + @@ -82,19 +83,19 @@ + - - - - - + + + + @@ -117,21 +118,30 @@ purchase.blanket.order - + - + - + - + - + + domain="[('remaining_uom_qty','>',0.0)]"/> + + + + + + @@ -165,19 +175,19 @@ - - - - - + + + + @@ -202,38 +212,43 @@ - From 35bea4c60b5f63a0e3a2f3479aececb32b99646e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Gil=20Sorribes?= Date: Thu, 28 Feb 2019 11:47:38 +0100 Subject: [PATCH 0726/1277] add taxes and total price to blanket order and extend tests --- .../models/blanket_orders.py | 70 +++++++++++++- .../models/purchase_order.py | 82 ++++++++++------- purchase_blanket_order/report/templates.xml | 33 +++++++ purchase_blanket_order/tests/__init__.py | 1 + .../tests/test_purchase_blanket_order.py | 42 ++++++++- .../tests/test_purchase_order.py | 91 +++++++++++++++++++ .../views/blanket_orders.xml | 10 ++ .../wizard/create_purchase_orders.py | 20 ++-- 8 files changed, 302 insertions(+), 47 deletions(-) create mode 100644 purchase_blanket_order/tests/test_purchase_order.py diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py index 68060c81c95..3c9db59f96f 100644 --- a/purchase_blanket_order/models/blanket_orders.py +++ b/purchase_blanket_order/models/blanket_orders.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from datetime import datetime -from odoo import fields, models, api, _ +from odoo import fields, models, api, SUPERUSER_ID, _ from odoo.exceptions import UserError from odoo.tools import float_is_zero @@ -22,6 +22,19 @@ def _default_currency(self): def _default_company(self): return self.env.user.company_id + @api.depends('line_ids.price_total') + def _amount_all(self): + for order in self: + amount_untaxed = amount_tax = 0.0 + for line in order.line_ids: + amount_untaxed += line.price_subtotal + amount_tax += line.price_tax + order.update({ + 'amount_untaxed': order.currency_id.round(amount_untaxed), + 'amount_tax': order.currency_id.round(amount_tax), + 'amount_total': amount_untaxed + amount_tax, + }) + name = fields.Char( default='Draft', readonly=True @@ -80,6 +93,17 @@ def _default_company(self): states={'draft': [('readonly', False)]}) purchase_count = fields.Integer(compute='_compute_purchase_count') + fiscal_position_id = fields.Many2one('account.fiscal.position', + string='Fiscal Position') + + amount_untaxed = fields.Monetary(string='Untaxed Amount', store=True, + readonly=True, compute='_amount_all', + track_visibility='always') + amount_tax = fields.Monetary(string='Taxes', store=True, readonly=True, + compute='_amount_all') + amount_total = fields.Monetary(string='Total', store=True, readonly=True, + compute='_amount_all') + # Fields use to filter in tree view original_uom_qty = fields.Float( string='Original quantity', compute='_compute_uom_qty', @@ -149,6 +173,7 @@ def onchange_partner_id(self): """ if not self.partner_id: self.payment_term_id = False + self.fiscal_position_id = False return self.payment_term_id = \ @@ -156,6 +181,14 @@ def onchange_partner_id(self): self.partner_id.property_supplier_payment_term_id.id or False) + self.fiscal_position_id = self.env[ + 'account.fiscal.position'].with_context( + company_id=self.company_id.id).get_fiscal_position( + self.partner_id.id) + + self.currency_id = self.partner_id.property_purchase_currency_id.id \ + or self.env.user.company_id.currency_id.id + if self.partner_id.user_id: self.user_id = self.partner_id.user_id.id @@ -291,6 +324,22 @@ class BlanketOrderLine(models.Model): _description = 'Blanket Order Line' _inherit = ['mail.thread', 'mail.activity.mixin'] + @api.depends('original_uom_qty', 'price_unit', 'taxes_id') + def _compute_amount(self): + for line in self: + taxes = line.taxes_id.compute_all( + line.price_unit, + line.order_id.currency_id, + line.original_uom_qty, + product=line.product_id, + partner=line.order_id.partner_id) + line.update({ + 'price_tax': sum( + t.get('amount', 0.0) for t in taxes.get('taxes', [])), + 'price_total': taxes['total_included'], + 'price_subtotal': taxes['total_excluded'], + }) + name = fields.Char('Description', track_visibility='onchange') sequence = fields.Integer() order_id = fields.Many2one( @@ -301,6 +350,9 @@ class BlanketOrderLine(models.Model): 'product.uom', string='Unit of Measure', required=True) price_unit = fields.Float(string='Price', required=True, digits=dp.get_precision('Product Price')) + taxes_id = fields.Many2many('account.tax', string='Taxes', + domain=['|', ('active', '=', False), + ('active', '=', True)]) date_schedule = fields.Date(string='Scheduled Date') original_uom_qty = fields.Float( string='Original quantity', required=True, default=1.0, @@ -340,6 +392,13 @@ class BlanketOrderLine(models.Model): related='order_id.payment_term_id', string='Payment Terms', readonly=True) + price_subtotal = fields.Monetary(compute='_compute_amount', + string='Subtotal', store=True) + price_total = fields.Monetary(compute='_compute_amount', string='Total', + store=True) + price_tax = fields.Float(compute='_compute_amount', string='Tax', + store=True) + def _format_date(self, date): # format date following user language lang_model = self.env['res.lang'] @@ -407,6 +466,15 @@ def onchange_product(self): name += '\n' + self.product_id.description_purchase self.name = name + fpos = self.order_id.fiscal_position_id + if self.env.uid == SUPERUSER_ID: + company_id = self.env.user.company_id.id + self.taxes_id = fpos.map_tax( + self.product_id.supplier_taxes_id.filtered( + lambda r: r.company_id.id == company_id)) + else: + self.taxes_id = fpos.map_tax(self.product_id.supplier_taxes_id) + @api.multi @api.depends( 'purchase_lines.order_id.state', diff --git a/purchase_blanket_order/models/purchase_order.py b/purchase_blanket_order/models/purchase_order.py index ed8e8a4aaac..20497903f46 100644 --- a/purchase_blanket_order/models/purchase_order.py +++ b/purchase_blanket_order/models/purchase_order.py @@ -48,18 +48,42 @@ class PurchaseOrderLine(models.Model): 'Blanket Order Line', copy=False) + def _get_assigned_bo_line(self, bo_lines): + # We get the blanket order line with enough quantity and closest + # scheduled date + assigned_bo_line = False + date_planned = fields.Date.from_string(self.date_planned) or \ + date.today() + date_delta = timedelta(days=365) + for line in bo_lines: + date_schedule = fields.Date.from_string(line.date_schedule) + if date_schedule and \ + abs(date_schedule - date_planned) < date_delta: + assigned_bo_line = line + date_delta = abs(date_schedule - date_planned) + return assigned_bo_line + + def _get_eligible_bo_lines(self): + base_qty = self.product_uom._compute_quantity( + self.product_qty, self.product_id.uom_id) + filters = [ + ('product_id', '=', self.product_id.id), + ('remaining_qty', '>=', base_qty), + ('order_id.state', '=', 'open')] + if self.order_id.partner_id: + filters.append( + ('partner_id', '=', self.order_id.partner_id.id)) + return self.env['purchase.blanket.order.line'].search(filters) + @api.multi - def _get_assigned_bo_line(self): + def get_assigned_bo_line(self): self.ensure_one() - eligible_bo_lines = self.get_eligible_bo_lines() + eligible_bo_lines = self._get_eligible_bo_lines() if eligible_bo_lines: if not self.blanket_order_line or self.blanket_order_line \ - not in eligible_bo_lines or \ - self.blanket_order_line.product_id != self.product_id: + not in eligible_bo_lines: self.blanket_order_line = \ - self.get_assigned_bo_line(eligible_bo_lines) - if self.blanket_order_line.date_schedule: - self.date_planned = self.blanket_order_line.date_schedule + self._get_assigned_bo_line(eligible_bo_lines) else: self.blanket_order_line = False return {'domain': {'blanket_order_line': [ @@ -70,45 +94,33 @@ def onchange_product_id(self): res = super(PurchaseOrderLine, self).onchange_product_id() # If product has changed remove the relation with blanket order line if self.product_id: - return self._get_assigned_bo_line() + return self.get_assigned_bo_line() return res @api.onchange('product_qty', 'product_uom') def _onchange_quantity(self): res = super(PurchaseOrderLine, self)._onchange_quantity() if self.product_id: - return self._get_assigned_bo_line() + return self.get_assigned_bo_line() return res @api.onchange('blanket_order_line') def onchange_blanket_order_line(self): if self.blanket_order_line: self.product_id = self.blanket_order_line.product_id - self.order_id.partner_id = self.blanket_order_line.partner_id if self.blanket_order_line.date_schedule: - self.date_schedule = self.blanket_order_line.date_schedule + self.date_planned = self.blanket_order_line.date_schedule + if self.blanket_order_line.price_unit: + self.price_unit = self.blanket_order_line.price_unit - def get_assigned_bo_line(self, bo_lines): - # We get the blanket order line with enough quantity and closest - # scheduled date - assigned_bo_line = False - today = date.today() - date_delta = timedelta(days=365) - for line in bo_lines: - date_schedule = fields.Date.from_string(line.date_schedule) - if date_schedule and date_schedule - today < date_delta: - assigned_bo_line = line - date_delta = date_schedule - today - return assigned_bo_line - - def get_eligible_bo_lines(self): - base_qty = self.product_uom._compute_quantity( - self.product_qty, self.product_id.uom_id) - filters = [ - ('product_id', '=', self.product_id.id), - ('remaining_qty', '>=', base_qty), - ('order_id.state', '=', 'open')] - if self.order_id.partner_id: - filters.append( - ('partner_id', '=', self.order_id.partner_id.id)) - return self.env['purchase.blanket.order.line'].search(filters) + @api.constrains('date_planned') + def check_date_planned(self): + for line in self: + date_planned = fields.Date.to_string( + fields.Date.from_string(self.date_planned)) + if line.blanket_order_line and \ + line.blanket_order_line.date_schedule and \ + line.blanket_order_line.date_schedule != date_planned: + raise ValidationError(_( + 'Schedule dates defined on the Purchase Order Line ' + 'and on the Blanket Order Line do not match.')) diff --git a/purchase_blanket_order/report/templates.xml b/purchase_blanket_order/report/templates.xml index e59914116c7..08a6f32bacc 100644 --- a/purchase_blanket_order/report/templates.xml +++ b/purchase_blanket_order/report/templates.xml @@ -44,6 +44,7 @@
    + @@ -60,11 +61,43 @@ +
    Product Unit PriceScheduled Date Original Qty
    + + - +
    Unit Price Scheduled Date Original QtyAmount
    + +
    +
    +
    + + + + + + + + + + + + + +
    Subtotal + +
    Taxes + +
    Total + +
    +
    +
    +

    diff --git a/purchase_blanket_order/tests/__init__.py b/purchase_blanket_order/tests/__init__.py index a6d059eae7f..21834e24230 100644 --- a/purchase_blanket_order/tests/__init__.py +++ b/purchase_blanket_order/tests/__init__.py @@ -1,3 +1,4 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import test_purchase_blanket_order +from . import test_purchase_order diff --git a/purchase_blanket_order/tests/test_purchase_blanket_order.py b/purchase_blanket_order/tests/test_purchase_blanket_order.py index e7dc5ed40eb..3f32dd6ceb5 100644 --- a/purchase_blanket_order/tests/test_purchase_blanket_order.py +++ b/purchase_blanket_order/tests/test_purchase_blanket_order.py @@ -48,7 +48,7 @@ def setUp(self): self.yesterday = date.today() - timedelta(days=1) self.tomorrow = date.today() + timedelta(days=1) - def test_create_blanket_order(self): + def test_01_create_blanket_order_flow(self): """ We create a blanket order and check constrains to confirm BO """ blanket_order = self.blanket_order_obj.create({ 'partner_id': self.partner.id, @@ -63,9 +63,14 @@ def test_create_blanket_order(self): }) blanket_order.sudo().onchange_partner_id() blanket_order.line_ids[0].sudo().onchange_product() + blanket_order._compute_line_count() + blanket_order._compute_uom_qty() self.assertEqual(blanket_order.state, 'draft') self.assertEqual(blanket_order.line_ids[0].price_unit, 30.0) + self.assertEqual(blanket_order.original_uom_qty, 20.0) + self.assertEqual(blanket_order.ordered_uom_qty, 0.0) + self.assertEqual(blanket_order.remaining_uom_qty, 20.0) # date in the past with self.assertRaises(UserError): @@ -74,9 +79,23 @@ def test_create_blanket_order(self): blanket_order.validity_date = fields.Date.to_string(self.tomorrow) blanket_order.sudo().action_confirm() + blanket_order.sudo().action_cancel() + self.assertEqual(blanket_order.state, 'expired') + blanket_order.sudo().set_to_draft() + self.assertEqual(blanket_order.state, 'draft') + blanket_order.sudo().action_confirm() + self.assertEqual(blanket_order.state, 'open') + blanket_order.action_view_purchase_blanket_order_line() - def test_create_purchase_orders_from_blanket_order(self): + # Search view check + blanket_order._search_original_uom_qty('>=', 0.0) + blanket_order._search_ordered_uom_qty('>=', 0.0) + blanket_order._search_invoiced_uom_qty('>=', 0.0) + blanket_order._search_received_uom_qty('>=', 0.0) + blanket_order._search_remaining_uom_qty('>=', 0.0) + + def test__02_create_purchase_orders_from_blanket_order(self): """ We create a blanket order and create two purchase orders """ blanket_order = self.blanket_order_obj.create({ 'partner_id': self.partner.id, @@ -90,11 +109,22 @@ def test_create_purchase_orders_from_blanket_order(self): })], }) blanket_order.sudo().onchange_partner_id() + + with self.assertRaises(UserError): + # Blanket order is not confirmed + self.blanket_order_wiz_obj.with_context( + active_id=blanket_order.id, + active_model='purchase.blanket.order').create({}) blanket_order.sudo().action_confirm() wizard1 = self.blanket_order_wiz_obj.with_context( active_id=blanket_order.id, active_model='purchase.blanket.order').create({}) + wizard1.line_ids[0].write({'qty': 30.0}) + + with self.assertRaises(UserError): + # Wizard quantity greater than remaining quantity + wizard1.sudo().create_purchase_order() wizard1.line_ids[0].write({'qty': 10.0}) wizard1.sudo().create_purchase_order() @@ -104,6 +134,12 @@ def test_create_purchase_orders_from_blanket_order(self): wizard2.line_ids[0].write({'qty': 10.0}) wizard2.sudo().create_purchase_order() + with self.assertRaises(UserError): + # Blanket order already completed + self.blanket_order_wiz_obj.with_context( + active_id=blanket_order.id, + active_model='purchase.blanket.order').create({}) + self.assertEqual(blanket_order.state, 'done') self.assertEqual(blanket_order.purchase_count, 2) @@ -112,7 +148,7 @@ def test_create_purchase_orders_from_blanket_order(self): domain_ids = view_action['domain'][0][2] self.assertEqual(len(domain_ids), 2) - def test_create_purchase_orders_from_blanket_order_line(self): + def test_03_create_purchase_orders_from_blanket_order_line(self): """ We create a blanket order and create two purchase orders from the blanket order lines """ blanket_order = self.blanket_order_obj.create({ diff --git a/purchase_blanket_order/tests/test_purchase_order.py b/purchase_blanket_order/tests/test_purchase_order.py new file mode 100644 index 00000000000..57a74cdc326 --- /dev/null +++ b/purchase_blanket_order/tests/test_purchase_order.py @@ -0,0 +1,91 @@ +# Copyright (C) 2018 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from datetime import date, timedelta + +from odoo.tests import common +from odoo import fields + + +class TestPurchaseOrder(common.TransactionCase): + + def setUp(self): + super(TestPurchaseOrder, self).setUp() + self.blanket_order_obj = self.env['purchase.blanket.order'] + self.blanket_order_line_obj = self.env['purchase.blanket.order.line'] + self.purchase_order_obj = self.env['purchase.order'] + self.purchase_order_line_obj = self.env['purchase.order.line'] + + self.partner = self.env['res.partner'].create({ + 'name': 'TEST SUPPLIER', + 'supplier': True, + }) + self.payment_term = self.env.ref('account.account_payment_term_net') + + # Seller IDS + seller = self.env['product.supplierinfo'].create({ + 'name': self.partner.id, + 'price': 30.0, + }) + + self.product = self.env['product.product'].create({ + 'name': 'Demo', + 'categ_id': self.env.ref('product.product_category_1').id, + 'standard_price': 35.0, + 'seller_ids': [(6, 0, [seller.id])], + 'type': 'consu', + 'uom_id': self.env.ref('product.product_uom_unit').id, + 'default_code': 'PROD_DEL01', + }) + self.validity = date.today() + timedelta(days=365) + self.date_schedule_1 = date.today() + timedelta(days=10) + self.date_schedule_2 = date.today() + timedelta(days=20) + + def create_blanket_order(self): + blanket_order = self.blanket_order_obj.create({ + 'partner_id': self.partner.id, + 'validity_date': fields.Date.to_string(self.validity), + 'payment_term_id': self.payment_term.id, + 'line_ids': [(0, 0, { + 'product_id': self.product.id, + 'product_uom': self.product.uom_id.id, + 'date_schedule': fields.Date.to_string(self.date_schedule_1), + 'original_uom_qty': 20.0, + 'price_unit': 30.0, + }), (0, 0, { + 'product_id': self.product.id, + 'product_uom': self.product.uom_id.id, + 'date_schedule': fields.Date.to_string(self.date_schedule_2), + 'original_uom_qty': 20.0, + 'price_unit': 30.0, + })], + }) + blanket_order.sudo().onchange_partner_id() + return blanket_order + + def test_01_create_purchase_order(self): + blanket_order = self.create_blanket_order() + blanket_order.sudo().action_confirm() + bo_lines = self.blanket_order_line_obj.search([]) + self.assertEqual(len(bo_lines), 2) + + po = self.purchase_order_obj.create({ + 'partner_id': self.partner.id, + 'order_line': [ + (0, 0, { + 'name': self.product.name, + 'product_id': self.product.id, + 'product_qty': 5.0, + 'product_uom': self.product.uom_po_id.id, + 'date_planned': date.today(), + 'price_unit': 10.0, + }) + ] + }) + po_line = po.order_line[0] + po_line.with_context(from_purchase_order=True).name_get() + po_line.onchange_product_id() + self.assertEqual(po_line._get_eligible_bo_lines(), bo_lines) + bo_line_assigned = self.blanket_order_line_obj.search([ + ('date_schedule', '=', fields.Date.to_string(self.date_schedule_1)) + ]) + self.assertEqual(po_line.blanket_order_line, bo_line_assigned) diff --git a/purchase_blanket_order/views/blanket_orders.xml b/purchase_blanket_order/views/blanket_orders.xml index 1ed3b2ba7c9..9efa71b0462 100644 --- a/purchase_blanket_order/views/blanket_orders.xml +++ b/purchase_blanket_order/views/blanket_orders.xml @@ -96,8 +96,18 @@ + + + + + + + +
    diff --git a/purchase_blanket_order/wizard/create_purchase_orders.py b/purchase_blanket_order/wizard/create_purchase_orders.py index 87fe1f2d046..3f874d0a574 100644 --- a/purchase_blanket_order/wizard/create_purchase_orders.py +++ b/purchase_blanket_order/wizard/create_purchase_orders.py @@ -88,7 +88,6 @@ def create_purchase_order(self): order_lines_by_supplier = defaultdict(list) currency_id = 0 - user_id = 0 payment_term_id = 0 for line in self.line_ids: if line.qty == 0.0: @@ -108,7 +107,8 @@ def create_purchase_order(self): 'sequence': line.blanket_line_id.sequence, 'price_unit': line.blanket_line_id.price_unit, 'blanket_order_line': line.blanket_line_id.id, - 'product_qty': line.qty} + 'product_qty': line.qty, + 'taxes_id': [(6, 0, line.taxes_id.ids)]} order_lines_by_supplier[line.partner_id.id].append((0, 0, vals)) if currency_id == 0: @@ -116,11 +116,6 @@ def create_purchase_order(self): elif currency_id != line.blanket_line_id.order_id.currency_id.id: currency_id = False - if user_id == 0: - user_id = line.blanket_line_id.user_id.id - elif user_id != line.blanket_line_id.user_id.id: - user_id = False - if payment_term_id == 0: payment_term_id = line.blanket_line_id.payment_term_id.id elif payment_term_id != line.blanket_line_id.payment_term_id.id: @@ -129,6 +124,10 @@ def create_purchase_order(self): if not order_lines_by_supplier: raise UserError(_('An order can\'t be empty')) + if not currency_id: + raise UserError(_('Can not create Purchase Order from Blanket ' + 'Order lines with different currencies')) + res = [] for supplier in order_lines_by_supplier: order_vals = { @@ -139,7 +138,6 @@ def create_purchase_order(self): 'origin': self.blanket_order_id.name, }) order_vals.update({ - 'user_id': user_id if user_id else False, 'currency_id': currency_id if currency_id else False, 'payment_term_id': (payment_term_id if payment_term_id @@ -177,8 +175,14 @@ class BlanketOrderWizardLine(models.TransientModel): qty = fields.Float(string='Quantity to Order', required=True) price_unit = fields.Float( related='blanket_line_id.price_unit', readonly=True) + currency_id = fields.Many2one( + 'res.currency', related='blanket_line_id.currency_id' + ) partner_id = fields.Many2one( 'res.partner', related='blanket_line_id.partner_id', string='Vendor', readonly=True, ) + taxes_id = fields.Many2many( + 'account.tax', related="blanket_line_id.taxes_id", + readonly=True) From 9fe158ec42878af523bb61cce998d8fa55920d54 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Fri, 1 Mar 2019 18:26:39 +0100 Subject: [PATCH 0727/1277] add taxes and unit price from blanket order --- purchase_blanket_order/README.rst | 3 +- purchase_blanket_order/__manifest__.py | 4 +- .../models/blanket_orders.py | 58 ++++++++++----- .../models/purchase_order.py | 55 +++++++++++--- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/BO_actions.png | Bin 68034 -> 56322 bytes .../static/description/BO_form.png | Bin 60399 -> 33073 bytes .../static/description/BO_lines.png | Bin 41092 -> 27706 bytes .../static/description/BO_menu.png | Bin 49726 -> 28158 bytes .../static/description/PO_BOLine.png | Bin 61044 -> 40523 bytes .../static/description/PO_from_BO.png | Bin 18648 -> 22858 bytes .../static/description/index.html | 3 +- .../tests/test_purchase_order.py | 70 +++++++++++++++++- ...s.xml => purchase_blanket_order_views.xml} | 4 +- ...se_orders.xml => purchase_order_views.xml} | 0 .../wizard/create_purchase_orders.py | 30 +++++--- .../wizard/create_purchase_orders.xml | 3 +- 17 files changed, 180 insertions(+), 51 deletions(-) rename purchase_blanket_order/views/{blanket_orders.xml => purchase_blanket_order_views.xml} (99%) rename purchase_blanket_order/views/{purchase_orders.xml => purchase_order_views.xml} (100%) diff --git a/purchase_blanket_order/README.rst b/purchase_blanket_order/README.rst index 234d2518309..bf9ce6c9598 100644 --- a/purchase_blanket_order/README.rst +++ b/purchase_blanket_order/README.rst @@ -107,12 +107,13 @@ Credits Authors ~~~~~~~ -* Eficent S.L. +* Eficent Contributors ~~~~~~~~~~~~ * Adrià Gil Sorribes +* Jordi Ballester Alomar Maintainers ~~~~~~~~~~~ diff --git a/purchase_blanket_order/__manifest__.py b/purchase_blanket_order/__manifest__.py index 761df10066d..711e4414f74 100644 --- a/purchase_blanket_order/__manifest__.py +++ b/purchase_blanket_order/__manifest__.py @@ -20,8 +20,8 @@ 'data/ir_cron.xml', 'wizard/create_purchase_orders.xml', 'views/purchase_config_settings.xml', - 'views/blanket_orders.xml', - 'views/purchase_orders.xml', + 'views/purchase_blanket_order_views.xml', + 'views/purchase_order_views.xml', 'report/templates.xml', 'report/report.xml', ], diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py index 3c9db59f96f..98e4910439b 100644 --- a/purchase_blanket_order/models/blanket_orders.py +++ b/purchase_blanket_order/models/blanket_orders.py @@ -51,9 +51,11 @@ def _amount_all(self): compute='_compute_line_count', readonly=True ) - product_id = fields.Many2one('product.product', - related='line_ids.product_id', - string='Product') + product_id = fields.Many2one( + 'product.product', + related='line_ids.product_id', + string='Product', + ) currency_id = fields.Many2one( 'res.currency', required=True, default=lambda self: self.env.user.company_id.currency_id.id) @@ -74,12 +76,14 @@ def _amount_all(self): track_visibility='always', help="Date until which the blanket order will be valid, after this " "date the blanket order will be marked as expired") - date_order = fields.Datetime( + date_start = fields.Datetime( readonly=True, required=True, - string='Ordering Date', + string='Start Date', default=fields.Datetime.now, - states={'draft': [('readonly', False)]}) + states={'draft': [('readonly', False)]}, + help="Blanket Order starting date." + ) note = fields.Text( readonly=True, states={'draft': [('readonly', False)]}) @@ -192,6 +196,15 @@ def onchange_partner_id(self): if self.partner_id.user_id: self.user_id = self.partner_id.user_id.id + @api.multi + def unlink(self): + for order in self: + if order.state not in ('draft', 'cancel'): + raise UserError(_( + 'You can not delete an open blanket order! ' + 'Try to cancel it before.')) + return super(BlanketOrder, self).unlink() + @api.multi def copy_data(self, default=None): if default is None: @@ -234,6 +247,13 @@ def action_confirm(self): @api.multi def action_cancel(self): for order in self: + if order.purchase_count > 0: + for po in order._get_purchase_orders(): + if po.state not in ('cancel'): + raise UserError(_( + 'You can not delete a blanket order with opened ' + 'purchase orders! ' + 'Try to cancel them before.')) order.write({'state': 'expired'}) return True @@ -345,7 +365,8 @@ def _compute_amount(self): order_id = fields.Many2one( 'purchase.blanket.order', required=True, ondelete='cascade') product_id = fields.Many2one( - 'product.product', string='Product', required=True) + 'product.product', string='Product', required=True, + domain=[('purchase_ok', '=', True)]) product_uom = fields.Many2one( 'product.uom', string='Unit of Measure', required=True) price_unit = fields.Float(string='Price', required=True, @@ -359,19 +380,19 @@ def _compute_amount(self): digits=dp.get_precision('Product Unit of Measure')) ordered_uom_qty = fields.Float( string='Ordered quantity', compute='_compute_quantities', - store=True) + store=True, digits=dp.get_precision('Product Unit of Measure')) invoiced_uom_qty = fields.Float( string='Invoiced quantity', compute='_compute_quantities', - store=True) + store=True, digits=dp.get_precision('Product Unit of Measure')) remaining_uom_qty = fields.Float( string='Remaining quantity', compute='_compute_quantities', - store=True) + store=True, digits=dp.get_precision('Product Unit of Measure')) remaining_qty = fields.Float( string='Remaining quantity in base UoM', compute='_compute_quantities', - store=True) + store=True, digits=dp.get_precision('Product Unit of Measure')) received_uom_qty = fields.Float( string='Received quantity', compute='_compute_quantities', - store=True) + store=True, digits=dp.get_precision('Product Unit of Measure')) purchase_lines = fields.One2many( comodel_name='purchase.order.line', inverse_name='blanket_order_line', @@ -416,7 +437,9 @@ def name_get(self): formatted_date = self._format_date(record.date_schedule) res += ' - %s: %s' % ( _('Date Scheduled'), formatted_date) - res += ' (%s: %s)' % (_('remaining'), record.remaining_uom_qty) + res += ' (%s: %s %s)' % (_('remaining'), + record.remaining_uom_qty, + record.product_uom.name) result.append((record.id, res)) return result return super(BlanketOrderLine, self).name_get() @@ -427,7 +450,7 @@ def _get_display_price(self, product): seller = product._select_seller( partner_id=self.order_id.partner_id, quantity=self.original_uom_qty, - date=self.order_id.date_order and self.order_id.date_order[:10], + date=self.order_id.date_start and self.order_id.date_start[:10], uom_id=self.product_uom) if not seller: @@ -456,7 +479,8 @@ def onchange_product(self): 'Product Unit of Measure') if self.product_id: name = self.product_id.name - self.product_uom = self.product_id.uom_id.id + if not self.product_uom: + self.product_uom = self.product_id.uom_id.id if self.order_id.partner_id and \ float_is_zero(self.price_unit, precision_digits=precision): self.price_unit = self._get_display_price(self.product_id) @@ -506,8 +530,8 @@ def _compute_quantities(self): l.product_id == line.product_id) line.remaining_uom_qty = line.original_uom_qty - \ line.ordered_uom_qty - line.remaining_qty = line.product_id.uom_id._compute_quantity( - line.remaining_uom_qty, line.product_uom) + line.remaining_qty = line.product_uom._compute_quantity( + line.remaining_uom_qty, line.product_id.uom_id) @api.multi def _validate(self): diff --git a/purchase_blanket_order/models/purchase_order.py b/purchase_blanket_order/models/purchase_order.py index 20497903f46..e2a3b8374fa 100644 --- a/purchase_blanket_order/models/purchase_order.py +++ b/purchase_blanket_order/models/purchase_order.py @@ -55,24 +55,33 @@ def _get_assigned_bo_line(self, bo_lines): date_planned = fields.Date.from_string(self.date_planned) or \ date.today() date_delta = timedelta(days=365) - for line in bo_lines: + for line in bo_lines.filtered(lambda l: l.date_schedule): date_schedule = fields.Date.from_string(line.date_schedule) if date_schedule and \ abs(date_schedule - date_planned) < date_delta: assigned_bo_line = line date_delta = abs(date_schedule - date_planned) - return assigned_bo_line + if assigned_bo_line: + return assigned_bo_line + non_date_bo_lines = bo_lines.filtered(lambda l: not l.date_schedule) + if non_date_bo_lines: + return non_date_bo_lines[0] - def _get_eligible_bo_lines(self): - base_qty = self.product_uom._compute_quantity( - self.product_qty, self.product_id.uom_id) + def _get_eligible_bo_lines_domain(self, base_qty): filters = [ ('product_id', '=', self.product_id.id), ('remaining_qty', '>=', base_qty), + ('currency_id', '=', self.order_id.currency_id.id), ('order_id.state', '=', 'open')] if self.order_id.partner_id: filters.append( ('partner_id', '=', self.order_id.partner_id.id)) + return filters + + def _get_eligible_bo_lines(self): + base_qty = self.product_uom._compute_quantity( + self.product_qty, self.product_id.uom_id) + filters = self._get_eligible_bo_lines_domain(base_qty) return self.env['purchase.blanket.order.line'].search(filters) @api.multi @@ -86,6 +95,7 @@ def get_assigned_bo_line(self): self._get_assigned_bo_line(eligible_bo_lines) else: self.blanket_order_line = False + self.onchange_blanket_order_line() return {'domain': {'blanket_order_line': [ ('id', 'in', eligible_bo_lines.ids)]}} @@ -100,18 +110,29 @@ def onchange_product_id(self): @api.onchange('product_qty', 'product_uom') def _onchange_quantity(self): res = super(PurchaseOrderLine, self)._onchange_quantity() - if self.product_id: + if self.product_id and not self.env.context.get( + 'skip_blanket_find', False): return self.get_assigned_bo_line() return res @api.onchange('blanket_order_line') def onchange_blanket_order_line(self): - if self.blanket_order_line: - self.product_id = self.blanket_order_line.product_id - if self.blanket_order_line.date_schedule: - self.date_planned = self.blanket_order_line.date_schedule - if self.blanket_order_line.price_unit: - self.price_unit = self.blanket_order_line.price_unit + bol = self.blanket_order_line + if bol: + self.product_id = bol.product_id + if bol.date_schedule: + self.date_planned = bol.date_schedule + if bol.product_uom != self.product_uom: + price_unit = bol.product_uom._compute_price( + bol.price_unit, self.product_uom) + else: + price_unit = bol.price_unit + self.price_unit = price_unit + if bol.taxes_id: + self.taxes_id = bol.taxes_id + else: + self._compute_tax_id() + self.with_context(skip_blanket_find=True)._onchange_quantity() @api.constrains('date_planned') def check_date_planned(self): @@ -124,3 +145,13 @@ def check_date_planned(self): raise ValidationError(_( 'Schedule dates defined on the Purchase Order Line ' 'and on the Blanket Order Line do not match.')) + + @api.constrains('currency_id') + def check_currency(self): + for line in self: + blanket_currency = line.blanket_order_line.order_id.currency_id + if blanket_currency and line.order_id.currency_id != \ + blanket_currency: + raise ValidationError(_( + 'The currency of the blanket order must match with that ' + 'of the purchase order.')) diff --git a/purchase_blanket_order/readme/CONTRIBUTORS.rst b/purchase_blanket_order/readme/CONTRIBUTORS.rst index 2586049ad73..49c9265577f 100644 --- a/purchase_blanket_order/readme/CONTRIBUTORS.rst +++ b/purchase_blanket_order/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Adrià Gil Sorribes +* Jordi Ballester Alomar diff --git a/purchase_blanket_order/static/description/BO_actions.png b/purchase_blanket_order/static/description/BO_actions.png index 348134f71eacdf85f08f1747e5b2f86329a7f125..e05cce8195721a8284f38a430d5da90c5537a55a 100644 GIT binary patch literal 56322 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

    T4HBC%J zM9l#~?A4%rq|u2OzSY{qBpF(Qt4A zu?AU8+Gn+~YW3!!;ArYADoS zIcs06=P`p^KU!c>Uk=l!<3np(U+cbFtZ8pIetWIXsZ&za)kumDh{ZiQt@@GqyvH_% z8nqry;8&93erK=nL1KU&$SnWV=G_|XI?$rgXJKJ!?Spc@j2=g9sA7OaO;EegymUZw;DhCSKazI^kbdlzFD`5?+<%{K`v75UYlq6S9Plk#-GY}ubfv_S^{CG z*EvRI)`a|DW3o5?Xw-)@(!c7nZ$`MRbzlPKYfQM)f%~o6(pp+6T0O0@29cYok;3To zC@k{bwQgtA`&OsrPxlj#+oz$P`%+awkIuPy(@U+&{4t@hT{-LdCI8ySKsiq17B?ou z8I*H*B<-bW#pS|?BIwFDzhGLmTn*ad8|3%!>%HfhHpB;!8M>9jolWW-j#a~7<~r%~ zcf)#9JQLx)+}SJVQatJ8N%K~ZyHI?LY~XnJdX;hv&fVXdj%e ZQ2!0Yu>$ndga?{2m@0=JtYgJ zBqSW0m$9(0l)m9=4sDJj)*o^ak|zo|X)z}fjskvKhxP1@vM`%pSUwTm4)oU1=jU}| zK?Jx6g!gs-iD@xNtg!>s`Dk6OhdK%H{fgoF{qg4PajwhN&wJooJW99T!qSS3(12I9 z;g#=k0p$#3@v7b7FRyxZH^2JUA0UlUC&%NNItC7k9}gPmGGz0I=omc=d2Axx9W{>w zr_eYixz8((fmWVSP=%#YQ`4)NQOM-ys^J}fL^k`kB)aXQj~wakURU{*y0De*dblt7 zdSh1H+gv1zSiB>#qc>AJIPKpdQq?O3y zZSzdT_tkw2hCxS|9{q^K#3ADT8PCFlv@cpVLih(?GrgJABwDPtDn0TBd2%DunUf0~ z#Pg)kXM*{0UG@T{;`{=}WGU%1Y%BCi$*^U~hxipnjE0EEodf(*t)O~rub*XhpcTZY z1sC6;{H`8=Xs3wqVc( zfAQ0#V#0}br$&`2*5IlBH&@8hs6>(`QUJ29Bf{|)9fb-fXsD$P*a`M6dz&j|HpuuYSZhu=0*sR}xGV;foLXD}E%)&Go!cbzgn@NG}GvJxS zE8mcN3JVo_6s@6784SK_NAWq(kXflQsoW6G)aG2NchGfnd8jGf&{`1U;(~qbA>Z$P zxsGJO?ceN=Hji@(^3t@kczyVM^V~-5UR|S{%}MS;7=}dYYTI+mu(Nhh{NUk_gyJQap>a928&9F{O?Wee)vLo%}vcP zllCo;y@h+I(!)}=g5aK`v(rnoAjDbe%JgV!lJ9_hwqEDdKH}Lh8|mh$zwXSY*BOko#;HEVkCnUYMO6wUz^vF>bB%^tCa8k(W|gbRc-`5TsLg%>ZToNTS^%7u zVj7#dMj&)`b%#Juoyzx7Nc7J7W29VF)o;HRH1SeI^ZCom%T)Cu79_@xv+g#6UZ>- zIJ7g@A7S2=a2Q;IX}yV5b-dqXulvH=hx0y=uGd`{TxW*vF1{;^rHR1F}=~;tBBkYWJ(0c5N>D@oe0Wp!TkylP$Zk zrYN3VFsJ5}_A6OhLJZWjkwK827hOLG7W6+o+;12;^341`@I$}6t@tKg{BQ@Wy4Q3MtX$rY@#`q*)yo-FOu~$Hn5S% z?V$u0W@Ka}9<_w>mogF(lDfsCnGy>6XH|ATh0?%dtX?;G zdpFUnv@csL2azux%LXVMl=nrzXHZTXM( z@I?S}vc9v0)5h>-&!Ys3ybR&lk_7~(#L%HY1^9-*oT^koKTwfvS<|O2F=LrWaWz%R z!|33Kc986R0y4$gL%%X@GBhnaX=?)#0IxF=D>SJLpS z_7{LYH`D_eGB7N95=_;boN$#%{rV(=r$ZtxCB7CT>93UGUm*$mH=5tWf=8061p>rY z>JwEcPdeY5D@2v%x0DiQL?UhML4r|H1vVoBcI~_Y!OALb$^)ozU|t|M1m;coMVyra zO)P~%#z7V~z*|o7W`k!?L;_~n&@VDlRYsqh0wgTP&x^15`TjT_KmmChjf&Hq4Lo#b zT>O_Di|&$hSUvX29k;IYg6eU=-V()TjO&lYk)chA zLF?Sxm|C59Tvc}oxMV+_890=>O?%|Lba&%z(Si*V)|DloQC-lf91`7G+gj6DLFDqqJ zOXth9HCa^NB>Udn4i!F}yQrJ^9UfhsUM&YG6=j}1#JRLnZK`%JOP7ViZ=@r+lit@~ zghWSBJSil?6!OcVdm>j!kEXDhqD?HTp|LTs4;at9qUk3ELz0QT3|j_OtzY>=l2wAN z#F1v$KTt`>y}awE_I-CAygDY2exK_PPI_^SJ+d`Wl$~P#BjEGBH&2)o=fd~^rVk|` zb}it-Ng#8F=V`LeG@{cHhVX~~MwE5a_7P?MOH`uuH^{z<<27JqwD`!D-gN_|xZKd7sB>n6?shCuGVQnMo^M9`N6 z9_nt}gT5HBMum8X>!+zNXOa}y>jGb@zdcJH;UYk|CODWq$HHi9KBC!`_uA-86mb|= z`&;q)c8i0U4ZbVhG^#DrzS;47&{1%a*|`OOaEkI`-c{``ZYN8o3H4YIr8+$_k-Q2 z?s+CRXB!^|G10eh$3g07dI~&Ug0E{wE=LhNZYMwMD2LdloJP`5_%d=@@Hq$+&AR=z zpSeH9EE5)^&Nf5NHb*il-mwU;i%mtWzbh5#c>|hufTCjexTq-n)Ny=NRMe>8(7V#y zc8|@Kijs*&rsbx>Dk)#YDk6z@Y|Oazdai=w;hl(`s5_4OL4cmd|dX5<-a;=rAv)gFEwsgxWCA!!=E5weNG7NU_l(T~k| zlN2#OedFh343NmKG)Bpl+PYwwHXBW7PA02IzF(tdie4VuXVxsQ2g!bkB{Xigb~+new_!EzVAU9bvqmKXFGp;e@x1o_?yzUhfAhQU ztr5EB(!PBd5;xxT7@<4XhMBk)RCz0-AdyvA|7*URhnWr|vWd>^PkU#d>8rHQNo-zD zT~s*>AGtRg=+d9mSgt}Gz36P3uMHy6S6xqCYak}w{+N2+4=T(Vk43A?c<0rJBBDdG ziU5ZD=@A2L$aI&DC{>AZnMG|9V#_#J|D-kjr8nfD;Q(4x8bI0JDRZ=xr2muKr0Sr* zfB9i|?XyTwMTTd%;*Ytv@rIUc7V{JUJ(A_cMgOOM#68rysm%~ZCvPBbpq?WHS~Q1k z#`V;5;>!1MiiZLfWC}F^a4)X;MMs(=mKxv3c=z6F>n5jU4^-T63W|aMy`n>=gM1kh zsqQzazf+L!t8IRMrQz?Iw;pg821W;7I#FE`f8K~9u?b;xSnxNoOgq5~k=9}=)CY0y za%qc{=Fb(ll34%%w&}+(C8L&x9;mM$K8xGABwpJ0>>~$QD?YXgVbUuduGDUSR!a8O zRmr``+T*3$U#e20)_7jI%ZKO*haALJ_rf&pl^PYqDoRRc^Glwcqq4`B`}{jV;zNY| zmrLkrAbiDb^J3!k$mMMYMsRA`QbBz>QpOV`lMRcGUvzy5mt`_sh*Qk9Fx#GHrl zn>q~XBFJ>qEil@K)%FT;z;_hsN95lo_38fZrL89%*6TKhFxtIeqzUN0ta*fYi#~xW z0vE*nZh!9Y9IXYSWaVG1pdYrYgYtb@s=GXyXl9z{gioYZ!t3^e;bv5di8M|Rci@^7 zxYipU?J&erwxOs&6P=ir11-eu;pcw3)w+Aqg$zoF^Y$EEn0h@!-Rm&3rn7V7EK%xa zV=$8Du8A7^(qR4e(VXP*Bvf6plVI+!m*%njspzjk=2HCN?lI-VN;Z|Cl;2bRy?ViA z*s$)m=eV6d>vhS0Fw^Cm;1z)!oMMmvLpnH4Gyy;xQ6#94Y##CkU^h-iNFoOyci4)1 zW}xMun9&jHZ3&aW7s+l$vGto%HfH!kT3|Y=d2?x*GLBgHFrE}3n>-VhDy@PUhaf0p zDYMBX+K3v$Pm#S^yS~F|Z>{V^9-c zF=x_?YN#p6gDAp`3TxT@H5O7-Lma(n2+|7~lUKCQ(IV9{AL##7$UP4LkS8!d3=UZX zdiGH9fUFG4Z!v>|N2J~`&!maR&`s~@my~uVtf@&$V~FH&ceUz&@i#(OrTQPb{+|mb=B`gy1KsnndTi=Q_O*bz0}ab(XcI+U=@kg+)s`CJQJZhDx0 zlTC*6!SZ?XL&k({mKew7CXU#sg!=3e88c>b%O(&fFP|6w~nDSusPu6k3T9X}~gGtpbBa66B z^TtXpBMe{B5GUjnF#kPF-u5w0J75iw(-8}qDJkVk^_C9 zQXQPE`{ah|Of(=POh5Q~!po`J9Fm4+nOBT2B3VlUu&hegLj6JJcQz6w??{nu&C?fL)jK(F*;5dG zq?Q2=nd|4gHx?LxFuiZ-B=$bVCH7+QqhAV1grqK2vjmp{3> zmlm(x!W!Wu<<`eJy?;haO0WF9y_YtZ7Gv3GB>)1T031EmPbQARUm6^T`nIy(3J-=6x` zSnGqVqMPvCI`CgFfP9p%H;wbB*6Go6Ou4(OF)(Nz# z$lLzMup(-VtB`^vzY0sWUnyIL@umQ zHKd+|gRaN!uhwrnrSyy{#v4IpzpqP|yIWcVkB6RmPmM*zciahw$Rte-MZz>IA1o`g zO@@7%8tXt*0_a~o&3KnZj)W-#oMSD}+d2pPmz(QjGplDimJK=$PP@6)I}5x$%U?%; zA|9F!nkg-hg?+>0%9VcuciiDR{MAkeVZDE12t5ueZ8G!gmX90O?>8(m3?O=y{hdX+ z3piP`s~PmEHFH}m2OjNlys*~O`#hS`dXMkj>k*G##7?Kj=qt@ZSGU!L-siSvHC!L@ z_*5fvWoB07+VLCN7KOPG?W=mg!7Qic?amj2G%nBlxI6|%aJ%sr?E~S%d_{-iwDorP zdUyd7Ecug{Sw%OZW!`>fbf+T!RA8^;NmuHjx%=j7+Mv6>sm(vHqHg7AtD-(zUGfPL zbQfg#v@hj%e;(dIm@pns2;h~T7CS(1cM7nZ9hd8#!gicz{mnU0w5Y4>QRT@{Qbcgo z*SA%1FkNwI^U?tCl*K@z>tT&ssy*Oh?l}KgDc4&{!tqMPCRe;Y=!#Uz50ObTzx?(C z4R(Ys4Q%u5IG5((?n_*Mr!Rv=*r)HcXO@5t7~43~Vs-9V%Y*T$jnp%QKAq95w}7`< za{*$0&q(Hnm~S6PNOjk*JHlhqKX>+Z+Skl>AvPlg+dpy)Qx*nEl7*?3P)q*RFWmS= zDf~EF_;B{%14$7v=WPi*&S>ujH#`Ic~BM5fw~?(-*qxRVlcK zT_(!_wJO`v8`HxPPM}7ozhhh`IKDG3@49^qbuQMZ$k3ZS8GOLN-_o(EA;u$WYZ~|% zg} zKIdP=!BO(|-BW80U(H!7Tj_4C6A2w86oEl%bGTQBKfNJhagB~X)I2UQU z5MzFc-iaT>#FjqYEXMn(>r_AOEzKU9YZZ-uP{vUHs=YG%bNs%Nq8ZnMVRK(b{J<8{ zV#7Nf$L|YlTRG3ZAk8uB4kW|#IBTqQ@onAle(a^`3^f$GrV5O z7cXV?Xz0c6N8P}u!oO4Yi%=H{vAs)!{Kx4KqY?Llx2Zl(n6#F)K@af`g_`P_DbFzcqRFYdD)-eh zAd*skh%jS;{Iuj_mf(;Bh64UOaDmXopn*r;oW9o6z`-45WNgni7g8i zVH!6wz{ZnFeFYeVR}*M*Fe2AiVQ#C)s~1QRRIDdHqM)Kqnyrw_I{{!>apnMJ<9E`@ z+8>rRqIZu7h!aeJPPi5)lk(yt9X4+B#2}K~U+7r@#%TS*M09F_SAW9V%(1gM0m1QH z+}C-jqulkgJ*GVV75GUEzty-;IRc=?lJ~VKL+hI(hGW@vAiIjtsB2!i zty0ym0G`%PX@}_?GTD+vks*eJ{!Q-qAY^)aGD&r1K(M08Kk%Uf%0?=94#&Ls$LIbAtzY$(oD9Ca=4BmPta_{bDOPAy0X%yg z{n@j9e2z#_WdPh3e01bd=J=>?el~w9@yKipU0I1M;P_$~J)&|EK!<6fA)vzx43mYg zZ)DtlW#Ie&R`GZ4i~xzw*MQ(KTKIF&%+t|QI|)){HOVl{1=XHuT^8bRu?~g*L-z^K zTenrSOCN4@;x#`WKFxs)EU-mwCJxi5LF@_u)Tkq?m8)!yk)I8u0x|>LF1C<5L}M5W58@BC{;g_-wOkk;67vsC(+g3Davt<+!`SS)9|1aSG8d)e(a-`5V1!BHmF)2}{Cg`5AXd5^m z1-9$iFT%{3#_F-8h$bk;(GCgyrrW_UctMi(CX}xYX0Ys$a7Z zXM%_rlXqTBswFP+UfN*p6EVeGU;0K5B3!i?rM#&W`7$D_47PAb07k+_*CFqEP;Y)Q zkQLf^_Fp#hr}09I%25^rlBRWFH6BS{f={1dLH8r`_X@$A<1mm6(IAOUlLarDymU?) zlQP#iWucgAbTB==v@|_3RqGbMj6+3mR1zILZj;9*I$~(v{%x8mHkf1e6>nInDLLhx zL?ciZeUJbtI#?M60FU!H&)h`81T$=BrOg0($m*Z_ME{tV=c%$n(yWKF|J6n}uUoFyFE2im zcX#Ssa2D01b$dd>N2(t^8thJ1d@fyGO@_4vD@NT9-%AM^(O?b8OiAVniyd(NlKFk~ zTD0fl$NOP2dRv9)pR+(hB=@|F8t$5pM@r2F5=$p^+j+@5w@vWtTuy0ut(Qr3?`kA} zlpem1zdKVxf9<(*w_Hx53L5MYv0#C08PbNNCF2Vb$ZHY}w#_>e~x;3{NvUhYDNwQuda$MW^KfS)?{fJd|4BlUI(;M_w6RI?V;cSd}Hq z6h((SM(2O4u=|uKJw5U}`q4TkCv13LUgs8@4Daf7w9f7U!JCd1Iia1Q#>Xq)wyBno z&CNt1ZbZMhhQmQzj^2J*<8^;bn?;i-luF#idc}M%Z#2256LOtq4BB*0uiA{cTt*&Y zf#nTeLj6m4G{@Y=pGtq;d(V4gLBc!pSAh_L4+sCtxH+#8UQ%~|LId$h*<+u}%+R}{ zU=&`}jm><7}$_aiJ5J)%Ku;#LKOUaMjEV4q}Hvs$8WM z3_wE+ecfwoeeBByIVB7_NM4)e&d6QrvNsK1$`~BRp-oy>jUo>wVnyy%SU5#DGc>4@ zH?tKNdTF2}<9>RwOY8o4xmd!zJK9)`ZHXa~dOYa$=jMBBw}VlKFO#}NCTqq6arye& z4@YQ4a{3(l%1GQFVK3KVX589zpTBdi{~`dz#ttYlcib41Q;frIwGQW#yK`d2rkk?u ze|XWQa;Bq>S@vPbj9yEd1i5Q|G8~*9X&07Stf!w1Yymg-!b~JQA3SuHJ^aKow8A%x zyETw{FDoF|G7Bc%G^6E4xsZE5BBAqGxEeH{HD<6s5^v6X`Qi8rWz)p`kwGrHu*>Yz zri;mfQPAI;k@lk*$hBf;IXiOvhyU%xeCP7z)1mpbj;g-h?)&pr#-{r@n|}tM!rtDnqQHwsuXT`~zYVdof7^x2sq;tnIRHO7 zhHz6GM9aGPt5gsXG~dYo@D4bq@U~*%m5C8qL;*ZL-|JYd``3wXB_zZKy8ib&F|FtIi?l3FZ+`XJ!&}0PLRznn#-|YC)WloXdCr^KCX!DrMIPGp;8?)BXORth6^JuHx z_I-ENkKZ14oH1;t_jUKBDOs|xyUfHdNG|+I_<9C{H}GOoxfgi z=O&7aH=nNCH|2#7@VCZI+5fwz{ZW*wtJ1Wt+nhFZe4N2Q?bdc{MOVt{ZnK{&&j1`4vSN(EOz?(-HtS(rC8x7e$UbK;3iJ7e-F5^Pu zqo{^d)W3_7I5Z+?B>idKq|R6|mW`IL|C$dB$WS%Wcy;E`3TJ+Bd~$v2q4cOE<;oz* zV31w95Dx0XBe3eGMBjtg2O^SYS zBQLgx9%@XRF1a_N#j0Bw<~DiTF?+>nuewY+oj{pLeN7`_iLxO>Q@Wp*qvQOuf{4AG zGXA+=5ACYGb^74+?*_1Z>ZrilsK38@ zgi&idFw)Q3D%@&;AzR@;-r}}$kcz6>x={)7CW=WE%kmE1{65YM6hhol&Ie3<TIKFxOjKqX_D2@cYgK743$ab8NFJB*upry)Sm{)UdHGAM~eWY0tb#r5x z%w%11T3q@xKCO_f;v^c5tn0MBcQZ_cG;T|o7v?2=INo-Qv9OvzU-7~wM?uY@s6-^i zQXDxgB}VxW{F7H7C+n|A8b#A{C0UzIDJ5(p1c?qE8F$nzANx!dOSEEZ_5*wMI9llB z*_% zE46&+N76S6KX)gcJwd#coEdJ05wDWyo*VSI8HPqYUHa=mM)UbvxQ$D)721@k7i6odhG}Wk{tGEGq@=k#cd6V7 zfT^2&)ZB=%HoYq#&oHCGI?v&KL2Mkq{FmsIPKZFCz<)(vV?hykwxiHh@6U!}tKN6a zTo7#_7*?LoCm&b;Zca{qIww~4Gw-swa^LpIl*Mq8EeqZkBZnrZiGp@({k}T+x^w|> z$H$DhbHP{D;&F#FbBb8j>a>I^6at!qAs@=e#3}F1@N0`{xJ5s5=Et4YI>>d?L)5DB zujCj_=3fG&dw-I*D#5GcyQ)nO;!91ge%I_1dPD|I=QzefIY{}c$N^q$0Y0C4N`klG zEwiQ`@+$;!yz7Yg#Q$8q3tMV_%bZxk_BL#IHpg^t5ZM_MNg6nn>`bRnZy%ZRW~IQb zmROauZma2{gS{HnEg=pm8SgT5J;2Gc7GH_ab9zX1xU6QEj~zM!{^8(~e}3wP5X2mG zT;5Dj1#N5(*(Vy(m?xZ zUQNgWDOR}+(<4tdHl*}M-3VO}NC83RK%!-wr^YtYQOcwT;P*|bkZ-SJ0tTh1RF|Nc zcMPq#GA;B`=8#6lFu2H1aMXo9Id&-)fvJC~!V*~cHuSkv%|-pzm!F;hGW|5;roiyb z&VmkYNSFy2DSS)TXkl&c<#nIw4$8Z%vV7!+^~BC^ByMpg?ygwe71x085?xaCcTPB~pn@{oUq2wS%0mrB6&*Qsq8EjQPA^LT6fUZa3w>^l zL1%gsl=mQIhTFp*zdRC>t~JfVcTv-l$Dt(A1!E92WPJh9BvaGRN+mr6KirE{DzwkO zY&TMwe6IAw zexCV64`zCTIM7%N&1-{_OAT5mE`g@qxTr3u-p56KY^e0a$IJKAbd737Y>Q&-pG$dd z8wz+{_1jit>}k@F*H$xOIKHDb^=E|#Bhw@j`7vh();PbkZTIuC4_;}xsARs#JwH*4 z5WN~;6_m148G4g_IUgzHP<{5AwZkk^=%9hN5eE41LQFGr5G)r4){U%SU!L|6pN>^} zlMhua#9L1}m`W|7%WoU{#O7NuDz%Cfw=`@RFYYK)Dr;sThop4nLe+V8@REug zDTfOG%i)1`Q~gZMHu77x9o8K&+#v0W1fXaI^|k<$`j-!7SAR~r8+MiPUJcfe5eJw% zr6eU<_Wn%TRi2Hv@@4z1M4s_D`rFm_o9BceH&0isn31l{&%P?<_qk~mkLkNQ_sPUr z7UR3wncUX0bXJkPA4kd=Z>qT7&GHUr>Db#kX+gXUrTEr^QQpPwTfTTjVDpZ3fV`9( zF_dzj8w@EiyDs|$gnq^K+FJaWQMNKnj8Nba(z6iFl6U*2pKxaZ%c6kO zeL-Ee)g4IACbPm&{dlrjQ-M(?p2EQF$!1ahjsd0@w&-7w(rWQ5+avXZ*y&dfMS8mh z(fD`EX-}qxqbj6*O8MjR)i6cY^i&JEiYWP%>{4p5EHmWbU0u7uMAKg%H>VqwIyj5| z$!JzVyyB?9p5~3xM+a>L)3>cp(xPliZ2_2O40mF5s|eMo~NP=S)EpC*M>xfWA40zdV=x?_NeG_QLPcXdY;kdvUC;b?N{!+Mm2SpU~J8J!+OUroQX;l zN~Os^K7C=TxBZr@F4|%Djjz1YkPY}jE5cg*TvLGQ=XP20yWF8#F44QuJ&1}AV*ouQ zCiFdpYff{HxZMkXOLr!*1fL8qi5aEA!D_*`F+K8#H2bl<+A?uUFN)GOVW&l{!Q+-{ zceO+zyK6e5uGH~JCjOwdDG0@jpSfh&oprCsDNS4hi7r(1ebT~ye4=NA4t&-4@>h~@ z`{yE3zlaO7&F4XCNva)UxM52HDZH+snes396Fa?Xp0-k8RqgCAR16FyeWC0D9*^{R zMYsM_d#yYbh^S3;PiV4mLINuCyYY;K4qZa$UG4FbncqhuOm7HiTTWi|OtGd*Nc9^g zhFx_~KbDJYmOp=c^5r@q$D^$~5B^b&(jhAwH_PZj_#E-N=B`k1LJ&TpIS^2dIh5J~ zHXQp!Z~bU-A)ED`gMVVO>}i`pB`d}IgINK~ZT*fU|D2S{Nnr;nxY{_#n!%(@x?4kk zg7eFn2x?-Gn<2zT>d9R6`sY^|n&6HOO-*|C1C?oui-R+oWa1GPwys>4m!Tot_z-hGY$Zrt+}TlAkQ&BqI-SVc zyC`oqit=_d6Da=OCT2}#LM9&lR$afAU+{0iGNq)tiGSaYGvT@Sd8fM$xGVt4ow=qQ zZC0HWz;Bl~TstG;bP^L@Au*)Z4yA#5KVFtcQCX|{w4`y6H)1pMGyC826G{uv0g{yI zT#+eifc>Scum(Rn+2=4YBv$O2;VvalXLtDo!BqB;jlCujipID7$pz*~5KxUgRFAvVccPI>5wA)RnnjC%0Uj%ht)UnQ)3F59Nd z>f6@ax9A1rZoc16YzN)zCL=GP%zc<6@(dVgALgWs;@!)W!xl%A8iuG3eV!;V4>Tv zE4WB*o|1B`t&Jb>&Ko1iHVgG0%)kU-w4;OydVEx9wFXk+*>CaOwqCh6aNVi~J z6tM=M&OLAHRO+Whrp3g?I7y;{VQ1!%LuDOgO}yl^Scv$a54^=1KNXdW_1-I2a%=s7 zX^6-0s=|)Q+KQ1>$dGNboCVsZ*0jAdYeuUsZ+{Bj{o$*x`&LOwi!Lpw0Ut6g6>Dd^ zm<>P_AiCky^*a)+zw}n^)axL$%a#K7G;C*w-nWbGL8C@!2VC3k_qHnmmref5?RYb* zs|E(|qs1RdPHzG2_rF`mfJaYNYvw)^KA!D@Eo11bT|ZA7paD;Vzfb0hxVc0FuUEl} zt9Au{O9;2C`BCpm%9=D7yj$;G(Mjj;Tkiv^(cRl!?;uipTpLfXF8;3<0B!TZa)0$9 z`c|?~N=W377j#1dVIJjhXiBF-JZ#Lt=(@nV4w{;-wT>-^_CV=II*8 z^i_(Fj0)iWaf*oYEd4dLas@y?EwgL#Cvk?x3;8pzWc2$sPc2MWI*B#oHdD0WfHl1d zxG1I0n)2BOQ!Rd(FZAtWp`F~(q6c#h+4l>a%r~yKJR$tbJTv_orWUD{0FJ(Z9>4tb z;?}W|^L)?a!O$Fp=b`~@FkU?zC)A77;i^FAG~h8LH^IC?h!T&{%;E;%e7@tzx-J}W z@nwC6tbgH)dlRDT#p#nBm{f4m#mL2v3^DYy^6=WZ+2Rwa@ZbA9i_?GE9)jXTd z$3FY55ZXYv*ZV+q`S)9}&|_l+fh-|gEW?HI(Yj64l}Ayt+U6*>!kv53#)GAa>xWth zbzj?`xwAz9jpI$@hOQ2-r7=Mp2UKX!h5M*vxQeFrBSbi_s(3NxxM2+Vm6P@n%x;%c z`na7|@fxrE{#~ZPWRCpH7N7TRpt8}+aq6$LEfOu0lOyNN$L1NAjV+IL)L+}0j#t0# z1aG*g>kt1_k-5gJ%ZQuDzz^+b^6i*$M%b+=MpS?HkQsp=NWue`(q#Wc$C_=P1SO|+pE~A@9hXA zAJJh%T*HA0Le@XA4L1rnE1fU7u~ z?3>DSI!gT_-;_u8C9%>qHa6{kYaSv3n7^oGX(7Sboa zCFYXJGt#4yG7@K0-zv^aTzp{*r>x_Kg2D!#qG=L$4p{M5k6t94It~kv@Z76fZlGA+1== zg;WMR{z<|886|Q8VAB&v7eEHNTNOHUla-`CYX!}Jy9Os|x;~HM`agCo|oz{OHpJ=}vmHQ%_zH}Om(M_eA1 z9ki!V`_vc0)ehJvz0STla2rayxzM!k1*F!OXsQXiu-QB~%yXK~|5|dYOaabf|KKF2 z2F`91Alug9X#!Ad&E&b)qOQ%|<-@IzSXE;Mq6*a0c~G-7VlQP^TJ_%>J_;kDVp*`p zk2@UDpaM3{YD5mDoV!0{hb%j?^=^8WY7zgk5E z(sn29xv=RIn6SrVwZK%!Ta zFH3d3-4R1xPbgw`&@rK`lR3MIrj0w8M;&2Thrjb!Ca4o(NmU=Lk|liqI!H6idCQJW zF>^R{-tx69KrY#giK(dpSZC{^yu7L?uuqBrkbz9^S6`qY%N$d18vK^lRxB=)jj_=G zT4!-rJ$X;-vSxg2mf!&4Gs+B{Ef2+uIx5K@AAWcIvU|z)kciQEmb%xfLSV(%RH!yF z{`LO6Y_-8cW!@2c-CD>fqDVRQ zAu~$Jz_xF#ggr~|s%}E$q%7x>6C+$KlsK5RuBUj77MT_YCQMoi75z9rF$zM|;&^sM z2|v$px=#1^A{p)|aUFvzq&OxbG1<)s`#3MN(67A@|CHRc3q}UAd6~6%wz>Gd3wSaD zLHI~$BWPi@YvjdwpC&P8CVa8il@&=j2u3{W%x6)FO7gbxcYY_&BBUR6nzsMYOvXF? zW?g_^k+Nf4vjs1oE_K?U@glHWP`3*+IK%{ThW$#6!NvhmNcMed1SLit3E_N~dSKmI zoHnqjJNm+8iXbc=Q4jIPD6_T$VIgcgyktCP0!)1NB6kex03c;n$Lt;{H)Gpn8SJ9Y z`QT|wzoj&M?}r}0s}$#d^rcSr5+$TPQ51w5UV z^%&k8_NNWoz;AEYrMexUP!x=(C|4OMyq4UjG9%b;S2)lk_@xSg4w{ zV?EPOmI-X8qg|xIIu!r$M~xltgX#Fbs_c#xUsfKpei0P!AT z;r4j(Q#?PMM15Jer-TqO_xxfHRN+u z%<>gwUmUk|@7+T5&-)q~mm1?|-CI94h``wkRqt>7)Ic!J9HrUPM+i?#P;vy=33_as zr(G`c>y|I(5=E+bXhEGu%-%HMDGtmgyIi08^rm0x`JQqc^`^#zB02 z-&^-IeE9f=RaXvwy*c4i0rqE>wxO2+?G6;A?|VJ^O24Ah zaz>ph$i=K9OVI=o71CS~pZrw!Ib}PtnIM%xh7fK`GY_m^AOAL6Op%OIXNJ{w($ui( zGKW)++RA$v8LGNvt_|ZQX-eCJotu}S{FzQuw}cZZw;j3GJvC#MQX8dS)S&zRihZf> zvWguPYu80AAZAAwjibH*y3gxUyG?xfZd`mX71nDxQm;`gAa>`bo7HC}iYC0@QfCp# zSMo=(r&nHaKnU%Rk3WDlTS5Qh(sd$NOG6&Ywjzt3o0S#3^(W$WEJhns+wVOqH+?;DcX;5ouRHZ*z%JM%-MJTd4Fi4?8;b6 z&$_7p^r(ao_XQk8zh?I89e!*#?HEX)f;51T7YNRwcRDb)~a37fn%s z{CGw5vKmw*F#`Xv$`xHV&~7WX?r5sB>ksMoOssi{dzk@WqAQclnzzx%D${qXZ?i-I zxUu}1JX2bW7&;a@EVrM&Namaq5Lx25@2TloEYF{CNGbBu{IMu21I8;e=*~PB!QOR|SUCek|L)b~qGYofAuhcZia zSpNr>p87vPT1U>Gi)VarL7M@?w;3Or}C<;XNt6~!eTrv1}x+y|^tDX*}sdG+ri^nja+aJslCF2(&>lv$!L@luRv z1{t`uc63sB$nf7Orhl&`sOHEF*e(D21%AQX7YGoIh46%b51@>gE(S&tC#P=5lW!MD zqGu1E*q{o}V>KEA5QZE605RdaSV%3LC}KlKbvA?#3Ecz@^pJb!ww!T4^ZaRT)@S~@ zvW?}aWpK;<WJEp6cFi01WuZkv!+942HU`{d<@;QXKeUwVRrn$ zkY?+@gR4x~OjoaJUgI!uD7*?7j#j^J)!XOjo@Z0MaX=VDmJ$>pSHI zA9TocZ94SGwycAd?ek|08w{iTvw>@=5fWbbX;*>Y!*S0Tl2mn%VB2+zHM#?oYbBHP zoa;MJm=R!YT=72ki8nJV60_W-E=;XF_cP(UvVBx38evub*FP?zS9#Si{=Q+K5rmufi*Ju4_%wTg;U+%?o24LYoti`a0j z$E|CgRPizQ@{71Jttt1KKWrNu+!ZkJTR%{)ru+h`PZ0EeSY@R4>yFqfZ#(I<{+elW z%NjKP-V}$@@8(oKrZ96Pd~fZtnxpyQ&ZHrYDaLy*%>q}Ia4qr|>$3N5aL#aPO|00% z#yT#AsvvD^`#6+`qvc}!MTYNLk=k+_V*%~+fo^%0;N{UqWnuR1BvN*6u*~0~!@k8a zhdCFr9fbHH812l`9)%L}?putEl$X7`$B8y@+L@ zGX_rs&-WI7bbaCi4l9*(GLaHbM|ID4FnB?|oy4$Qj(5}s+27^nJxSBKr@lFr!okWa z@Xe{al^BcwUwyN)abh{1?)j+ z(!<%u=VIu<@zP~?*QWxH5sIPr9nwrENZ7kxCe4VF``Xc@z3v>|Dzmke$cP}leaixZ zvg_&>1+_evC)GLkojmdprJmnh0lA2VigwG!3m5{TO3aZ z7Xxr9yMyXxpEC*HeVElo-1Cv&4GGhzx!lvHz|&*S^R8byV1V(Vgpp&!cWdTpz&~#C z`swO;$@6iFF4UDe8zAhm7EG{hC*{f=cftB|CRy<^-Q%P`?qYa9K49;kr^rB-g)Fu5 zS2wC#0h5ie_!Ur)jNd$(uFh7*nRJfB@iYbdcYjS7@rJ1mZI~+++X9XKP5^=WV3@mJWEQr5qeadJ%-B?EhyrAWN zrhXoMzKR_+Y!D2=Y)|mQq40D6dUa+kA*NrZA)}opcD_p-?rWbIJin=kr|Kp1`19a>L~6x*vMmS zyIH6njWX}fIIIv9yt(D@+4XPn>gpXY5-{}H?8%{;6XO?-vmO4ORE((Vy3|#^1hhW= z(OzRg4iW^RY9n_#oIGT3udw%KYHo8DOHnhiyGP#hE*#%L`@ZpZD zyEYu1keDFA!8B}N3>hH9u3f%Q;K(HyPrYF0KY$l3+3{x$3#Iq-?`e8$zz9A*7D6=v zLBdEFe}C%AwIYZS9+!SYgz$k_?Hp;=5F}gvq~28mlR3$(E$4_=OixLWazX5GIVHEiH*a%15H5IAz6>cG4_cJazV{ zIqXP)6o~W-mQv1U`byQoTaD|>!!Lc{*<-J?*cn3z8fwUNB>47{=;#L<>~RxHZxOR? zuVilr{&e(H0}0##eYcR!qXBWmtjgYZ;JuD%-O(hHk_9OrD`>!toN_)ZoWI=f`NcO+ zc#o*?`Y>mwr8KcrYp`(H{hS=W7$3Xzety)^Pc>X{*}3sYnn3!ryZkiF;kS>*@wD3J zC6IA49}Sh;@jlFXj$B8(8h9lk>T@RVcTSyyMrm}WmE*fpjY}Do4)x5Xn0PpsF!TnY z%DGZcP2E1941aCDybIqykF0;t@~amnWKAJl=0Mm3! z#a!M%?GHCTJN?#3agx~`60qK!(#6hRf4PU5vM*)-aB{Ra51b>U7UI2_-X~#`cQ3;k zOG{r8)9!EGMuElfai*%!+lGf%R=%i{^`plHDL1YN@zd^@e-P%0?duI$G_`k`GSvSS zw0XNWIr}v5Z~!H*w%%%Q#W>XZ`a4<9?Kp>u^5%pni_56uSUK5=s*VTmBO%6X?`3&Y zU9XwawZ~EK!#45cRzKm1=c<$u@!Mby51CJzdF@f$>j~Eq@xtEEf%0y+JR{k+m&*e& z$Bq0=taQU{7N&RY1-Q#84s1MC_X58Ab%m-qEHiiEHGv~cJ>X*btkPLz$m``(0o=d2oAVA+sVSP;YAu z_v_p+k;Si*UY5Ea)Eh57w%&-p!Vaj+MgBHhPE4Yop#HKqHSraGG{5;!fn1!(%`C~) zTXS0q27xrsl>s$sj|~UxUdzD#`ifWC5ZbGM_QL7<2*SB3vPm3#zO7pUQ$I`vGZ z2ZfsKw~hKsMJA3MN(CJRIr8-%>J6fAY>mG=afk@MAXr~FhJGwhmgF?kz?1U_?FNp{ zjsaPIVc0qylG|;gRt;<76_43ipURO}r}-nvlez`rI9&S|aI32KUFE?=BA~ z{_~D}Hq!;UAAx!l{Ri*8cj7Kkg>A8fBiL}X)|<(@mfy?FHX5K-X9cwcub9W|3m;Lc zr8HC|6tM+ya%U_2tbM?TxeBL$hwZY0gI@jh(EJI5Z*ZtcwFV_A@U|8{o11Cx5+t&n-Hy}xH$Ry{lz|(0&e?kQD*G;)NWo)CCKSS6wZ9&x+tz;M)+>@|3mkII0I0Lcb4;^g8P{ab zs1mGx8F)|a{)?zp*zmN)zo;VsSqu3S8WmwtvcpfgP=KPDmyPq}J9hPk)n+ZWAI0Ot z7H9BH#$I?EXHS0@pP%yaY`T1#z9W4)qA6GWQw@ML;L5QEL zKTa`{9l^xEA($(_Tn6W#B;cf_Y&7Z`8bM8PR=WU!k6`O-aN>vJL$s4hJRbDg zc-LR~as;y>rs&ll`Q5sm4uCSUul@^9*QF4?gVi6KBsLh;27o>Zsr7E<U9vH3Ia>59Wt>`54tp|W#xW#NWa`x>WXcsL{cE?%F8t1=CdS7!wS7;O@}$#s z0(vuq$v#CQB~Z=y)uilN+s?2*aB z>Lr_TKKieWKcU5(_&VIi*w`01_5uUzf^3Og47pn0qksGhJ`S8)dSxqVB2dV}4-*}H z2H8~I%p6jXkPs4y|9M~JN}m-uG2%#G1S7FkR0NIwz`r&^H_@H@ZiV+e;Ms}&Ek@>V z1ROw9OETg2Y7oHF%Q@1ZUOd5-c=7KEc-^iTd=vX;OQ$70Nsc0l#un z%;rt+TH%Gf=5C%aU`LlhuCZmol9mL)Ml^rEV}c-{Y+u{?C)1$kzcq>ClKX6mzLpS< zxL7RU@5Cvm9RoTy^rW_m8iTjHq*WlxKwJPJF}CaSCXzoAqvg74ZAXL_H3Md)__4f5 zQL;Xb)vK4m8`WJFJzHY>Yl}DY3_Ne&Ngng4Nw}_ANSu>;9Zaa5D$JEpqDcLUvYiV6 zS?~5PJg{+9S(v!X-nAamv)QF%FDo%nz#2nCI&Au5k`!5NgXmMar0}c)qj)+HzGHL* zDDWT`Bx;0UhM?vvkbzidDp6#RiQav~A{|uV8402xQow^XcSH3a+@4|7Do4wkbVGvY%+`yFwd#RSLV&A(tHST(*qjGNRE; zm}`-yYwW z@VbPY_lckP_<&Xo9|pqx&PH3GPEKX6V}>Bhz+KMtrbcJm&s5^#alKcghOLv+rJUcX zuIdv;Rh5Yh#H*7}u~^s^ScB;%WL#%`ud^CxCi}#loR_tQvz%u}41$zn%$jv)rsaAg z2qrwzEs-l*EI)Z&N}nu0ACWAJJ@zU|`1#I$@xDisSae$kfk=JUx^_t6 zHjjbpqrO`Mjvj{(4GCXcuFm3J4z8aw${7}89XX22Gn+IgjyeJh=7KDF$%Zz6PHVp2 zr>D>e$@>U^^5$25vUJ8<-Q2%i53Od7x2!qS#djKik0v++98yp+Wl4IQQ>$0Tdtxdb zQa;{&6+LWNqaqD9uO@x>kvk18z22_S=HX<%ISsLY?l2La5Etu;Ib`M} zN;2R2>}zy=){&>tXN0cfq02WZ&vb21+-mgWUqnSXCNh`Z9#*0=FbnMLp$G52 z`cyaU$AxC!Lv}7=;qv-DMIhWGw~d7}Mg67(QV;`Gj-nL1Qn~S029D1f^w$&eAg~^Z%w)HcLEc36IFP^X=+ix&JB7@NrMe~gANq0 zgA%!u6#2-opZ>N#UwSS&WYM7GX)`A+P|TafvSy1vX5}UF0w>uZE)q8jhHQ>4L|3618C}gpne)#5}B6 zy%;w-W@dW&EZD{ea=Jp&R_m7EFaDd4x{%C0n}mFW{CpT(Y!NIa5;b2(Ozq)5v+|*M ze6k4#M~#|_O%=;soqvmE$!K~ASFClE>&y0CX`36uLFGW`HA$u>$eA{Slzg_@k2y!_ zm~8Ye&$Y^f=&p&n^%=mfjl+Am3JR4w{}TBVU&@9AxUV^sqCUq@5Cq6UOizhbJf+E<@_X=e&wOQ?z`&|%1UeTrD#bOIEg-&Nad&6vKT0cV5D%9qnq3xr1-mv zSk}$QSUZgfZ3C@mTzr=M;K?NLBoIZ)5^H&la}vM_M0&v;lAFYh&<_A0g#kj3$w6?X z%-m@B*$^>VZyUV&*C+h|#Q~g_HL2S#dv!~QF1kC5M*%-y7D=;LiZ+c~_K#KSF|e7N zEBXgK7}@>$uB}r%SC+80+Ubb-%HS2!wajQclq{wKKE+9~Cisu~X}R z{ebsT0QpdBE;#h+-!@-dY{+&x!3m=;Mp3U_8yU%wD7`|WjAt525s06O@S&Qhv!N~c zhZ0yxQX4ZF1`LP`K;2?NoJ3tkW`)8`jdY}Z4dvPwM6#-b*ieOY&b4WECg#Rf>30@9 zF++KCSUf@kSuR?{R)-%jBfppnE$q0KkO4tmMUv^xosN|8*2tB%Z^4RSMJQ0IP^`}Z z0CEsS-liy-DppryCcVQ)AaB(#^HHA#G@X7yXdde;vQCv~XY`l%cDxJg*DeW1n zcZ-71qGynn_Ep@|c{ypu7qw`iI}VgIWyP#3Nm-i265O#`NX#O2HR@To98~X%Ofe__cVgz3DI^xKc}Ky-y+afJq534p zN_Fc^R8+k(yCoo18b$ens2112?m$tZ66xi?Xh3F1?yb!MX)%;I%u=~9dQ0`}+K4-? z-{KR?=2Y$?u^smn@7F1g7Nm@rCTP4_7&Lo0ol&*y~2 zP%OJ#t3=}V$qfxhJe_3N`aH5W%X;9qM*iYBGY{{9>~PO!aFwqOJgdrIJrRi1^=1Z6 z_Z?Raps3-Ad@OfSlfiEklkr;Q!KMWSWf6AfO0htaBD@R0{IkEbfVR~5Nl|-Ht0E1c zF566c^rjWB;PX6^(zXMutb0a&%xH?Y5sPINkp$C;|IEYFJ|rb zcsG3*C8mo2Ll|Yf%6`L0<9q3>wwGYSZ8)P^k#Lc&>AS+xbv{?xqXIQh@+fWA%m9!( z6YL`OQ3=+5o#893_BIeH>nf1$R22-a#PDKDODFq%NabQzn)G9gtddhyNKiD9V~Yix zE|;zRhK(=*X~`Xkg|pZ3y^!MLha?s`a)hDU5P7+Vmk?RIw~Y1tMHg?Cl8YAxEF#98 zoHd5)kN)@vf|WzArjaW_tC@_iF#g6pUD{eESy*-;!EHq*W0-5x;#OvG-hxnH9%{p( zd7;}Oc@FQb_q0k)+sW^QU5ytAk+=S6vD;{8yOR@bv}u3(qvGi-Nsr7k5od-NaF;}H zr!(k3W{P%;_6c9?fLxh-gtk6m_W;mrza2{VRi6AbWoTvj534^^?RlE zuO1*<1nrE=J3M3uKeyfr@~&E>4Hm~fC0yb6va+TIv^uOf-P!V^mwIS;G-AB9;;vcG z^pxG*lRF1z^9rus+$j}!XLNLx?_CyU4Oa_PsUAN_eP(3L@7@UnF(Fh0@d=Al9jA%} zF9S^GFKfavOH8Xh0>gG1=D&mCpSNX*0aFrB#BtG@4KdRl#sGGv=)3l@;m?3*V&cPW zsr`>Lxf`Al4p}lFlJK~&&5Z;J;17Ee+rLGY0%eH;jXkK3D}aY*x-<+H&pc_ zvDP+{6N^m=S*pIeJBSNtZCisVxp7>Vqg?3YufTu;fM9bXBS3!e_upuK9>-5xXP`(A z{JV;!n$gf5M8K-suc9zL6qrz)=QG+z1~IX9dA8MZ1YH`7Gb>wg7wW!>CfPgMY3Qdx z`(p1m)oGJd8mu7moC|ED<(zi0$5d_=7mzk_kDFPa``*J(a2*4RA5=aU?)Bb>otNN_ z#cRqr2`QDOf1d6JZHG@%(n*(z`gIU`z&9>b8aGw2o~g7TMo1?SYeo>uadw1h&GQZ- zkDtTOc!;4e^#0GPskB~;{n8NblxBblgMg^`!J9=T5|U6khVfx=au)hmJ&3+`qh2K+ z1KSi%`l0MdL6O|QoD|2qg(;(!uCEV_+nMi~)&m;q6ZYJ5H=_>3&Snd99xv8$DXCw* zR~mrse>EsZs%nU@5wzyrdVbQgtt3o$1s}0U#>gT4K#L44Gus0v#Rc}^M!z{6zh&@j zayw*}!}RrtVfZhX&{iXgh_L8V(i55o*Qd}Zw6J7dcAfm*&v}8=R;AhC@sz*GfElb; zphpmsVPE>NV#L4ej#bs*&7LyK5M=ArE3{)pm^d?Sb#&tX*qfArEsrhn(HWA|ufoa{=EL+fibIAn`Fae+ra;RQy(bK1;rGE>-1K27=-Qy8H6{#8Nf_geO&N68PJj2m%$?Rm!C!K3SYMP03w@Ci-vQB`h|*{*&c#`KiaRX<#>>6Fy@5L1x#70<)$u%NpP~ z=jxmDG-Oaz!I~WQM)SxAQl#Fuwg6C6o_adh5B0i#!}3lI!1fws8{s#K3b)HfL|7Ra zz~bX(9v*EzKMD@13@yY}!TCWsLpo>zTJ`zV%J;T z!oh0u{lEEuRz8JggJTf+N%~!;a|QdZE2^?~r)w9d29S{g>b?)e3pvy$n0^?Lv#Rm7 zelJ8N_|CGdqJrYArX*l|%{w(i(Dk8pOfMiI^1m0vO&u=GY}vEU&tPD7)6haPq7@OX zJpQ1II&9pR^AU12_?s!sk9EJfnr3LboN^)B{N`y7IGmL9SwFV;X-w)$wZQ>Yq_6Ce z{m%3MZ%7;z{RkH#{D5Fo>4qH_I3`m3J(P>aMt8{mY0+s|4t5O#CsnNsTq)|%o$o`; zzkGxOho+{1Me0SjbTS^g+P=A1Q(Au+GW0c>KMV-p!VnmqgvBw;qQYs=S%<9ZVEw6F zBK==B>PNaaWO;dM7=IRK$`VrHDx1)hNKk6;^#cMGxM1@=v_y(b(9YkIXGMrL&51H) zeE&^Ach4n0UR1n~Oq+tLc*vbDi{{l|bTk1_d&aELm&RZooo}pIIM;3BFBoDjWvXwz z-C1Se0p#DgfQx~I3UEY-Dwt*+I`dg}(I-asw}q)IhG50T+zQXv-uwM~LRhSVKMj(t zvs&zBvvrgc6(i+E;>&;eQ{+nQ)Eh}cPX`-y#Sx+POt&+fC`8A96auo8O$HFD{c^TO zaO#`WNGE3vs}fUq)JGEL|L$okYi*0wyK1ej*yqs6Y5MnUp?-MzI8wvRUqitYglI@c z0MMdAsvJ80HUJ&I>54|=i@0=^CJ!nNDX~eMa0ge8#nmwW7>_zv&C=&=%y5iAKqa+M zW&tCj$YAIG*hnUV!q}EaHyt5zX1=bi(-(_D0$f~aieP~B0~IP>RJfP%>lfTOa!OzT zLFQ^G7lWcT2#a<-14ano%$P8R@`r_?%Y8A6LR`tLJj(4!@hhAJf{wQ8CsFYbu>rhp z$|EiJy8o@eN;JfZHf1~3@tSE9P<97#z)JV1f&1=ud066N?*h-L&y#;k@IFsunn?#A zvuybew45WE)Q!`UyVu>*($VImH)-g#+5wg75-T*LWN7-2Z{^9fZc52>kHq8Q*4{An z)3(Iz!0zT_D6YhHS|}zGodIouHGPc^1T6cN)qp?z-jAI6wA6LYU*}#(Akyk#+odfDwZJ|~7G<#j%S=mBx zVnq1FQXSI}C7H;rvDX{yggfA65XkHR8q47{j7QfZyDFU-IfA#!45ge=v=}kg7(e$m zfeqm@fdiUQs@wz>k=(?D3Y49bJ7~>yGbo}cfM_?pVs0U{Mq1PpyJt660~&?6ky1sAa!(`S#Foh+?9tuy9-L z@v(4zhX&R zuz$TePegz+uZ;k0_$;1z9f8XHxl5>iAPQR;T`W%p;tW1gF+;SioK7T|07Zkrn}4V% z295_oP9CfC`HtN;mn(RKvRf}h+5$nyGc7tT@wJ(*Xh;>=~Q&tNKCg=vFr@;*8 z|J;3e7hrZJ(KzZo6Wb6_0xMX=-PT5lS5tGO)yw0q-v^IBC55<#pZFxND0~V!krKGx zckHL0WKm#J$+^N_imW71UNLDep7FWZL}!k}_i{)AF4N_DO!sVKvIP|P$NDI*_6fJxH+|V^wP*deOl>>hFL*iE1AGck@g-kPxy54@gyy7ZY+s z+Jasz{%Ec&E=7m{Y7Mzq2D?yOZJsIMXY8QlQFS21hu=Lk`?!}|YAv}p@!F=i*f~24 z=k&iBC-ssX=mA@0cwP4FsT&=q*Q({{6Nl4hQb06(3=A>#1(NLjtF5MTqHE|6Y~qp0 z|2i!1&M=qM-WXRNAY4#7QN6npo4=Ou(86jtdtv9#pV^y}e#;WkV*zscm?KIma^hr+ zHyf1OMU1h-1`1(6HtF9PONMvdYbo+2zl|bcC^cT4A4zGu+LZR4S-+;M6GEuJ9gy+5 zkgODJrz(55B1i>80R_Gjb)B^Q{l?wg=no}@H3<*H$uD2|JWFRqR*t0B{ z#@+X=#Go!X^4!j<=KGkG7y^Q6uSz2ZWNfX-gkcqk(EGlzAwOxj5mS-DvB)`{EfEQR zLefTm(6&R0REe#0_({+ny_6w%Uo?*#7sxr%(2bbz%rfK*G(Q=eqLVoIcu_eQ6he|b= zdsE-O?E3JcVs%xj@*{b$v1Jr~=UV0$dY@&1Z_LFx!ajFvdi&L*qE7a#)HmXw)6-(9 z5bg*pxGJtf0Vv$H>Xf8;n^t9QM5w&_adD>RuRWdzYAMtCT zaQr~cwlF+gh3`#k1i|W!dT;_`%DLBxB7>g#k!JS2Ga-U=xqXuy0uSl3ykU(D|~W zG!bNXOzm9N1=if6{NnSt5PE4WjGT8ud9+AKn8%*z2tX*fDp(iX;_a45QF;DHxMYFo zs7+!_YsjDf?VIApjt~v_;GoLA(VOXbFAxBr{j|KSJJMs^-o?{XCb%9(ZQwYgCmsT5 zn-UEfp*B0szi#U0+hs9rn2k@j-F^NsTIEatVcMp4AYHJt6mIV>fqT>4TFbQ*^3Fc4 z9PK|)B)*&KD};aTNwWVOg8KWOEg>>26O(Mr@I|kC*>_ZgUIm}O1y9Ih<>hw^5@8O- zi12d!RP~qm!;CEj{#G#}!fONEQim28W%u9Q3dY!wL z39B6jpzIR-y_W-S0J>34h~3-fX&^fOJN#-}5%d=$4byuGl;m*aLmL;C74Z+B;#~uJ zojpTdAXvf$JhHO${#K~K5k}Y@!J$4~+kc_KH7EMFMsg^T*9_}WM1GjdxOCGy+W&w@ z*dbjRUaf&x09S7i9-M3CEIWe7q<_7KO~MBr8_?(na3Ws7yN{+inx(Urng9K%HvFmU z&!t8nCsrDsv?6JpAg43U|5Ku3-F>-PAMOQ(G!&VFj2xDvSa)_f|B=V&CK)?5)d!Da z?2SL6<_=DQWl;rj|BYgnN>~SVcFaaBuGd6Mw=jy`d8`MMr`Y{6|-cxAgwfr2`k^M5$* z5DEW}B~jD#8d*cF?S1R0dXYx;oHK>I^}BW1e`c#>1AuDA^ulf`KK&KuuAWl{tCwn) zfG2ico7jSK|M$YgcyV0B@3>WkRx;~ghj8+#d`5>Mp=f45dwWp9r^*RC3LZhf{6mMn z2J%;TUX#KTiPZk3EsYSsm7D0OUpHk1p7=6t$@?lC-W3()bRMpXV+#esLnp=e1aRQt zmH9SeaFd&fKVbG_caq4Dc!w-KIExN z+kZ6kTPDH_&?0Wf zfoxctXXEkIw=;IE44+gX>hL2---CIEp_^$L=WG(=mKZu7r@{zPopdsmh*G zCFX+JzL!Y}$C*l|JdKOmdPSUYY5&s>viP?VYrn)sgb-wi5dt&-%7ixL(mCF>|m(hw!3l1wKYM>B`K zc}v||Ym8~TX=0KTE64}V(qv+ip=f939#ShdcsU(ZZsKg=th006ij=j_g_ZIS^W14l za|M`R>0LtMI8=#3r=*D2hDX*_{k-)odYWWGUGIJtD&g*Oxa0p|Rn+Qz`Fjp?+vi9- zIivDXKs7TpqpeaeF6J9Sd9$mrd99#!Q0|mf9WWw8Zg*qU&+%-bAqi;h0^Os}v}z!< zY<4}J#9hjyq*l<<+MaoltRhTZY&ikEZ$0)fu=y_2#wQ>^@|Nxcgq1z97`vCP!=>c2 zE)ZzPtE*RG4ymeYMD1tGdqGsj&dyezoNC4dzg{HP?nP2&mLUouaU}89Ho3n8MQB3S z>o70*Qc}x0pXIM2F>FCAnTX%abUqTEEc)_>lb%7`Qx(f7Q5=m9qtPk`yK7wx@tv6S4S+> zj+Tdm!Ma);OUwev+ggy^z4YKZHN*Dqoxzf2%_>K8jQnv{EokJifyZvJfKwL|n_-*l znn{7d&=1OGTn_zI9esU%$IGlC%=5ZrkM%7+76EqC5~AjZtgreSs^VGc5?=hA(Q_fk zKOLvQJ@acx>0dD0ywCdluGL-ay`A4~e=-syLR;v=8)2w0RG_^$tsRwiTDFLF1ir~ww2O;P@8yYGcLDY0leh=z7NJRG#Q z%E-r1wm$7)l8j`DcpXg^DY1y^*)Uri9kB2?Mf%;zFMF?@=cvq6n|My6Hv9x?eI2g( zU{K#WtCyz#aW`a4U~9+`&N^3W5FM?pt!-kal=NnNVE}@I?RWE&lVN+a5Ez zZ)R_UEA+GV4N~u?b6Qh5wu0DOd~10{bZNPAo&Q%0;7Gxepx7OY96)n~*zgl}NP{lj zhcA7iUD5*;)rObEtiJ_+w{7|So1TIo*m`Qvq=B8!{wocib8f2IJA51!N+&_xR+rmB zXyiGI6SS5pYr)URQGuTv`e!g!^k&k|0P;>iX)_QFXQQgfoP`q|ox$?y`Jmdep-xI@4lt-#GRjP?W$VbG}m(wVBr0T_>9bhDcFYoDviT% zsrh(;=V8>X)mU)H?K@B-9D-IiBai}O!c6=9i>L8CVSnHHTDJusUu|pvtFv`+F>|0I zxOnmHP1{rNuB9mRGN|hD>D<@hPP6Y23&ryEDYU@!&(+JG8NWjq zHlsZYIAz&=YD_u=MA-3r;UK)hgL|iVZ?10HJx{xznHPSj$xY{nBY5?)=lSzP&hzl4 z`C}c2_I2{{G7x^+Iw67rKEJM5#X(w+T+v3~#~=P5w?-z(pmM9B>b7#TG_dR4QJqzq6B+n695tL`d8u7n`FSftsl!Nv&7x%b=(eZW=1SF|@nU@Q zeAV&?#%GhaZe{Z8wQ{zN(H-{Q{8>TYoi%=nYoU3}xZmM|Sn)BwGagj7-p)rZ`(4k= zOFVtV3#wL18U0)=JkfDW7GHRs=ebtc zrq9jw@<&V#^KDuv-4!ZQ-9})nqEb=imZHS`64`)4RY*@gR@dpD!iP1C&{DVZF(~3?vABdDHo(01O%iTq@^Vm zkd%J+`{?ie_r}bfx#ylcbLtZ*8)aI!eYM6j%W!~o+RJlr-46d&N1s7hoP-7Q(nk-AM0 z^!MA!BrmNFz6l3H8)_RPtED7or0L9}TjTWDEJzH(RBMe!rHPr4xfYtR3isMgo_2*f zV~H|qNrK$OQrG=9M!inZc3QRK_bIkMs^}SWs5Kv{7QNO%;~HR5$NKV)vX|$KUq3-P zh&b~AH&e3z>V07H9!1!kANB)w^YKatsC>eHt=ntUJdhx+#yH@o&fXnYXHvcJf^gN` zN>y2XXXE8+4_OLE*kb0r`FYRrua9S{R$k4|aWCgRo4{F8*Ro7toOlB^vkCLxkH?Ob z=X>g$;r3HpY6ZTvB1WAGmd2fa=e`_G_j3+4%g;WP6LYPtQ?b^zE?5P|;~9A60)?dX zxk+}<+(Z{fOA)X3x&3JN!@|>L(8gHa>Gr8%Hukjyd0eL|3Fk4ey}*IPaZ_?V zx_af(M@QPBtq4-wc5Hf_6Rg@X0r}l$AI*m^g@B4Z@wvwJTvBygYw;hnKTU=hsUp@f!y5Bz0n z5CQ~Z**M}LB7|6?8m7vjgV4mHQq+N8eP4?&6~>LcbOGM z$+%9L%N- zrdZl(*DSbZXofq%n?9@7T5qVA(cpj}Nu@M7TbEe=l6eF%NnOlfVH8@u2vnQ77X1q+ zC8i7)R2%#}){t0}t)DX&SwcGo}R!_wQ1!J>9rLowDMbS#;5OT+~;NHG^ zczJgN*%QHortuDty^+gjHZ4gbI%_z4Sg!Uvz5Ja_1NeHC$WPYn?+EW!=UlG6S{>kw zrCw>XSk92Vk-6n-e$C$+QtfrhJZOp$?|K?(uMlOCZEVNmZ;{&5 zV=Xx@Y$KYQ9lku?r^nW8AIM`e8PJdQRm95wiDktVlMZtJrXPKb9HH*0yb{9+e82PK z0@A<`w;bwNTNsw6_oqXCXyZ#&6GW+D%Pu~$XM=8L3Yb%JG}eNMBrZgeM3z_f0Go&h zs}{tz8l(ROf*7_T@`lZWYH(B!z3;q9iy?7d82Ew`nq~(>3MPQuUmtx~ZnDr%WI_@` z6fZWzG~>)2%efhT?>!zIFs6Xn^YB%zxN#SwCfTaf7n1$w8G0Z0C4Ua-32AG7%ye zP_SOBrsnQmAxshD6$GK@0{X86u^JHUvj5$kfJrNz^h-Mt%7mCbS}Mu%YHC zn|(I**9+beQL<5t$_?|1-q#hX=5gedx&L(-VU;#y`YYs>iUmIX*=#H>=GRp1Tmo6P zownmCgC>OIEHuX_w!03_Nl%<=IWrP?AxES!7zh3gw1v6E}5~N(^obm7Y zB}$|#7r}GqO7!@HE-8!~5IS}(fq$&nji{_yEP2ML)Gw1F2`>kWOv!xnS;A3&Dt!J& zrK2JQpr+{}e%p*=s~dNLWD&FH9X!t*mU}1g@csdDc_b_dqAk-1WrGRi8XUx*y;;BZ zNnvbqU{OYX)-`GR%X{+v^nqsG_~f1MPNs3EdrFuBqe0cx0j_Qidpd=IEh4I))nZdb zeRlnb(X^|hd|4c20Oux0B^cR)Ds4I(U{;u>o#Q-Sfd%;6;i*4TcyP}4CO|fd;KOEv zXOcT^vIOt!&uG+=HATG|`QC@H^}DP10;9WQFWubcM}JV|M;{)gf^h83?$kJaIP| z>%Qv=Bd=Q>vIsn-c|7iZpn0UkjzVRFKI1)Zp1<4Da9j!6zgMkk{N3lLR^>66uiwz& zibmfcQ2=6C`1`>~l%>F>o#1+`g$9S(wJ()g3wD7ST5LW-;dYc`$1Th3I+ZhxzyyY5 zP;s<{_{X?ZwmI7yqt}Sql_YduS<4v@5{qdw;#?-U+dT(70wz52{Gr;f)HD`Wjd&^W zORUX9ssHs8S!!Ao6_v_qU)Y$>*qz5HbXQTc({kgsXZ+p4Nx0do3P+_ZR&>xUhSN4C zJeCga3H_%Sfp-3c#OYj3jBU7w@)gkftVx%pvEIWl+UI z#tF>gwCNxJ)T#uEKl^$=N6FNu&}B9?siW2-nj0*Dy5pNITi^y!g-G z;$J(@%#A_p2WFFNd@*DZb)IEpsqs{S`wY<%ujA(p>|klW#YS2{LRpbL=KhF{kvRp+ z41vRWt;Je;YSf8bJkLM16s?wjd?Iux(yebNNI$wgR)ii&zxE)>!P8J@Q_~^!0hc1t z54b=Whst&+=&|WA>8cN@je1VqJa6|TAoPMa)R8N^7{YJz@9sx2(EpfRcme=);Rs}7 zp#O)pM2LWBu)gCM3I0pJ)p%t}lc$vt_(`d};26xZiyS=I#T9cn8k7<(IG>3X7!{-4@ zTgO#43k6=bf7s@`%qHy;rXYcnZV84@qWNQ&9}TX4hLv8$x)&f4us)^HV}~BO4Sem1 z)DX;3=f>D)N8ss@)A$wGRBuHArG~=5A@dCX(tW`Dl$HhSvq4hpS>KfLtRt&#aqFu{ z4O9BVU_h|~Ob`iMnm~}KFttiEI8yWy&uSq|5nd6Q5c!if{EyPW53Psx^2T{30BZ?= z7?T}}g#^TZu%ShzvAK7Dr7_2-nKPhGW5o4veCmJ_JRg&E;UUZRYe<~tCV2mgl15P) zSP2u#8So($6pqidO9+fFdwqyB1+@7V=@46f(TDgye;VmwP?NM_f(a5KONSsQgKgqR z>&PCo>4)BkkCe<28*spqc>}+HLIaeiD_}qSW%ddQqmKl0DsuPt5EgUKpt=I}z#T)1 zvKx|Z{5~pDq~a5=b!r$%q4b7x^0z*D@99-4WKE!yha(Q4TxyQ5fa291jqjQ1^;4Vz zBf$OXB%mv75>%8nZGfUVK#umcFI9}{jBbj8FoZXhVyLe_SAuU(l_Z&kI)vu&D6)Ir z;5k4n8;1}J%9saCEMb?8r$|@$34!K4o)$fs3gQ9wsgMC*)|;s6J~s8A!E2N(fbjV1PKoGXHd3$Snd;7xv6c3B50Uws_3_UIZIficM%a^GVo-cR+qQC~xB6y0XWI!leJy}V)&eBq6CmhzP z-lSce<-XwPc$xCqio51B^U|=zio5#y`V;MIzE0?B%&(z3#RQ?JwG#UM5eK6fF&jAC z(c#4N4h41hZ5*GFtuUI15C)SVeaM3abucYbC`B;uis^NB zaxy&qu*QTv(}N`qNVh(5zyXZZg%HTmR=RmPXurBmBbp5d7pMIa%5|ZCIY^D~+upwH z*A9~*Xb+6w4^;x}yce*?wctImhJv@IK$2-?!VD+`gb7W}Ld{+|TdcKQxxDJpWO$0$ z(f!%eN|@1MrfJ_+&Xw4YuB^nELi6T>`9{3pP>tj@Eh<+1k&9bBKVH_(+c;=!;yh*~>DPc% znI)d`m0JlOyZ?tV6OAwSZ)iyuFTtE2xm36y#{zXXt z{x**$2Mkn}XJ2eok@7);iot>ylO7q==fVnY5}7k7i;s<>5bQyTt^(PG?&AS4=_s&@ zfeb=OARFB9Zy=FhmmexZqD;w{kjZzRP4`5G6O7bxj`-SZkw>^t$tRe(jI$WqAqqr_ z?nx*U0gEyU{FB7tx4eB=5A-Am}wI)f+Jj<6r92L%R}s4S%>rEy$|~Duyl`Yh;3cqR$uz- zhX*JVbzJ89O?Oa|(PR9=_`~ITr?}hZH02(9G;`O98Ie1Rpw=Zioimjpqt+?y6rQ|! zQXKjlTf>Y!g)k%@ze*t;&fROh6e}4ltwLqul@?DAH>>Yd2G#Qib02IT!Ph0%pJz-) zMs_u)RbNlcwMeDqTWO4qS{ji;kwzW5(5&9#d+9%y&!%D@K0^80`BOpVa^ld3-~ z39Hx2pn@@N+w;+StiSl*wJm2AR1}DT>Z?~NO>)-npSt)T`%8-=vh%4~08*q&~ z8PoLlZ^i2{Qf}jXw%+cC<7?TP7VRA=-#vy0?nh_uYYgT6;r*O94Z4`|i~D`mZ6=bC z`uDSUrw4Nw%MZ_Spn>g@0k=B}3GBTh1TT;7$NZ{H{LaTZN)%E^-r2SDXE~&4r?{gl zzdk8Zz}{T#zFF>X4thujS~M)LtS(ck>@KdTZ!8Y9ZLec-Imy6QahN znwnyEd?-ucJATm%-ZxNwk{Q`^*`i+t&JBG;4F?`x$DfbhI(8Y27V0jls>{1n7*pU4 zvXg{-{mc|W2lFl&D;0t(^o3jcvtXk{&o*Y6aB@AJwzmhu=N7s$enUDjybSwLv*8A_ zp8n|N9uQ2fkEkP_BDj5k26|)l2FEq{uDZ^<*v&co>UXy+-Qw~Xx=jR;%1{G0uA~Y_ zaWF^nVcRk#$NE#xb?lst_p#XpJ#*pl@p(%t(WHFYAQ9VR`+jS~QFco}2LxL|Nxyw@$ehZ8 z^o(=GI=)KOucnofuO@AXkJmtdZB&mUc8}Y#Z%$IETYF-9OQ=NiQ{Ur*-O0-S`3-x= zlgnOn;9f2s3Y4~Bt8*=jRv|}Bh}*nF1S>3STVfuL+o9Ui%R`(sBGwM$$@DP7xOd)cR z)B#->q@P1os#rAz_EsrM9*~zkPdd=YQib&jWN1Cv4c1U+K@S?}> zmp&~pHi^%~3R<31p7jAIC?-mJgb*tetcM=uS%+fYl2d?(GjwtCLE)m>E%0qiBEk$x4!2003)sGxYDfvCw)-OPwzpN7960g zs**7D+t|#WA3htSq-h{JY&OX@)Q8i{407Rm(oBN6j?m}qM+ZL~=Fw!nGP+82BvU*z z^s7JrNSCdXQ}O<8VE5-j(BWYXq+rqig!}2tDYNEut~MW+#{S#NR(8eh5oejfaM;7C zo4>y&xfp)T_H#eMIUqaTnJ+0|p`@u9sLBWVZR1|gxSm$3GXWKcVO^t~Hf zFnRhlc*52Bxb*Y*PI(6mazv*aD3ReiLPhF!3;1#Lj3d5vM9n;lSAe=zEWec-lPi@bhZ7l}PM{O?>h0*Ld4>!?x-E z_RZt4fy5r$M@SWZ(5crOaSTtPw4BIOMIy}f0d!mtsv`{29i9&G#)cN%srSbmLf|uko2@1XzS+ZOpjG=?>{?-ejvm+ z)LU;~N_6oIyz055F?rN`y4l?IdfHqwT)zssFPSq9ygdpvcCg&7ci~PkstU(^wOo>} z>whr20>AVa=S6-(1Ru{_9;8OBZPNxx@dTHmy&?RaYxUw&H`36S)V%!aB~(mJ@r6^j_|o>ptlU?=tjTkSxTMdE!u!peNp&lCDh!Gi_8DCy zj^W40_E!;RU*HwlwseOeOTEKJf4W?Xz5*sTRRE{u;^Nr|V#!oxMf!RAKDw2y*n&QV zC+cM)KVq3;6|+HO@csW{0ia74sspuAx=NUuN#I4tCWESE^N!BidGfe&i^V2+tT8=H zN;j)0f<75;J#-^5)<{+-LCa&d8DiO0d z`M#ccM~pnx`HfCbVZCvM5?+sYnP!}g>1-3~8m$S?S^jhZ3@qeR*T&*aYc~(dYw|9_J{$OY?K|!ZE0D#+zzS;U+IOEv=?HvTR zecmctw3%{j%=4Km-`&UeyN7@QDdv{QWRe{^lQ)U3&bF_2O>P_ zB9k+2vE-TY&p9n$5-O%ROJz=2t$vvAa@)#JVcgRvPVkRIfkMEvX&J7Il{g9V>^_GW zLDwN)jn<}=SY@c?QJ8e7aM%Pbh%JgSXAkCpiz=mcEjvpjXwursS(*`}^c0uYE6dBv z#|@r?VO{iJ%~uZNR{SllzFn|JNl4jg#XXlfGJ3T|JglW1<<)(Sa3+o1HZ5IqN**{c z)1gX885UHgW0McSB+zsGF8AB4KujMUc)8GcbPIC1NbgO{y!M3y{oqTH>)liS`~Amii%GKRA<5!wh{o39JbQe^35=SccpjjF=rkkaQ3_Ghs~)VF65 zt0?YH&Cyd`KarrbmCYgO-NM=nsGCW*s}1k-ckRuR9-E^p_Yw?Srb^t90MnxHO}Tj= zV4wzXP98({9XE0_W0XQxvu1&&VWofD8)M^7U5$ z9Srcj^n{jKUKxodTX}X#@V{eWPZ*GF?{E){nd!ZsuIT>^CB7bqh%0BKmm*@Px>TBk zuRrZhbhta(%&t)~y)DRg&{nxz?6<9;52I_jd5%+t-E}@^HS1^FWhV_tQ;pdAB2<5| zRFzpT@XO56#+3PoJ}f`b!e;*A&p_B>tJYqI1A%sobw9EKegASKY zs_D}>jFM4Uke^@JaA?<#U*A#h6Q$6LjDjJ{y1-Y7i~Fhk>8=))3W^Ig0VflWN8EoZ zoE{F>gJ8=`xX7h)_-2Q2VQxR67tzwPKL~HCZ5W%j^jy{b&et@K?Z*mycIM9O!+#@o z33&0sUTvOTE<2ka<0yvhZ$|G0OpjyrszvZl8pQcYyM)AbmKNcLg(MRNx$HVEDO+pf zx?Ye1NpX{j#5RYKu?f|M?2|qI{HCgmtuE*NXL>~@*&~PJw7WBIIQ(eMqP?zbIDOvx zXSwx_62)RvF@eO^$=^W5E2>?_ux$wzDM?}ecQo!LI8I#;^E<8Shk9OSC)baQLA~EZ z7T&U#Um1Te={R%M#Yf5LK0TvU9Vze3%{9!*%^UgAwU?R)yPU@)RnL3X#&d*=onGNv zGR!t+e%54SJ*qBjdxP4k#ecJ_o@!yYm$54yj%7}I+9t>)!B{FmaBL{rZCix%KUBJSI&# zod)Hc`CQH^L))xjZ#Oqv&#B`<=b=@4&37y$69_*|CS#~nkC$4cDV1XMq3Zw{9S<)I zguUvRNsz)AO^`wh6Sjp&*?U2?iRBSdPs|~H24(rVvX}sb@qi7D5x2fiz#T6*ni193 zFpfaBS7f*84VH{{IhNV8C=xLAb+?TsI&`AZK%A->Svp!bIxWp*-1@);LLoJSNy>;R zO%63sp%ZN8j4;@cF^bLqCPA->U0y1;9ha=^{PGPfeRgFx4h$`wP7M~%y0?G|@D2P* z=Cm=8>hF=l>Nih=7V%@I5v7Im0C^J_5pEi3#!$_laT|}Vi!#MBa$jENf>n!Ak?dnR zpfj`_jOC4TUqqOIn5bXuRj@+BiDb!8;=fMQ@Q$;xvJqZGQHqIWpMP=4MR;M06o58j zlfkaV;mpq7_JRHQI|%thff``3z1R}^s7#w~vAo)umnhZR+Er&@AaQG{wq zhGd?Umu>aW(CP4L0oMX+zUX@txfJv~qF#h$+=Y1UcIXbprt@~-P=A?7w)A(iqMffN7joREZ`bV(Tx5iLGr{k@R*&fvHr%ak1R|U=Ae>8EL?pZ>1~HFC77) z%-H3sgem}$1l93K@dFHCjNoB5rf~F!`ADfh3H*M)?VP$QH+ei(B=L;JY;*xYa=;YO zwwKJhVzQ2lD_pL@o-$n=Za1Jv6)7zhEr!Zj>)M zYI&gs-lWLgeU)Qn7(OMSoHHFxq{hl59YTvFr`Dh_z*;n`;Inmr?o*@#^udZM3p$2!k)ZhF-N~N@oBO06#6|LHh7b8zXLMKUqz;7yWSr6blwf3#7R7{1O;a%*ix8qh%}I*h{5~@^&T(6;U2_)gD62 zZ!%)Q2>ES;oEzXrjiyxW!Z_*qZecg|Rd&}101$Q-RgighL?=1KPDtySVeA<-nmJUO0!#^(rSGI3hP1K&@q(Jr%fb(P3$k# z7mOki=pf)P@V5}UVsH#~qmiFG6w-hKy`V*8Ni&K3;Y4LtvA-SH&ZfQybw?%!(-vh| zsJ;GEqzc}rv=LL8jy6CYHYbvIIl2`c*F02IxUKy{p%!`@QkY*#BCDDScql)=-fqHY z30x}JoZgTicPW2Pm#jJR;h8iIkmmfGHgnW>k=R~o+k?gVK#CeO)&=UC>Z>eFzl+Z| zn&7mD0-AAec}xHZk$Hogf5J;!o{Y@ORyw~@M-JV$L}6jGnto=HDthoRY7L- z-9oK*+q9%|^?wme_^zT0E>wUooE*4(*anWtvHiggeIaXPS-{7}~z@*CqGV?0Q%}7^m4&R(ROd8AV8=G$gC`vQ?@Dr=6 zpqs+Vp5H^_r*7OT#E4j&Ai4z;piNFcZ$Jx%4sJdj0PGg|7z$I~--uJhkf$sF;ia9D z+Aa2xe@`eg@)J8J5QX59U3nqAjA9j_&?7y;Q;8FoLxc8(!%G~riM8fx-hqaB2yX@> z7Jx}EaA~ms+!lmhD%H55fZ*gZMptxQTV%KYrghsm|NQLAZIn8eCFQtt`XXtrHD(_R50)WurRZphDd?qeMf910N603n-{?_XFAtvncCezD;mUF(RaZ8h=C+4&E`LV zY~LM6XhmYcPxln}5J|ueCD)XSHS*hR$%Sma=4=aoez+8JcFXC;x|gt}37ad!S%I63 zUs(2KwtHt;^5E~VAz?rxM$H5n#!s1s1bO&=S}mg(W}J%}hKGe@+X|19#cp|nPY;we zvEyp@Zg{@`b1$oegZ)$L#4uxelnZIUmR8E7FlJcDgXGxy3x*(~6|H^*I5FjEz?bJ~ zU{o?IXH8&cU071NGWk)1^+F)mobpY*^7pk3*9uf5>jQ-QQPK$Y!8v;=Oa&^RMniI& zr@g{Z5j)_L5HGFPGS)Dyq;z1OH{g*R2~8lxdyy|mbz~+YKtu*$WnC?c422~FtYy+&;up~eUF~|-&7V*2~wNW9!fPv_J9DVV;O%4h~`xo+0NYT6j12hhq z{qjr4uG_3;90)KAv|&UgD*+Uy%K{V@W%h!Ol@!H`ffL2Se8ZU5F!vlL`P_O*Sxh7a za?MHLC&Eu@bq#l#@1tzppt_myA%V3AapBl@@{)6Mdc%p=#1 zayeWya3FDDOTEVFMxS}v>!kXqDF?aYa1wTz9uJc|Zeb+%YhpmL8RBdEXNQY&PJg$L)WPrh9BV#T^N&p2RLjmeoxmKL`Lp9>)@^bg#t#7j2-jUYu&c4YwQ&^@u$x=ICmF6D3#wVP_bA^HOHecKXl|dP zVEh<2<4_H2j+9^b+eMBEQi#=&KsZ>xXgf#dt&YJRn&0+&x3vDIrAs)pa!?R!KZF~v z4-@koI5|1UTes)qm$%Au#lE&RoG~TCp|fA!gnWvY2q#F`a{eEn$%RS_yP%UtQgjm~ z*c#e4);R{(S@25bp?;3?iI6a0r3)#Vs?Q6ErK|d1F>y}US zxM~|0^jpp{_RipUUh~b(kutU>8DX3B_A@9$4n?xfVUUhVU(|Jrs$1g)APw-wU*&Lfh(!8XOzj;eEL6 z?-xxNT1{Mcz~D;>jf8g^PjIN}XWKLF@y`x?_k@ItSZCWio~*1ANz z%vrTRhBusaU0yaH%*lT7dJ@;mw4!(bmCZRhc`5k*PHS=YOh$gqa>Y1oO@%Jy^R$Ze zwnXk0nrY#+cMQW1;xY&iQL?!rBToNqTdtgu-O+bM;eR)0ErN8$nhyZk`EK|tRn9Ap+-&{t?&15kL-li!1*&NGP z_-LIR{;;vKiIZuPO^qh2Ff~?nvTBsb&Tob7uZb{1s92o+R-}pNGB)3pkyUpCj>%Cu+6ZNxqU+x0#?)(GB+ntyBMQXQc z{tN;qRfIKKdMyv7Bdq@DJw0KK@f8CVS}YXEH(wfk{Q_R5xp%PFvz{9{pFRA}D!k+= zTK!#LO&B`XnNJj2q@Ge9@FbS~>Mr8|RhO*t?YAki1JT{XtAm5QAC>tcQOPLXUwJ0$k4QQc_wtG!eH;*e^;9G5Y?I*E(%d!u zG`Ajb9+n>H=Ch~QeRJ!nl##pj+0KeH3YEg-$V^a%-h+X#!85lGaCx3-Aaxt5ks)3d zxK)q}lfqeI@hNF?xt4rNU(Z_$Jb5^IP}`z>x(N5suz!b7a;U$6a&|Q0Bqz%joz}5X z(tVxlWMsJ3zD#^sm@appyDoB>M+s};sxk64^*HhzoaXql$B2YNZ<;n>8f53-5$Maj zULJI!Ygc>pd99_s#eHokwfjEkad)|9&a$S%=WyP##E5-cLVKdbSmk^^kr=mQk&T;X z0K^jK>ylKHX8<93dQ|_S8MF_V{X=SJ+ZL69J8_rH%D!B4XmeX#;9;sbi3)v)p*So(9g$m!u_gCHvbT3N*}M@v-#m!F^ssxI2YX%H z32vw1N$T8KvkV3hC~m#gFLx)FU#_ZB?p|CmHeR>GexbtbJ?K0agaX+O@M9% zl!s}-I>$;hRjB{IZga@d%d1R~5i>)@0SC+VMMMd_y-$ftoYX%z=<=kRgOh`5EGWv zjz@^XWC}i0uQAExL~p6a&I8*ZEv< zU7Ki7$*A6dC{)0QRl=%^sXbyosc2hety*4-PawzWdDWZU|JJY?MVS#(q$mjykd#DJ zA{POQ%fTEfov&3*BB0|XIpCMmGw^vsljgf#a~g7#`1B`HYtSD`Oms`$WvB7_n}!+M zKwpt`9!y9$IjWD_iQuA zWrgdSZV4+j?(Hh*S)*;&YaMkZT^5&DdwbZA-UK3Xb*lX%3s%7DEx)`;n>4=avC z|2p$GSM0`*b!N{AuLrjf$=*E~Q$No6GW34x78w@|TewZ}Ji|cLBoUagE_|I3Sp@iQ zA6o$mo_vXlNVnl?xpW=6;(ue)+LSr5h}?pkaPRI7e6*qg`(?2Z>R;_2f(W1}LC9@?xHZG3WoE_U5e4Qlq zM&~U_jb5Ur>>jdEXwCJ_o#s1$5T=*e4_}0pN^vSv&SijVDY`72<{W4R@d{!7LWUeK z925$2$KPCy;gs@YM?4&BTMX03_#CrhM=*3c?;=Cn=5X1euC3aZX%d5;4ASI^ovU)+ z`oXVpaxh=U`MHE%s*W>ltySz{2jx9!Il88s8YvY3b< z&;}kAs=@FtzMWTZ$@fJvK&AP=x={dp%0kqfPK`NkR^u-??Ifs|1IK$NIc6m$92}gi z?8$%3g^np~$)qX4~_w%ceJ!^YFoEn_iF+vZnEmh|EKoS== z-bfSVx_i{xI#ZTDi>D>6%uSmwufvCp`rAlD&P>gxOWTt?Rrv?pYfEkqTb_AKj)PH^ z?Sh|r&s~6uDSC9b?xT^eohzpXfPhtz*VgN{_N#xbeR8-K0DbFi5xRnQ{qp`*L_fG9 zX^a3CYHAhG{xEIW4S`w@t0c{OaYf(4@-zuYen%7J6mR+RB`+GOGi|xB;@nVGw#?Az zP|o;%QLMvFac_Spf6M8nxw`SS>ET1|S5`q+IN9-SWS?me*^lbXb8iCF*`XbOzgdU= z*&039vGH=ykiC;VuawDmtG+;SZB7%`TRfJD2}~qf1GGLzZY9_3I4j-|T6qzwSl0?U z?G+ldMWfeSeiOM^H0w%~J6cUAN|Sh`~8l?cg>Yk%#_(22_*3t-d| z8Cvs!2?II8_a*O3F}Zj6dc1k!v^zmtX}K>MW1Pzt6HqgNOq3~)Jg>CNTCn{dx^`X| zO+d?wLEPX5P4+i@$M}jXW2CP7>QkOAC+CCD%;BCj3zXaE_;wKp1D)9<+!KpVIYp_0 zV1s`<=l-)G4hW+JM1Zy^E4tMNWE=kRn1RY#I4^zGCxHaAn^odmjzNbb(0G}j&Tb@7 ziqpY4JOk5OZU9x4NoM6q8_%;p803cVU|(N zw2<5^jyFCWiB={)92qc$9fCYn9s7 ze-nTEe%Hb1FvH5_&uq}*+??9yPqnz@_f}s9-1T&+38{~tE=Dn}_y#Dh z@CLQt2#>n?^^-d7c;r@_tXk+TLWiGCnf>U3u`frhucbYby20I ztwUM(=_ts(2gt7Stgm>96Y1Ynna?7@UG{c$^&!wMkR zo5YCyya?be{@nw3dK-;15;ADVf3a6zJS-pR3E3I+8GiS}UqwTUs__ zTV|@`TI}Z3K$xzdm|t{lG;2rR_X|xigNfxqX;0nXc=(a!D5W}DYVAB|9G3uqucE42 zRVwWqF~tat+`&6`UfY<0{<5eEZ1kfGbw~Ha6R^pwwhO7Bmt|q7L|pQ}tD-+FzvU-3 zWoq2!EpN<-f+S;U(OGW=Y-_??4*SO7AE~!|GSxW zc z7Ca;LzhMx|w~9iW3`W}Yz2JY|O*;Vql={kYGTQftc5Mo^e>;iq0j!MWMeEkjQ=9~7 z>1wRM)B1ZSZxYfQ4>bS*j2Uf_ix7!6Z2TF5iuu1b*~}jdQ5;M)e7wdC>~sa+y!bl~ zN;92hU$-$$xsHzaNY5*>{Vy3;%Trszy6mG$^p3bSDK62`0+ytO}aN zrRx2ttV9-|GYs;q>#$%R`tSeO4DA8rWXJD*{2 zF19v^SVyO^l6-hH=l`Zzd1zia4`vw=A!TEV@^>P0XKnKeWOC_>ad0a4Q#Jq1ZdtBW zD!q0UV!7on|B~H7{O@5WnUp+44MVkhIwC@PF#r#Gr`7w8qpB!{7rB4?ZgiewP;(@* zZqeO*M;(XG){IW*chafXiWn&30#{rfl;p+It+q-BrX#uP-#3Zl@PtLb?$35L+|6u% zg;-QhbrvP+6=qEWs+|@B*S^=;JU{OdU_8@Ek53n4)Ln4U0s8web|K`&tV{PGhDA+F zQjxubHct@o3wcunU)gqRq4>L~RinjUS*eay!{^G*Ry)7e8AGJH<)z_`ov)D1RPX;* zyZS5T#YQ#ZeVQEr!p>_Dak_;K#7##>-!5BUC;Q)&_B;#zvArPcIVNglE{X5cthTQ4 z?^Vzd0LZe)2|}`=$S(*58_O9RKP?LWo5Wc=Q&+1jlHpP282XcdvZj##T8lZW!RHT? znPC_HGVgnm=k}@E&JK1RZVeFV{5MSug%T+8sDKP??YgC$WUFG`I=h_r|N0|0uax-% z1=)WJuv4>)uhji_n2kX9{52>8WViO-F5@~W{zCtsG^q6ea&-@!2eLjPzp&4@|2is$ zBlAB+K)gdC^9{!WlkC)JYVwq4c8Cge@?g=AGhA%+D$`xR|F3iq@0cL-TXk}d)Op}y zOzPP4%>_q6II}o7c8pbvdEL532d%a|DgPTT@lHH#@yoSV)`d{Z=Q)C|@h;%GV2fA1 zXp#{K_sr$3pZo)N9j3u>U6qMu|oY z2}TY3VLFa#)V@NlumCb!^OD$YpFmGfU7hs*Yl$*6IRAcpTs;SR_yIS^J!gB)+*5{X z(6QCXQeP-reTwW8u5#0cvk2KUSuyqhhAr>&JZsUw5A>a`m<1m*${Gf%tXw!8+jB!? zp(66hi3ZPo98Wiedl1!Zr!xMkpc_wls*rj@9>mA}S~+FWzNxX%!m?h!W}&Kb*r2Ma z>aXOkJc|m}yu$`;D_iSlbQ(JeVs^fATdoFk0N zao1}GBcop{=l^O5M{GH1%Lq^Pa?ZAaQHA+;3?JksbBg|(4_0AJw|dP;&R7l|+&H&t zHU?Oa;1i4w?&8)mldfQC+puYn*V(;{WSOCmQ0h2*BuApQdsZxgCro>z}H& z@n%{Iwiq(>34pP^tmG>F`+z010Oz|a18>FnC@T7hqb0AiIl*d<0@ByOVgX+*{e3$V z;>KF^fX1v$L_WZYJU~pTBF*YnTwoanDw^24%xzKQXvuF45b}3y6dz1qxV~@O4m@r zI)-i|CCD<5#LJpkE%ls!Z}WxRe^!;Meg@Q*mIo1v)fo0nV99ff+X`Sr!(n*`&2dk6 zpJi)@xglTofZdqO7vSJVC2$W|2@t}Oex2)j8*n>`GCi%Mtybtv>4*lfSo{&DFS{?U zliDXBZi_pkbenrtSJVop6ARr6B*_SP&4|}5|H-6nVk^815RZ7y-Kqme;~oO4u?C1wGU=`T8&&Xw-+e7M{~*L*V!4jFv+3o?-zt)s6l^BSKJ?s zFUM0z!W&@p(edXxF|&aH$UTXN4%BkgeTe*Vw)2pOea-w(oCXd5InZ39)h$c&~RizEMl-LO5OpR&!^90Ug#SxSS< z+rU=Z-pO${`I_nxfodCbFzO~8rSnQEI(lb`mvT{;y0l%|%ZXkxgiG5>h8ba7%oKhvly#qK`Y^w04v*eP=f2D2?*e_fYrbWU$KpV0KUl_)X`i)6ZT=&;$)r zN5t7OfPcJ0`^mv?UZk$N3T}!d+=UZyR3BtG;sRFFeicwP8zVwsS~^;}S7H9g4C!YD zSK7)Jzd@iM(K2|;-Q4OtaGH$(2eejnlnVVo)!}%gC%yrx-Go+}G+waz56gf)ovq=q zx642Rh+RZ(?7ZT01;?AI<=rD=hlDQ`GL&Cscl&#%+Uo-MQCIc3TsPa9Bhx~!EglZH zh5~YEM`fvTk;325+UiIb9 z?{DBx`_U%{v!&XLCeV!hCs6+Z_8uN4JHhugH?F%O1>b5?w4>?ee$xV=a=BFA5!XqI zZded?vo&;RCfPazWRxaEq3?hjLmQl!B%NGL=02iFCt4fpvaX0!dPVGdM$4z^9(4ak z(v}`+=xS*R>dpJE`D#Z*>LS*9H@Di6B-$*TwCb`oIvZpYb|3ps4PD4xdYEl@l0rL-|M8KG~Wr08OA?W38|Cc^`lwv^DsL^4rH5AybU6$VU&K*K4F{%nhzh0)=EYv%Mvr9UO?{M0<- zh1h?XNs{R8jGQ=hIwU*jCfClNOre^1KZXCZ*#-EdqppqRhK`jrbp+(VJ7gYhE$xm> zMAF0+8}}Mc{&cn?wUMUf-Fqn1)Y@Cj@}vYnbRd0g4Hys?N3+%B;Q(veMq}?=<)>yr zc+x@|8Yq{pxiQJF@A~@eiyDF1z|D2sxBbSa`NaV>WB2^l2w*mYg|Oq}H1kHKNx~Ix z2>{cVIzMzIB@3MmJDeM>lFWdmyR~Xgg!YhG7FOJ5 zk{K1!IpNK~Q~d>+R2(7MK_^^Wo!`2Z+Bs$Uuz%4ZM!8VdBhrnGm%8yG+-Gu~<3O03^Mui7_pAr)x7`=-APaT03*~MIl!dPQu+_4hYO7*HYd|l*eV_S7iN)1^ z4?w`7NXwgFcG}Prd4g$d=E+}?in+ri_p0gq$5ucGEzK+D*f2)Xsa9G6J(OiUtLKfC zwhz-HOS@e{G`1V}nGHwD88EdKNW~?4Q>_=tB`5Mz#*R8N>9ag?S!~+be`{ zyK-)RibI>)Z?!1$?0U%4OZJ7?;#Yk@%<&@~&)7?KwetIUtyGq#+Ew}8Jx%`?Y`rCa zkBouARMhiW;~;`Pc$*tsEBT$9VXIMV?Q%&g=l`PxB`|D&kCu)ATO5S52dD0w(l0B| zAT$Yln-!k`|DvD1#$L~y$?7H>C8dXji8fw`egFUF-05l$-g6l(4}zhZ!=C&c~%SA#z;oKn!Q#(oIM;xX{!^d>g_`$1!3V=59q@G?!<5-$=Jr`RlT&qCC| zQhZnAKYr@<#QFUm;s-;KIi{>keX{#M=9W!}UFENnoiF|eaBWTf@|3Eo>zzDvXW~B; z{j}=}lZeP&3l~$u&^vuS)2jdACExh*Z4S@RoRr#ZFmw!H3R=~Mc+D?=l+pqKZa(Ob7+Tm?wl2c%6oBSbnRp+X}^X)yJ zmaTjmBipau>m`0Rdy#4S@!Go8krQXgl zC;@Y4=PfAa!-A~tx&+QAP{4luoT~cAcN5J!KQyP#FKR~B6IRkX&IMV6z_Dgo^D2ZT`*5@3i0u9;cs&ipcB>4%!EtnL;eve?7E z22BOC8DguB*<82NFnPDH_HFBXvvSpai{kR^E7^$p`E%9kqf$w2`+$p$+bxMdMQVfM z>lSKF>b?SvdDS6f#H3AC6{ZA3@lw{rw!nr8Pco3}9z0p1u`?-W{P7L*Mh#U;ueuEO zh|jsL3Q^;fp(y^Iw(x9VWUR0_Rn^BRo2Zckoad7W%yLAmntU00ef&hG&3Ns zw&ZnSL*-!1SxZ1sO+%&3q8QWb7>ib}6*c6#S()731gAeC?wVrLw50k+{N)woTc$k8 zZPS#+a3N4?0$leF{KcMW{_^F^>U!{RzN-Yj zr{(>WVK+Yum9cgizuboC!AGC zG)M;f_$frWLSeP!D~{8W>$N3JF=7i(tOeEqZU2O)e+Y)&i{y9C)>rP+5s1<2!t*;s zdfoI_l1C}KT1t4>We$9D;_^8)eBd~U4~f_1Dm~>GD;YJUb`fr1meQsgve037dDO~B z4|w}`_cptL_rpq$DPArG!!~DU_U!DA$KY>@nEQdgw+pR>QdmxPo$9;7=`Wyf!#vs$ zNM&Td0!H;KHTT=JSlVxOC@trE1Pkvorn_ zLUaq|wS`kp_sO+jF%dZxy8C4)JEU9TTq+{4NTsrPJg#2<>j$ao2m3}EuiC)Q?BBW6 zudjdXbt%YDNB|T|e-SP+lUYCRLE@rb|u*axy(Ib}!G@I|m zoX)K)HN}4(m=J1D4VJiMlk=ksPZ%O&vK>bd_gB>-%t`!j&UT14RG!aa5myOH6G{~j zY|O6?Yygs_0)nBoUWwxx58ee|29d@@0RkhVrR=b%%OLCmV+u_e*{+TjmtWO?RwEi} zR16nAu^qKa?+S({OSZSOP)enwlNeHmihWDv#m8P=6ljn9OG0d_5+eTYQvgcVPN$z@PZ(FvTEun~=^_U+#NYV;O)Q4A7K@8H z4+RNEKp7WCt*r=W9y&gMca3E%TbwbokW9uO*<6EoCFD{|Br#v7IDV~cffa^pfu&NO zyJsRO2>*T^wH@C&L*d?Vr^su(JnpQS!Wy?ye;>kh1TVSOK{8!kA%&sSG6L>rV{LO( z6UI(&QW0T3s+ayUBo|&gl}7L`boGFaVH^$LiIuQ2Q`$eaL<f2n^zqXjCu^~+8JDww)sxil0a z$PvhOa(C&D_s*k6O?=$DK(k5brkjw!;tux(nU1uAeN2GbgG{ST*YIzK>1CB(%}*{| zGrJpUnb{7^Gx^Xt>sa%%+b=XkVvo?E!XGz!L$oBYQmXGKD7G*W<$u-hG}DZ>gpp$2 zfD5qPLt2s_h#tw4arHxeu8>YDs4{{j2Ub?BsQLQpCcu`O*kknK@xeDk86A5{A$sA@ zu$=3yqD7-72t$_Q9vd?G4@oh|?x$~%3oDAopKD{L*0dyUB%b@$^+f_^T*R4ZOMdn{ z0v8T2ybcD#2PpGLgnjyHe2*J3%=JMD@ z1UE-=3B#5#yzt&z&%ANwtgn0TW`IAQpZg{H_}PK+vmL1G6zxWXOzZh+Xy7M-v~R}m z>UkxY(`{eWx8)wt0zbX6k_>ch3WmBtR0_<%rNcoQrs?7-8cEP4@w<~vI!x-l*^FzfKUS_T|Y=9DPjFCJGDkkDY9h18l_E(%UogP68(CVaQ z8`B@7j`HkCZdo@Jyo?Mt$pU0OShIg6=pLLrdFkmJ)Z9?(@~_H^_gcP=k#F)OtEIx# zmX3-l&v-| zY%vpAwQzA&bqRqsOkVExXJvAQ7>ht!^PhcYcd<~t6@q~5P4B97Tc@g8sp-XF5$O#f^7CeH;U%$IQZ#=B>in_I~(4$U7$ z&c3vLy)AC@YE5gfb#oOaHqu+L;;oW#`Kp&m#YhSSaoB zm^w3PJQ(OihbB%Vl#8)1ZOIWz>XRVtsomHP^)Jms&+^3ECxb6QWzqpzwr3M7?!=?Q zPdCTEy)A+>)mafo;`NN0?my+(9BwDu26|x_$7l?r2+Z%A6xYK!?pbp?|Bq#t?|Mo> zgoyI6_cF!!A3HW(tSIq`?<+ZJ%ej#2{=Q=+o}t#z{m9KFp9_w8J))51FH+|dD~!^E zZa!HndHIz^MdYF^PCiM@JT?U0X3(ipEuULheNVaUn=RFRNgFd`v6J$m^R(Q~`&T7>xb z%;kfu`pcIu7uJ+l5wBRTlG?6n4i>H+#?IzQYF2KpuIA3BU&m09kSLL40pjYO^M_0R z+G-vdY^TaGE*+=><3CYRPH-yWr2CKV_L- z!C_(4JH0o)qp}&Xd@H`KIO13@5jg(4!BX)I{yrliv19#e|Af`@-;S{pBG)H>Uw=o9 z&lqX>tDPTR9n>MW&svzc&8l^?;zW>3J0@%@Xemi%HeRI$ikpP+UIgT%%+GK90Q znf^}lJ4)f2&eCVZFl2YZ!NJVm+2W@z7Bz8axpTwJ4o#aju<3j-w@sV>q=9UqcDZ@a zv58cq&cIoUG5)zZ=iG)cOl@LuQ2{`Ng!XsF)11?*ndt_9L1h47tzt5BD5;2f$*Xxx zyz9V1Boj*#6li_F9_xZ{PnA8CsYoOynn!WN8ZARDZlY7$y)aZ>soMnSvo!=)%t=KM zy+xI4tSKHmX1|;kEWa8QV`37|o$Txtlon%g9gXmhG_`bc^No zl>y?_a@=zzh~FE|0XV3UklG6}YEf@>o^#I3xBd}&a|cK7l*x@UAPFg~`%5koNMV29 zzUE=8h{@fFK}~`gjlf-3 zdT}zNwmNa8iSw1yC@qsG(2QP$sNa9$c#q*++X`F2?G;OXIIK!j#ixFSPjz|+j~eao z*wy+A_p`Ko(_Ag=VCUhew+!X$mma+`;7Q9M$~_4UpIm;tXDVYW11qDj%FU8SNZp>h zMCneR1Vbze^4iVg%_9tuNe}yQAeXBe=oKFLoeG5fciLNy@jVoeE7za3ygwsUaj+?J zaY*gaL|7L2((^{oUp%XGSXsvpeY>W=Ntt_d%~IEy^+VQA(f&qJdOCn}+(mCVfPpxf z8_TNEZxA#M0d*AvsG|GLqWb$koc)K_KU2ig#b(@I>%G9{=;`Vn1r+6|4_$DX46q%F z`DDRPXxXA}xHe(yv8g~b|IwwI={HvIER#nc(jEcTk@zXT_8to1pla(l_gTjVxjm<8 zm~Jy6n`TC>@6yEPBnB}KDbM{_=IaMqC;dAXncRs_>_ji0lS5+zZt?$8x!P-Xf1BhW z*LruY7i7hznB(OC6&$XZxe?;3~m@83PR#Z|uy&M4E|3 zD58H7EAtC*NEzRjOLHAUl(7*-kY;CR*El{#DU++1K|B4)>+Yz}tP%nD5WM~plL?RF zFI=SCXq{7!Sn2Sw%jThA>=a~wKB&)ef!Z|*Rdi6u7lP5@1Ki$7SSo`>fc_e$3_Z~) zD!KK0l1r3sDLyt-C3!g_yq;h~<(ysvO%?3Jr5*~7V524#e^2;VN`;So52!dYdWB|+fNS<(*Ad31xWRvYceu5j1%3-^6I(Wm;R@fiefugf zAOM*LhnNWsM^=Hi3sea#_ zU;Tsx08qkdJTmBleudnGsjHvGFfhAI%*K|iU@5ljmz{S-T;sJiXgz)o0vf>AuE2+7 zhqrGAi>6Ux1^n7OxN~qEc>ZGUsUJZ>aUo)hc3ILiUbx1|E8yh2vBk+Cn~Nj+W7pfy z@0KzEfaALC$cv`Pmm;iRpWSnOiUJqUVxU#!@(q^4K}R`3)yq}2zSC(S7g_2C6TY_0 zEWe#6@6XT6Pc+-fw5h)c?~Y|(00d!XG|twBDyC=D4)G%a)uR*<-*BhyQuKKe<(Z{x z6SP^&7H;L7pD$bfMecMA4dvVGppBjg(&6D@)k1DzVc*$u<8LS!-bo9KZd*^XKNIoa zZ51ByxTS<_9L<#R7*=?Fi*d{#O=Q0gJz5xjRQ0^5<+3nScu$2Y^UYb){YV$sGA+lz zK)q)|7-e}sA5y0!4@Jp~=*(x)P8fe{afRn#)W-1G75QyXFEOGgwJypgs=4N<`d|e4 z_i4)Pugf9y*nROjEw9yKeT#AMPS3rS_s@z(da)H%bB_ke^{GZ}7g&k9DMeIULt}j? zaU#)l>XZA{0eI@gtvPr&lB8UsNVt422WRd0E=BENU6qS#SjEo&WbgQk5L#WUr6RmH zH{|elM%niK`u%Sk&%@QtBY)Q6Gbo?F2z;sSk6WmR8>7jlX?b zJVDTiovO-Jblo*-vcnMHS{2H_*6{e;Q`p?xTv1UGIJ(&EHECamNhZiGDw<*5c2aj> zVfk(Fh#+{wt48p{IGYiqi3JUdTJ}eWKsRN)9BZPG{UX29c}dH0Z5rCc#dd^N*=&gx zSaQDx;?Sm65VzJm!4?Vv^Nqpr^l(Ccg`w7ygx%N;R@qJ%8Q32));bXY{lT2MeC>cy zqiG*d&Cwkwv*XL_#xSFrab1XWDUY)GJB(=O(zk+XB**$x^D?EXve7n;o^-uvQM^|E z1!$Vd_xgbh{vKQ1Xgu74DFwGjiM;8d`pxDS&AYYcp)3B@lOaN*2D7bHOh!#6gM+P0 zde@2d=uFFx22#(ly-JWNPDD%^^fzp%t{h{%Mh4|M=i|9Qg{6P{WIU`UiTx$wLG&{el}h?$&vk-uW5&5 zkzU0Fbk_{*U?woux}iSbN*|22G{RIJzWmWrQrx(cxk^@&W3Skd2KnC#qPoHF&RteE zWaR`C6O%&Jw_Yyy)$^yUi3jsFwtV)BxBJE5Aq%cfcFaoa%&L1=P*!foG0sAUsi%RR zs*Sg9_Vt|~@Wj}VnL#!qgZId@bb4u%m}8=z)m-C(fLh^px|k1Kt;D^}hKx!w7+UXig3d zR)J)fjERFG^xmC8lY*iW;KM${@x4NdU{3vh9IsSwKITMilMr9R>yv^@YBOeX(Z!$C zR3}?eRh6&j!kKdMlohD>9n@`-$9$I?8+ii6Ny5Cn-e|E&B?5Z5MTLwu|{|e zm;}5I`x35Zn)P^pNn%Csbd+6@MsZsW@1a>nX~rH@ZfQRpm&6PnEb9vitUnar5K6`g z0QJ|(oPDa2>yF?vzQdt2oY}#BTCE-~trl~(#QW=*yo3i6^`ReT>dlL}ZU;;SylC9( z`c4Dmye?Et@c@AA7DtD&?qeL8SZ;@LyV%fzId5j6x?f6^R7#044V2RbltvQP_DZ1m zu;Ady=Wgua#?gg5h$Mwu)2idFD#c1>tn0Uw)%5p z%7q9BzRNbblivR)XMSi4ftyy^1yyaO=*R%0;b5osu;Xp`NW?-#} zt&)>_^~JO9g{l?{-^H|~K!YT2olKWi&#*4LPzHloIn&Cq$#u(?oL&N?y!a~9qP2`Q z5OLCqb}ADjotm*)Fao)rZ=p2Y(Kdc|`1s81?D`oxhbV`uOjmG0!Ghv2KE9Tu^{S@JV4q5b-<(8gH&qvl zj9euBvSp!CIvH%b1`LTwH~2&-UY_dd(TBz=|EHi+wQygle}4dRh~*3K{!q4vh4hI0JKg2HrK~)=HU{F!>v0 zyz`oypQ5jAfb~U2Iah;O70Ju_i^eTn3O8be&~?pg&Ma84c@lRl2**n_9H@&BLT}aE z`X&t2ko*>>XrNnTFu_*GXzNQ|6`Gwani}D+_%^MKW}60`H71tE1+l4*N$Ivx2G{%N z^pKru-)f*y>-Ka5jN<;=(hf5lqkF-|C1ZAA_F)?1QnpqiDSqpGhe6YII;2!dgA3rM zQDY4*ODp~gm z>V!Tk*4kRbSKVF>yh~qeE)+w1&YuZYO19qFJUR0DY!kJ$*%YHysyJP#G?)QwfSy%c zZ0uM@7Tc7ztN8tLD-E19&_|at=~K~2ueI?C{F)}YurkOd&yo8x@L!hi?{|l=tAnqU z=p@|qtgNh;E)NL_3220@04XViQ653cH)2x3&CTs8OrBe*933?ovm|-#&3EDyzjYWk zQ3^VZ&RHU$pp21`p|ykti*L5h?b>fbUuyE)Hcfy#UleM;^1a>>d+Z!!Td8-turToZ zyttnDH?-XMF_j9IX$(LS+_=5V%!S4dh|7>`gW?;VaXs61?cqNMaM9M2|CTEN)?=z z8{{kxlqLQnisZ(N_>f?8+m*4(8;lpe(?Qo;O=?;tJP7_^%U@Ov%v-L!p+$VSb9kZ=Tr88{@ zXP%q^BhRXGs{R9Zwexx9isEs(R|DiHO{2EaN!D{3YP&FMbzsi!xk*^02L_=HOMM$DEo*}(@1Y6pvwjWrFCrUTm^5`#XdFn zS4sn;XJr_H9$56yr1{)l>~g4YxOU)g8SkVD=z**X3LYr7ATfG;NF&$LdLF8i5-GH zm5=9g!@+h6+|)+Kj%H+4iM6Z{lHIL+F?F_`lp$4CWEyL#O+}>`o?>Uu$FsmhmePf+ z!i;S_%us=>ar~lQ5V>73E$?7*I{(7$WcsMMxSFdXOyL!kYIlC5TH;(I5M?s!MK-5q z=|#n>gkUO@i2Y_ctwf>SZ4-7JjyLLq5EaZ;TqV{ayi?? ztm8jl!iP~ulvWyjUV0H_?C9r8<_fx$sHF0HSg*I7eP-ogP#;|bt-Uv}j$imeuA2ns zP-t;;>K#B95)|ouo!JPBNW_J4&uWqpFO@Zc=SYI%=6A23lyM5a&FVC)p1vl}QGQqR%D>MB~STN!Gahlh)Cz-_vPN$Y6|?OvN$X$|Keylsbj8~=;hejDjnHL}#`E-gL%_5!o4 ztjylt{&>M1*^;f*wh5V!<15Qaj^9wxL+Xw6hbOPFIB*}`jg2EWdm;o4S^K_%W`Ls< zF6Sc|b=*Goy)@wwBxU$!U-V33MFo$cgoI%@g@EO63Jt>SnKmotwho<{v4zC&G} z7In-=NRkynz;!zwc)ic*2F=~p^*7e!@d+zcxV^+P2)Bcdg}AuNa@m^~IbrhY@pE3x zB%Mn-P|(_E%9n3?ug1``4Ha7O$x79|{gVpos%7^k(SZ!s^}3|iGBR?(#}}BVLL+Z? z&b))CZjv?2g0#}JCcwHEY54Ln+0$#x@{0NHW@IIHdQ_ai&eZYV*W|*+4E-y%{d6YN zdDdZCB{EzC{X18%;A%B3aFWxgk8&BgU)yvW8!hies~f*$MOaewhKyA+t|6}w>2sxp zE7F;iI`HrKMiY(D1ezkzONeyVVn_sg?hs!t7S9ZUxqn1A8>Y4h`c2F z14gbA#|Zh^&sL>9xu7gN{Yl_sSMKl@zmy}|kyz(3q2Tg@IJPhSGqaH3l#}P*kDrK@ zUE`hYSxYXQUoe^Oq~di+o`#EFO>b?#&R@_XCefYuF3HkPKMEqZIzSD4D~_ehhF>=c zf3IhZLEG~2Q=tuS_X@DJ>hj~4Pb1v^qY%zF?`q9Aj!|w}C|V3!kb`Z|DqW781~r)@ zRIqsP?3Xm>90)s+jEMflDW@~oDe8>e5gG;t28b{Q`|Mk%xPCKW*wvSwf{oT99Pfwg z;;?a4H%WUOedGYmi^W#By$BJyJ0B9Sj5q@mrnet%ULN^e6&LLXnt0Xou1##E8(d`o z54V1CaT|GF9G9`PSG~#FC?U!>@j}1{@xAnFjfvW%S@{t%S>BVe+JNYo*_!r9~ zY}V|`>qIytCwUkj#4;H)Ni!?hMZft*K)(9jIlsCD4||n_Al-TuVO@goYNG`O1-x8ug!bIswm!RZ4_-7ctXbvJBMS_M9#QQHvSbBE%# zuvP)Yi|`g2MHZWK4OOYK2%Wzg3Y_D>t_W#-DsOyMA5MhKqeZx_ds_|dx1qu*3Y8~S z3}G~q(6LU}%_J7zzq@(Q_X30&U)p5t=s+}$HOAGtIcyJZ`WurdtPos^O<8j>`J3V!5 zjO_{Z6wVkk@mnaPa?-RJul4o0L4HXz{7Xmn!#HcI48T4pCpz3O#XdjimghartC%?R z&LE6Qkt_#0`yzT)&AqqQ@l*~`}b5w_R>cb(**cU z7*!@Gpngk?kcwk{dAFjuUrzA^GkNBKiij;q4OW%OsGY)EM;}8|SoWM0a`6P{}9swd1g>gW;+csuv(_M^_b*Hacadi_{dl?vwB_nULA4Z)B-f7As^%S(kmZ%bl36 zqQcs`(QnS7t^2~JMZgb2E$zM>X&RQ0+pV>I?8&7?O{K(VzbuR^AJ=N7X+I+EKo|-@ z2P^k09Ibt$L>PH-vLgHe)(@fPl29nLX?d9rtJn5&V zvG~=ipE0|KwJtkUaf)!$!Dmp=Rwqb~a-JcKGhJZrq=g0t+aaljQY4R0Ljbl`FBqD_ z$<%+Ya=f=WU8ur!LT9u9S8PJ(c+L_xE4@94wncHl`bA<0P3>!(Z)BLiaxa zR4u&CuccF0)~8cuUX!iENHG`5k)Ama(Nf<@8F+U^IM5PZXO<_7g9BNDq)9OJP z!v>yrHoulA(UveNNir=|7#&imvN)O7?>Ivc$?q2+fp^EIAS*YywHf#nFK{N`3}H_5 z)cLJs&Lld1a_cFP+!JVMT4tiAk}W9f5|O>0<0Euv6}r;Aow^d*jw_jS`~}=+A!#zX zBbl#s?p;FY?5dT;#uEShhxny^AhVEQgFo~X^$F9Tkk0;qh&rkvx9^DDX~1&*^u(Y__ptC$pW1A zH`iWZCLDqu*@Y}i<~>R`PutbxViQ=exy`lBV1q77W@N%iHCYxtQ_pJ-&I@t#?aVyw z`@@&@Lj$cXfS^|M-h?PZ1+I_q09+^m)P-ph(_X+tDB9p>dNj8HgKTn($4%f>qNRd7 z5xJ5g>%!bUF0cFT;pKBGstp$=%giNDYX1$vnKS{5XA7=#&de*$ipka9Dbc~oYKjjvP_KXsd zzM3jf(a_My&CNym_Eu0(P`zVv<80Qh76$VU0dTq>&c5g~?AJ<8)$8t7N{NpV?8g(2 zP)ekHX|I*uQn{M5$k>}cU*Ky8%SOgzKhex5sX2O1gbMvi9p6ul6B#dA&Ulr)?vSS_ zM?Q4%ME0~8+}65h-v}x$tRCojO)hA8eBsYWy80=?l&O6rC6o949E|0Wihmm725hRpG8BWJ=kX8<5m4^}M7?DpJ!^k*Faps)YeWuaG8|vtaD-^7 znBsa6*U+$TzV6-K;aVwyDkfiYqFIYD%Y1i6^{_dAkcWqDH&}D8&m6lO}LAaiaI#(McZ z&)0&8R#X&py4sF;xdq{VtT9^g>kEm*3CnFR8d-Bkqv~{`eo2Mxz^)vsBCI|5?92N* z&Ke+fI}%g8XUJDo*^fWMwh@(1_ zYaO{S6~BuL%Jm1~%6=86dKGH&({JmGw5mt4AxE{ zz2%GZRL&bhIhMUS;Py8e(>_~*w&E5+y-0q{XnF} zSJ*=bwB$H^#0SPGZZta1!w%5B^ZE5QcQ}29xdYsvJM;jU{aL^ zAjWlt-iyAvyINS#t5)Vl))5C$0c%IUZcuEn(Z87t zv6FgP9AHpeTmR$~Rkdf!^7ghx-NJCCowhbnuT%S{k5th=sBa-{Ek|kvWeovo%Ffji zIa^)yzl>jLic&ilXyLs4_?|V<QkEpu?t_z;eXyAH!9$hz*TPp*J2YmNX@D*vnH>c%@M`=dae**0N9w zesS)Z#`BWdhxB2-HQ_I6zZ#*{9TLTmukQ1gabM&+24Id+D!&fseBJY zeG2t`_{j1Vl2xK=4Fsm^v#wNI=S)uDo=_YXmbH-QMiGlRZ=#_Q)Y}Ufu;#~^g~#cB z6%ULLU~1?sUO|*;Nh}4~{G}bsfB*~Ek@|MI8olDeo+AlFY|z=o=e4IqyLHY z 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 literal 60399 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 zΞ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 diff --git a/purchase_blanket_order/static/description/BO_lines.png b/purchase_blanket_order/static/description/BO_lines.png index 770ade5552f0d8f8cc911046211270fe7fc421ae..4724cf97d48405a109716688ef83be19706c0b31 100644 GIT binary patch literal 27706 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 literal 41092 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 APycYaD*a0q`57Jw0AjO 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 literal 49726 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 j-z&a;(LjUuAg>Xz8D?{`$WFLXot? diff --git a/purchase_blanket_order/static/description/PO_BOLine.png b/purchase_blanket_order/static/description/PO_BOLine.png index a0cb4807d864c1d4e2539d64847ccad29f6df8e2..630baea88b4a530232aecaac8afaf0c8a25593b8 100644 GIT binary patch literal 40523 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≧mP0W(SFYa&b0y!6})_mLC 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 y^a;>|zjkxmZdS!vzW5QDZM4>d7ykz)UETr! literal 61044 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 q^tUW?guB%KbK|^icqR$*=Credits

    Authors

      -
    • Eficent S.L.
    • +
    • Eficent

    Contributors

    diff --git a/purchase_blanket_order/tests/test_purchase_order.py b/purchase_blanket_order/tests/test_purchase_order.py index 57a74cdc326..3822d9952db 100644 --- a/purchase_blanket_order/tests/test_purchase_order.py +++ b/purchase_blanket_order/tests/test_purchase_order.py @@ -36,11 +36,20 @@ def setUp(self): 'uom_id': self.env.ref('product.product_uom_unit').id, 'default_code': 'PROD_DEL01', }) + self.product_2 = self.env['product.product'].create({ + 'name': 'Demo 2', + 'categ_id': self.env.ref('product.product_category_1').id, + 'standard_price': 35.0, + 'seller_ids': [(6, 0, [seller.id])], + 'type': 'consu', + 'uom_id': self.env.ref('product.product_uom_unit').id, + 'default_code': 'PROD_DEL02', + }) self.validity = date.today() + timedelta(days=365) self.date_schedule_1 = date.today() + timedelta(days=10) self.date_schedule_2 = date.today() + timedelta(days=20) - def create_blanket_order(self): + def create_blanket_order_01(self): blanket_order = self.blanket_order_obj.create({ 'partner_id': self.partner.id, 'validity_date': fields.Date.to_string(self.validity), @@ -62,10 +71,32 @@ def create_blanket_order(self): blanket_order.sudo().onchange_partner_id() return blanket_order + def create_blanket_order_02(self): + blanket_order = self.blanket_order_obj.create({ + 'partner_id': self.partner.id, + 'validity_date': fields.Date.to_string(self.validity), + 'payment_term_id': self.payment_term.id, + 'line_ids': [(0, 0, { + 'product_id': self.product.id, + 'product_uom': self.product.uom_id.id, + 'original_uom_qty': 20.0, + 'price_unit': 30.0, + }), (0, 0, { + 'product_id': self.product_2.id, + 'product_uom': self.product.uom_id.id, + 'original_uom_qty': 20.0, + 'price_unit': 30.0, + })], + }) + blanket_order.sudo().onchange_partner_id() + return blanket_order + def test_01_create_purchase_order(self): - blanket_order = self.create_blanket_order() + blanket_order = self.create_blanket_order_01() blanket_order.sudo().action_confirm() - bo_lines = self.blanket_order_line_obj.search([]) + bo_lines = self.blanket_order_line_obj.search([ + ('order_id', '=', blanket_order.id), + ]) self.assertEqual(len(bo_lines), 2) po = self.purchase_order_obj.create({ @@ -89,3 +120,36 @@ def test_01_create_purchase_order(self): ('date_schedule', '=', fields.Date.to_string(self.date_schedule_1)) ]) self.assertEqual(po_line.blanket_order_line, bo_line_assigned) + + def test_02_create_purchase_order(self): + blanket_order = self.create_blanket_order_02() + blanket_order.sudo().action_confirm() + bo_lines = self.blanket_order_line_obj.search([ + ('order_id', '=', blanket_order.id), + ]) + self.assertEqual(len(bo_lines), 2) + + po = self.purchase_order_obj.create({ + 'partner_id': self.partner.id, + 'order_line': [ + (0, 0, { + 'name': self.product.name, + 'product_id': self.product.id, + 'product_qty': 5.0, + 'product_uom': self.product.uom_po_id.id, + 'date_planned': date.today(), + 'price_unit': 10.0, + }) + ] + }) + po_line = po.order_line[0] + po_line.with_context(from_purchase_order=True).name_get() + po_line.onchange_product_id() + self.assertEqual(po_line._get_eligible_bo_lines(), bo_lines.filtered( + lambda l: l.product_id == self.product)) + bo_line_assigned = self.blanket_order_line_obj.search([ + ('order_id', '=', blanket_order.id), + ('product_id', '=', self.product.id), + ('date_schedule', '=', False) + ]) + self.assertEqual(po_line.blanket_order_line, bo_line_assigned) diff --git a/purchase_blanket_order/views/blanket_orders.xml b/purchase_blanket_order/views/purchase_blanket_order_views.xml similarity index 99% rename from purchase_blanket_order/views/blanket_orders.xml rename to purchase_blanket_order/views/purchase_blanket_order_views.xml index 9efa71b0462..6b043be1674 100644 --- a/purchase_blanket_order/views/blanket_orders.xml +++ b/purchase_blanket_order/views/purchase_blanket_order_views.xml @@ -70,7 +70,7 @@ - + @@ -89,7 +89,7 @@ string="Original Qty" context="{'partner_id':parent.partner_id, 'quantity':original_uom_qty, 'company_id': parent.company_id}" /> - + diff --git a/purchase_blanket_order/views/purchase_orders.xml b/purchase_blanket_order/views/purchase_order_views.xml similarity index 100% rename from purchase_blanket_order/views/purchase_orders.xml rename to purchase_blanket_order/views/purchase_order_views.xml diff --git a/purchase_blanket_order/wizard/create_purchase_orders.py b/purchase_blanket_order/wizard/create_purchase_orders.py index 3f874d0a574..efcf5c46e4e 100644 --- a/purchase_blanket_order/wizard/create_purchase_orders.py +++ b/purchase_blanket_order/wizard/create_purchase_orders.py @@ -29,6 +29,11 @@ def _check_valid_blanket_order_line(self, bo_lines): 'Product Unit of Measure') company_id = False + if float_is_zero(sum(bo_lines.mapped('remaining_uom_qty')), + precision_digits=precision): + raise UserError( + _('All lines have already been completed.')) + for line in bo_lines: if line.order_id.state != 'open': @@ -36,10 +41,6 @@ def _check_valid_blanket_order_line(self, bo_lines): _('Purchase Blanket Order %s is not open') % line.order_id.name) - if float_is_zero(line.remaining_qty, precision_digits=precision): - raise UserError( - _('The purchase has already been completed.')) - line_company_id = line.company_id and line.company_id.id or False if company_id is not False \ and line_company_id != company_id: @@ -66,11 +67,12 @@ def _default_lines(self): 'blanket_line_id': l.id, 'product_id': l.product_id.id, 'date_schedule': l.date_schedule, - 'remaining_qty': l.remaining_qty, + 'remaining_uom_qty': l.remaining_uom_qty, 'price_unit': l.price_unit, - 'qty': l.remaining_qty, + 'product_uom': l.product_uom, + 'qty': l.remaining_uom_qty, 'partner_id': l.partner_id, - }) for l in bo_lines] + }) for l in bo_lines if l.remaining_uom_qty > 0] return lines blanket_order_id = fields.Many2one( @@ -93,7 +95,7 @@ def create_purchase_order(self): if line.qty == 0.0: continue - if line.qty > line.remaining_qty: + if line.qty > line.remaining_uom_qty: raise UserError( _('You can\'t order more than the remaining quantities')) @@ -102,8 +104,8 @@ def create_purchase_order(self): vals = {'product_id': line.product_id.id, 'name': line.product_id.name, 'date_planned': date_planned if date_planned else - line.blanket_line_id.order_id.date_order, - 'product_uom': line.blanket_line_id.product_uom.id, + line.blanket_line_id.order_id.date_start, + 'product_uom': line.product_uom.id, 'sequence': line.blanket_line_id.sequence, 'price_unit': line.blanket_line_id.price_unit, 'blanket_order_line': line.blanket_line_id.id, @@ -168,10 +170,14 @@ class BlanketOrderWizardLine(models.TransientModel): 'product.product', related='blanket_line_id.product_id', string='Product', readonly=True) + product_uom = fields.Many2one( + 'product.uom', + related='blanket_line_id.product_uom', + string='Unit of Measure', readonly=True) date_schedule = fields.Date( related='blanket_line_id.date_schedule', readonly=True) - remaining_qty = fields.Float( - related='blanket_line_id.remaining_qty', readonly=True) + remaining_uom_qty = fields.Float( + related='blanket_line_id.remaining_uom_qty', readonly=True) qty = fields.Float(string='Quantity to Order', required=True) price_unit = fields.Float( related='blanket_line_id.price_unit', readonly=True) diff --git a/purchase_blanket_order/wizard/create_purchase_orders.xml b/purchase_blanket_order/wizard/create_purchase_orders.xml index b4e1275dd39..970c9308a14 100644 --- a/purchase_blanket_order/wizard/create_purchase_orders.xml +++ b/purchase_blanket_order/wizard/create_purchase_orders.xml @@ -12,7 +12,8 @@ - + + From bb413a99eb72d3c67386eeb61a8cbea3b8b997ba Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 16 Jul 2019 16:59:55 +0000 Subject: [PATCH 0728/1277] [UPD] Update purchase_blanket_order.pot --- .../i18n/purchase_blanket_order.pot | 687 ++++++++++++++++++ 1 file changed, 687 insertions(+) create mode 100644 purchase_blanket_order/i18n/purchase_blanket_order.pot diff --git a/purchase_blanket_order/i18n/purchase_blanket_order.pot b/purchase_blanket_order/i18n/purchase_blanket_order.pot new file mode 100644 index 00000000000..5d1c8ec9544 --- /dev/null +++ b/purchase_blanket_order/i18n/purchase_blanket_order.pot @@ -0,0 +1,687 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_blanket_order +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Blanket Order # " +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Currency:" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Payment Terms:" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Purchase person:" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Subtotal" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Total" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Validity Date:" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:35 +#, python-format +msgid "All lines have already been completed." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Amount" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:127 +#, python-format +msgid "An order can't be empty" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_blanket_line_id +msgid "Blanket Line" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_blanket_order_id +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Blanket Order" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order_line +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_order_line_blanket_order_line +msgid "Blanket Order Line" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.actions.act_window,name:purchase_blanket_order.act_open_purchase_blanket_order_lines_view_tree +#: model:ir.ui.menu,name:purchase_blanket_order.menu_purchase_blanket_order_line +#: model:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_tree +msgid "Blanket Order Lines" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order_wizard +msgid "Blanket Order Wizard" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_date_start +msgid "Blanket Order starting date." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.actions.act_window,name:purchase_blanket_order.act_open_purchase_blanket_order_view +#: model:ir.ui.menu,name:purchase_blanket_order.menu_purchase_blanket_order_config +#: model:ir.ui.view,arch_db:purchase_blanket_order.purchase_config_settings_form_view +msgid "Blanket Orders" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:130 +#, python-format +msgid "Can not create Purchase Order from Blanket Order lines with different currencies" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_create_purchase_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Cancel" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/purchase_order.py:27 +#, python-format +msgid "Cannot confirm order %s as one of the lines refers to a blanket order that has no remaining quantity." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.actions.act_window,help:purchase_blanket_order.act_open_purchase_blanket_order_view +msgid "Click to create a blanket order that can be converted into a purchase order." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_company_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_company_id +msgid "Company" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Confirm" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_confirmed +msgid "Confirmed" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_create_purchase_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Create Purchase Order" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.actions.act_window,name:purchase_blanket_order.action_create_purchase_order +msgid "Create RFQ" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_create_purchase_order +msgid "Create and View Order" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_create_uid +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_create_uid +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_create_uid +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_create_date +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_create_date +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_create_date +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_create_date +msgid "Created on" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_currency_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_currency_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_currency_id +msgid "Currency" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:439 +#, python-format +msgid "Date Scheduled" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_validity_date +msgid "Date until which the blanket order will be valid, after this date the blanket order will be marked as expired" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_name +msgid "Description" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_res_config_settings_group_purchase_blanket_disable_adding_lines +msgid "Disable adding more lines to SOs" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.purchase_config_settings_form_view +msgid "Disable adding more lines to SOs from Blanket Orders" +msgstr "" + +#. module: purchase_blanket_order +#: model:res.groups,name:purchase_blanket_order.purchase_blanket_orders_disable_adding_lines +msgid "Disable adding more lines to SOs from Purchase Blanket Orders" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_display_name +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_display_name +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_display_name +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_blanket_order +#: selection:purchase.blanket.order,state:0 +msgid "Done" +msgstr "" + +#. module: purchase_blanket_order +#: selection:purchase.blanket.order,state:0 +msgid "Draft" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.actions.server,name:purchase_blanket_order.expired_purchase_blanket_orders_cron_ir_actions_server +#: model:ir.cron,cron_name:purchase_blanket_order.expired_purchase_blanket_orders_cron +#: model:ir.cron,name:purchase_blanket_order.expired_purchase_blanket_orders_cron +msgid "Expire Blanket Orders" +msgstr "" + +#. module: purchase_blanket_order +#: selection:purchase.blanket.order,state:0 +msgid "Expired" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_fiscal_position_id +msgid "Fiscal Position" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_id +msgid "ID" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search +msgid "Invoiced Qty" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_invoiced_uom_qty +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_invoiced_uom_qty +msgid "Invoiced quantity" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order___last_update +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line___last_update +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard___last_update +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line___last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_write_uid +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_write_uid +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_write_uid +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_write_date +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_write_date +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_write_date +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_ids +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Lines" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:224 +#, python-format +msgid "Must have some lines" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_name +msgid "Name" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_note +msgid "Note" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search +#: selection:purchase.blanket.order,state:0 +msgid "Open" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_order_id +msgid "Order" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Order Lines" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_ids +msgid "Order lines" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search +msgid "Ordered Qty" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_ordered_uom_qty +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_ordered_uom_qty +msgid "Ordered quantity" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_order_blanket_order_id +msgid "Origin blanket order" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_tree +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search +msgid "Original Qty" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_original_uom_qty +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_original_uom_qty +msgid "Original quantity" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:223 +#, python-format +msgid "Partner is mandatory" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_payment_term_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_payment_term_id +msgid "Payment Terms" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_price_unit +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_price_unit +msgid "Price" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:541 +#, python-format +msgid "Price must be greater than zero" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_product_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_product_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_product_id +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Product" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.actions.report,name:purchase_blanket_order.report_blanket_order +msgid "Purchase Blanket Order" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:41 +#, python-format +msgid "Purchase Blanket Order %s is not open" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_form +msgid "Purchase Blanket Order Line" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_count +msgid "Purchase Blanket Order Line count" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_purchase_count +msgid "Purchase Count" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model,name:purchase_blanket_order.model_purchase_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_purchase_order_id +msgid "Purchase Order" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model,name:purchase_blanket_order.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_purchase_lines +#: model:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_form +msgid "Purchase Order Lines" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:543 +#, python-format +msgid "Quantity must be greater than zero" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_qty +msgid "Quantity to Order" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:153 +#, python-format +msgid "RFQ" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "RFQ/Orders" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search +msgid "Received Qty" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_received_uom_qty +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_received_uom_qty +msgid "Received quantity" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search +msgid "Remaining Qty" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_remaining_uom_qty +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_remaining_uom_qty +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_remaining_uom_qty +msgid "Remaining quantity" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_remaining_qty +msgid "Remaining quantity in base UoM" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_user_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_user_id +msgid "Responsible" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/purchase_order.py:145 +#, python-format +msgid "Schedule dates defined on the Purchase Order Line and on the Blanket Order Line do not match." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_date_schedule +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_date_schedule +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Scheduled Date" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_search +msgid "Search Purchase Blanket Order Line" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_sequence +msgid "Sequence" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Setup default terms and conditions in your company settings." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_date_start +msgid "Start Date" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_state +msgid "State" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_price_subtotal +msgid "Subtotal" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_price_tax +msgid "Tax" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_amount_tax +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_taxes_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_taxes_id +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Taxes" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "Terms and Conditions" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/purchase_order.py:155 +#, python-format +msgid "The currency of the blanket order must match with that of the purchase order." +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/purchase_order.py:38 +#, python-format +msgid "The vendor must be equal to the blanket order lines vendor" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form +msgid "To Draft" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_amount_total +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_price_total +msgid "Total" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "Unit Price" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_product_uom +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_product_uom +msgid "Unit of Measure" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_amount_untaxed +msgid "Untaxed Amount" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.actions.act_window,help:purchase_blanket_order.act_open_purchase_blanket_order_view +msgid "Use this menu to search within your blanket orders. For each blanket order,\n" +" you can track the related discussion with the vendor, control\n" +" the products received and control the vendor bills." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document +msgid "VAT:" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_validity_date +msgid "Validity Date" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:220 +#, python-format +msgid "Validity date is mandatory" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:222 +#, python-format +msgid "Validity date must be in the future" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line_partner_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_partner_id +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_partner_id +msgid "Vendor" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line_wizard_id +msgid "Wizard" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:253 +#, python-format +msgid "You can not delete a blanket order with opened purchase orders! Try to cancel them before." +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:203 +#, python-format +msgid "You can not delete an open blanket order! Try to cancel it before." +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:22 +#, python-format +msgid "You can't create a purchase order from an expired blanket order!" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:100 +#, python-format +msgid "You can't order more than the remaining quantities" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:48 +#, python-format +msgid "You have to select lines from the same company." +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order_wizard_line +msgid "purchase.blanket.order.wizard.line" +msgstr "" + +#. module: purchase_blanket_order +#: code:addons/purchase_blanket_order/models/blanket_orders.py:440 +#, python-format +msgid "remaining" +msgstr "" + +#. module: purchase_blanket_order +#: model:ir.model,name:purchase_blanket_order.model_res_config_settings +msgid "res.config.settings" +msgstr "" + From 14df05faf832ea913ad83269e78081779f60c825 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 16 Jul 2019 17:41:57 +0000 Subject: [PATCH 0729/1277] [UPD] README.rst --- purchase_blanket_order/README.rst | 12 ++-- .../static/description/index.html | 58 ++++++++++++------- 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/purchase_blanket_order/README.rst b/purchase_blanket_order/README.rst index bf9ce6c9598..6aed643fa4e 100644 --- a/purchase_blanket_order/README.rst +++ b/purchase_blanket_order/README.rst @@ -42,7 +42,7 @@ A new menu in the Purchase area is created, allowing users to create new blanket To create a new Purchase Blanket Order go to the purchase menu in the Purchase section: -.. image:: /purchase_blanket_order/static/description/BO_menu.png +.. image:: https://raw.githubusercontent.com/purchase_blanket_order/static/description/BO_menu.png :alt: Blanket Orders menu Hitting the button create will open the form view in which we can introduce the following @@ -57,27 +57,27 @@ information: * Original, Ordered, Invoiced, Received and Remaining quantities * Terms and Conditions of the Blanket Order -.. image:: /purchase_blanket_order/static/description/BO_form.png +.. image:: https://raw.githubusercontent.com/purchase_blanket_order/static/description/BO_form.png :alt: Blanket Orders form From the form, once the Blanket Order has been confirmed and its state is open, the user can create a Purchase Order, check the Purchase Orders associated to the Blanket Order and/or see the Blanket Order lines associated to the BO. -.. image:: /purchase_blanket_order/static/description/BO_actions.png +.. image:: https://raw.githubusercontent.com/purchase_blanket_order/static/description/BO_actions.png :alt: Actions that can be done from Blanket Order Hitting the button Create Purchase Order will open a wizard that will ask for the amount of each product in the BO lines for which the Purchase Order will be created. -.. image:: /purchase_blanket_order/static/description/PO_from_BO.png +.. image:: https://raw.githubusercontent.com/purchase_blanket_order/static/description/PO_from_BO.png :alt: Create Purchase Order from Blanket Order Installing this module will add an additional menu which will show all the blanket order lines currently defined in the system. From this list the user can create customized Purchase Orders selecting the lines for which the PO (or POs if the vendors are different) is (are) created. -.. image:: /purchase_blanket_order/static/description/BO_lines.png +.. image:: https://raw.githubusercontent.com/purchase_blanket_order/static/description/BO_lines.png :alt: Blanket Order lines and actions In the Purchase Order form one field is added in the PO lines, the Blanket Order line field. This @@ -88,7 +88,7 @@ factors: * Closer Validity date * Remaining quantity > Quantity introduced in the Purchase Order line -.. image:: /purchase_blanket_order/static/description/PO_BOLine.png +.. image:: https://raw.githubusercontent.com/purchase_blanket_order/static/description/PO_BOLine.png :alt: New field added in Purchase Order Line Bug Tracker diff --git a/purchase_blanket_order/static/description/index.html b/purchase_blanket_order/static/description/index.html index 0612753b4a3..79a4ecdb73c 100644 --- a/purchase_blanket_order/static/description/index.html +++ b/purchase_blanket_order/static/description/index.html @@ -3,13 +3,13 @@ - + Purchase Blanket Orders + + +
    +

    Purchase Packaging Default

    + + +

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

    +

    Allows you to set a default packaging on the order line using the first packaging defined in the configuration of the respective product +Default packaging quantity is then set based on purchase order line quantity divided by product packaging quantity. +Packaging quantity is rounded up as we sell it by units. For example: We won’t sell 0.5 Boxes or 1.5 Pallets.

    +

    Table of contents

    + +
    +

    Bug Tracker

    +

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

    +

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

    +
    +
    +

    Credits

    +
    +

    Authors

    +
      +
    • Camptocamp
    • +
    +
    + +
    +

    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/purchase-workflow project on GitHub.

    +

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

    +
    +
    +
    + + diff --git a/purchase_packaging_default/tests/__init__.py b/purchase_packaging_default/tests/__init__.py new file mode 100644 index 00000000000..e9bc0933dd6 --- /dev/null +++ b/purchase_packaging_default/tests/__init__.py @@ -0,0 +1 @@ +from . import test_purchase_packaging_default diff --git a/purchase_packaging_default/tests/test_purchase_packaging_default.py b/purchase_packaging_default/tests/test_purchase_packaging_default.py new file mode 100644 index 00000000000..591bfb619b4 --- /dev/null +++ b/purchase_packaging_default/tests/test_purchase_packaging_default.py @@ -0,0 +1,41 @@ +# Copyright 2024 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.tests.common import Form + +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT +from odoo.addons.product.tests.common import ProductCommon + + +class PurchasePackagingDefault(ProductCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env.user.groups_id |= cls.env.ref("product.group_stock_packaging") + cls.env = cls.env["base"].with_context(**DISABLED_MAIL_CONTEXT).env + cls.config = cls.env["res.config.settings"].create({}) + cls.config.purchase_packaging_default_enabled = True + cls.config.set_values() + with Form(cls.product) as product_f: + with product_f.packaging_ids.new() as packaging_f: + packaging_f.name = "Pallet" + packaging_f.qty = 240 + packaging_f.purchase = True + with product_f.packaging_ids.new() as packaging_f: + packaging_f.name = "Big Box" + packaging_f.qty = 24 + packaging_f.purchase = True + cls.pallet, cls.big_box = cls.product.packaging_ids + + def test_purchase_packaging_default(self): + po_f = Form(self.env["purchase.order"]) + po_f.partner_id = self.partner + with po_f.order_line.new() as line_f: + line_f.product_id = self.product + line_f.product_qty = 120 + # We take the first available packaging + self.assertEqual(line_f.product_packaging_id, self.pallet) + # Packaging qty is round up to 1 + self.assertEqual(line_f.product_packaging_qty, 1) + # Packaging qty is round up to 2 + line_f.product_qty = 241 + self.assertEqual(line_f.product_packaging_qty, 2) diff --git a/purchase_packaging_default/views/res_config_settings_views.xml b/purchase_packaging_default/views/res_config_settings_views.xml new file mode 100644 index 00000000000..fc695b7ccd0 --- /dev/null +++ b/purchase_packaging_default/views/res_config_settings_views.xml @@ -0,0 +1,30 @@ + + + + res.config.settings.view.form.inherit.purchase + res.config.settings + + + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/setup/purchase_packaging_default/odoo/addons/purchase_packaging_default b/setup/purchase_packaging_default/odoo/addons/purchase_packaging_default new file mode 120000 index 00000000000..8276472e5cc --- /dev/null +++ b/setup/purchase_packaging_default/odoo/addons/purchase_packaging_default @@ -0,0 +1 @@ +../../../../purchase_packaging_default \ No newline at end of file diff --git a/setup/purchase_packaging_default/setup.py b/setup/purchase_packaging_default/setup.py new file mode 100644 index 00000000000..28c57bb6403 --- /dev/null +++ b/setup/purchase_packaging_default/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From db868d1867ea576bd87ee86545ce92985e743b71 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 22 Feb 2024 08:01:22 +0000 Subject: [PATCH 0819/1277] [BOT] post-merge updates --- README.md | 2 +- purchase_manual_delivery/README.rst | 2 +- purchase_manual_delivery/__manifest__.py | 2 +- purchase_manual_delivery/static/description/index.html | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1b7bbc4f26f..abe73b04831 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ addon | version | maintainers | summary [purchase_line_procurement_group](purchase_line_procurement_group/) | 16.0.1.0.0 | | Group purchase order line according to procurement group [purchase_location_by_line](purchase_location_by_line/) | 16.0.1.0.0 | | Allows to define a specific destination location on each PO line [purchase_lot](purchase_lot/) | 16.0.1.0.0 | [![florian-dacosta](https://github.com/florian-dacosta.png?size=30px)](https://github.com/florian-dacosta) | Purchase Lot -[purchase_manual_delivery](purchase_manual_delivery/) | 16.0.1.1.0 | | Prevents pickings to be auto generated upon Purchase Order confirmation and adds the ability to manually generate them as the supplier confirms the different purchase order lines. +[purchase_manual_delivery](purchase_manual_delivery/) | 16.0.1.1.1 | | Prevents pickings to be auto generated upon Purchase Order confirmation and adds the ability to manually generate them as the supplier confirms the different purchase order lines. [purchase_merge](purchase_merge/) | 16.0.1.0.1 | | Wizard to merge purchase with required conditions [purchase_no_rfq](purchase_no_rfq/) | 16.0.1.0.0 | [![legalsylvain](https://github.com/legalsylvain.png?size=30px)](https://github.com/legalsylvain) | Purchase Order - No Request For Quotation [purchase_only_by_packaging](purchase_only_by_packaging/) | 16.0.1.0.0 | | Manage purchase of packaging diff --git a/purchase_manual_delivery/README.rst b/purchase_manual_delivery/README.rst index 9fd5f835e37..6f08a07ffdb 100644 --- a/purchase_manual_delivery/README.rst +++ b/purchase_manual_delivery/README.rst @@ -7,7 +7,7 @@ Purchase Manual Delivery !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:1977c36b45704fecaa12431fae0390324a44c1528a47da37da8089a769c45036 + !! source digest: sha256:8047ec82b4b9e631868f92fc323a79bf0b600c84ae5efada49283f279387f837 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/purchase_manual_delivery/__manifest__.py b/purchase_manual_delivery/__manifest__.py index 58e66655806..002916023b8 100644 --- a/purchase_manual_delivery/__manifest__.py +++ b/purchase_manual_delivery/__manifest__.py @@ -8,7 +8,7 @@ and adds the ability to manually generate them as the supplier confirms the different purchase order lines. """, - "version": "16.0.1.1.0", + "version": "16.0.1.1.1", "license": "AGPL-3", "author": "ForgeFlow S.L.," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/purchase-workflow", diff --git a/purchase_manual_delivery/static/description/index.html b/purchase_manual_delivery/static/description/index.html index 7c3effa03df..51e64844238 100644 --- a/purchase_manual_delivery/static/description/index.html +++ b/purchase_manual_delivery/static/description/index.html @@ -1,4 +1,3 @@ - @@ -367,7 +366,7 @@

    Purchase Manual Delivery

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:1977c36b45704fecaa12431fae0390324a44c1528a47da37da8089a769c45036 +!! source digest: sha256:8047ec82b4b9e631868f92fc323a79bf0b600c84ae5efada49283f279387f837 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

    The goal of this module is to allow the manual creation of incoming shipments. When installed, From f76311eaa624bb30b1cc7ea65d7ba3c66dbee10d Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 23 Feb 2024 09:01:37 +0000 Subject: [PATCH 0820/1277] Translated using Weblate (Italian) Currently translated at 94.1% (16 of 17 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_order_type_dashboard Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_order_type_dashboard/it/ --- purchase_order_type_dashboard/i18n/it.po | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/purchase_order_type_dashboard/i18n/it.po b/purchase_order_type_dashboard/i18n/it.po index 71522ad7469..0b53b54b0a9 100644 --- a/purchase_order_type_dashboard/i18n/it.po +++ b/purchase_order_type_dashboard/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-12-24 12:38+0000\n" +"PO-Revision-Date: 2024-02-23 11:36+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -82,8 +82,9 @@ msgstr "Visualizza altre opzioni" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +#, fuzzy msgid "Total Nothing to Bill" -msgstr "" +msgstr "Totale senza fatturazione" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree From 25e264931cd7b423983156ce53fb1e06573287a0 Mon Sep 17 00:00:00 2001 From: Stefan Date: Fri, 23 Jun 2023 11:39:14 +0200 Subject: [PATCH 0821/1277] [IMP] purchase_security: Add groups to purchase orders and new group permission feature TT44023 --- purchase_security/README.rst | 1 + purchase_security/__manifest__.py | 7 +- purchase_security/i18n/es.po | 4 +- purchase_security/i18n/purchase_security.pot | 2 + purchase_security/models/__init__.py | 1 + purchase_security/models/purchase_order.py | 7 ++ purchase_security/models/purchase_team.py | 12 ++ purchase_security/readme/CONTRIBUTORS.rst | 1 + .../security/ir.model.access.csv | 3 + purchase_security/security/security.xml | 28 ++++- .../static/description/index.html | 2 +- purchase_security/tests/test_access_rights.py | 115 +++++++++++++++++- .../views/purchase_order_views.xml | 12 ++ .../views/purchase_team_views.xml | 93 ++++++++++++++ 14 files changed, 281 insertions(+), 7 deletions(-) create mode 100644 purchase_security/models/purchase_team.py create mode 100644 purchase_security/security/ir.model.access.csv create mode 100644 purchase_security/views/purchase_team_views.xml diff --git a/purchase_security/README.rst b/purchase_security/README.rst index 902edf22830..ff20e04d70d 100644 --- a/purchase_security/README.rst +++ b/purchase_security/README.rst @@ -78,6 +78,7 @@ Contributors * João Marques * Pilar Vargas + * Stefan Ungureanu * `Solvos `_: * David Alonso diff --git a/purchase_security/__manifest__.py b/purchase_security/__manifest__.py index 9db0f140446..2c354ff92ff 100644 --- a/purchase_security/__manifest__.py +++ b/purchase_security/__manifest__.py @@ -11,7 +11,12 @@ "license": "AGPL-3", "depends": ["purchase"], "maintainers": ["pilarvargas-tecnativa"], - "data": ["security/security.xml", "views/purchase_order_views.xml"], + "data": [ + "security/security.xml", + "security/ir.model.access.csv", + "views/purchase_order_views.xml", + "views/purchase_team_views.xml", + ], "installable": True, "auto_install": False, } diff --git a/purchase_security/i18n/es.po b/purchase_security/i18n/es.po index 1e47ede510f..39dc19564ea 100644 --- a/purchase_security/i18n/es.po +++ b/purchase_security/i18n/es.po @@ -24,9 +24,9 @@ msgstr "Se puede editar el ID de usuario" #. module: purchase_security #: model:ir.model,name:purchase_security.model_purchase_order msgid "Purchase Order" -msgstr "orden de compra" +msgstr "Pedido de compra" #. module: purchase_security #: model:res.groups,name:purchase_security.group_purchase_own_orders msgid "User (own orders)" -msgstr "Usuario (sus propios pedidos)" +msgstr "Usuario (pedidos propios)" diff --git a/purchase_security/i18n/purchase_security.pot b/purchase_security/i18n/purchase_security.pot index c0a819e1bd4..78945ac980c 100644 --- a/purchase_security/i18n/purchase_security.pot +++ b/purchase_security/i18n/purchase_security.pot @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-06-23 09:35+0000\n" +"PO-Revision-Date: 2023-06-23 09:35+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" diff --git a/purchase_security/models/__init__.py b/purchase_security/models/__init__.py index 9f03530643d..a9982affd6f 100644 --- a/purchase_security/models/__init__.py +++ b/purchase_security/models/__init__.py @@ -1 +1,2 @@ from . import purchase_order +from . import purchase_team diff --git a/purchase_security/models/purchase_order.py b/purchase_security/models/purchase_order.py index b312c05eb0d..44b75c70420 100644 --- a/purchase_security/models/purchase_order.py +++ b/purchase_security/models/purchase_order.py @@ -1,4 +1,5 @@ # © 2023 Solvos Consultoría Informática () +# Copyright 2023 Tecnativa - Stefan Ungureanu # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import fields, models @@ -10,6 +11,12 @@ class PurchaseOrder(models.Model): is_user_id_editable = fields.Boolean( compute="_compute_is_user_id_editable", ) + team_id = fields.Many2one( + "purchase.team", + string="Team", + index=True, + auto_join=True, + ) def _compute_is_user_id_editable(self): is_user_id_editable = self.env.user.has_group( diff --git a/purchase_security/models/purchase_team.py b/purchase_security/models/purchase_team.py new file mode 100644 index 00000000000..72c0889deb7 --- /dev/null +++ b/purchase_security/models/purchase_team.py @@ -0,0 +1,12 @@ +# Copyright 2023 Tecnativa - Stefan Ungureanu +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class PurchaseTeam(models.Model): + _name = "purchase.team" + _description = "Purchase Team" + + name = fields.Char() + user_ids = fields.Many2many("res.users", string="Purchase Users") diff --git a/purchase_security/readme/CONTRIBUTORS.rst b/purchase_security/readme/CONTRIBUTORS.rst index 0d457e9bd24..36d57c91767 100644 --- a/purchase_security/readme/CONTRIBUTORS.rst +++ b/purchase_security/readme/CONTRIBUTORS.rst @@ -2,6 +2,7 @@ * João Marques * Pilar Vargas + * Stefan Ungureanu * `Solvos `_: * David Alonso diff --git a/purchase_security/security/ir.model.access.csv b/purchase_security/security/ir.model.access.csv new file mode 100644 index 00000000000..6daeaddfd8e --- /dev/null +++ b/purchase_security/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +purchase_security.access_purchase_team_manager,access_purchase_team,purchase_security.model_purchase_team,purchase.group_purchase_manager,1,1,1,1 +purchase_security.access_purchase_team_user,access_purchase_team,purchase_security.model_purchase_team,purchase.group_purchase_user,1,0,0,0 diff --git a/purchase_security/security/security.xml b/purchase_security/security/security.xml index 2a58930cc43..8d679c8cad3 100644 --- a/purchase_security/security/security.xml +++ b/purchase_security/security/security.xml @@ -8,10 +8,19 @@ eval="[(4, ref('purchase.group_purchase_user'))]" /> + + User (team orders) + + + @@ -30,6 +39,15 @@ >['|',('user_id','=',user.id),('user_id','=',False)] + + View purchase orders (purchase team member) + + ['|', ('team_id.user_ids', 'in', [user.id]),('team_id', '=', False)] + + + View purchase order lines (manager) @@ -47,5 +65,13 @@ >['|',('order_id.user_id','=',user.id),('order_id.user_id','=',False)] + + View purchase order lines (purchase responsible) + + ['|', ('order_id.team_id.user_ids', 'in', [user.id]), ('order_id.team_id', '=', False)] + + diff --git a/purchase_security/static/description/index.html b/purchase_security/static/description/index.html index f4efb30aab2..792c5389d21 100644 --- a/purchase_security/static/description/index.html +++ b/purchase_security/static/description/index.html @@ -1,4 +1,3 @@ - @@ -423,6 +422,7 @@

    Contributors

  • Tecnativa:
    • João Marques
    • Pilar Vargas
    • +
    • Stefan Ungureanu
  • Solvos:
      diff --git a/purchase_security/tests/test_access_rights.py b/purchase_security/tests/test_access_rights.py index 44a09eb3c5c..45ff2bf3da6 100644 --- a/purchase_security/tests/test_access_rights.py +++ b/purchase_security/tests/test_access_rights.py @@ -14,7 +14,8 @@ def setUpClass(cls): super(TestPurchaseOrderSecurity, cls).setUpClass() # Users users = cls.env["res.users"].with_context(no_reset_password=True) - group_name = "group_purchase_own_orders" + cls.team1 = cls.env["purchase.team"].create({"name": "Team1"}) + cls.team2 = cls.env["purchase.team"].create({"name": "Team2"}) # User in group_purchase_own_orders cls.user_group_purchase_own_orders = users.create( { @@ -22,7 +23,73 @@ def setUpClass(cls): "login": "group_purchase_own_orders", "email": "group_purchase_own_orders@example.com", "groups_id": [ - (6, 0, [cls.env.ref("purchase_security.%s" % group_name).id]) + ( + 6, + 0, + [cls.env.ref("purchase_security.group_purchase_own_orders").id], + ) + ], + } + ) + # User 1 in group_purchase_group_orders + cls.user_group_team_1 = users.create( + { + "name": "group_purchase_team_1_orders", + "login": "group_purchase_team_1_orders", + "email": "group_purchase_team_1_orders@example.com", + "groups_id": [ + ( + 6, + 0, + [ + cls.env.ref( + "purchase_security.group_purchase_group_orders" + ).id + ], + ) + ], + } + ) + # Adding user 1 to both teams + cls.team1.write({"user_ids": [(4, cls.user_group_team_1.id)]}) + cls.team2.write({"user_ids": [(4, cls.user_group_team_1.id)]}) + # User 2 in group_purchase_group_orders + cls.user_group_team_2 = users.create( + { + "name": "group_purchase_team_2_orders", + "login": "group_purchase_team_2_orders", + "email": "group_purchase_team_2_orders@example.com", + "groups_id": [ + ( + 6, + 0, + [ + cls.env.ref( + "purchase_security.group_purchase_group_orders" + ).id + ], + ) + ], + } + ) + # Adding user 2 to only one team + cls.team1.write({"user_ids": [(4, cls.user_group_team_2.id)]}) + # User with group permission but without being assigned to any team + cls.user_group_team_3 = users.create( + { + "name": "group_purchase_team_3_orders", + "login": "group_purchase_team_3_orders", + "email": "group_purchase_team_3_orders@example.com", + "groups_id": [ + ( + 6, + 0, + [ + cls.env.ref( + "purchase_security.group_purchase_group_orders" + ).id + ], + ) ], } ) @@ -74,11 +141,13 @@ def setUpClass(cls): "name": "po_security_3", "user_id": cls.user_po_manager.id, "partner_id": cls.partner_po.id, + "team_id": cls.team1.id, }, { "name": "po_security_4", "user_id": cls.user_group_purchase_own_orders.id, "partner_id": cls.partner_po.id, + "team_id": cls.team2.id, }, ) ) @@ -138,3 +207,45 @@ def test_access_user_without_groups(self): len(self.env["purchase.order"].with_user(self.user_without_groups).read()), 0, ) + + def test_access_user_user_group_purchase_group_orders_1(self): + # User in group should have access PO's without any team assigned, + # and to those to whose team he belongs. In this case, it belongs to + # both teams + self.assertEqual( + len( + self.env["purchase.order"] + .with_user(self.user_group_team_1) + .search([("name", "like", "po_security")]) + .ids + ), + 4, + ) + + def test_access_user_user_group_purchase_group_orders_2(self): + # User in group should have access PO's without any team assigned, + # and to those to whose team he belongs. In this case, it belongs to + # only one team, so the other order won't be seen + self.assertEqual( + len( + self.env["purchase.order"] + .with_user(self.user_group_team_2) + .search([("name", "like", "po_security")]) + .ids + ), + 3, + ) + + def test_access_user_user_group_purchase_group_orders_3(self): + # User in group should have access PO's without any team assigned, + # and to those to whose team he belongs. In this case, it does not + # belongs to any team, so the other orders won't be seen + self.assertEqual( + len( + self.env["purchase.order"] + .with_user(self.user_group_team_3) + .search([("name", "like", "po_security")]) + .ids + ), + 2, + ) diff --git a/purchase_security/views/purchase_order_views.xml b/purchase_security/views/purchase_order_views.xml index 8d226de3b82..9558a7f4f5d 100644 --- a/purchase_security/views/purchase_order_views.xml +++ b/purchase_security/views/purchase_order_views.xml @@ -14,6 +14,18 @@ } 1 + + + + diff --git a/purchase_security/views/purchase_team_views.xml b/purchase_security/views/purchase_team_views.xml new file mode 100644 index 00000000000..6ec4412112c --- /dev/null +++ b/purchase_security/views/purchase_team_views.xml @@ -0,0 +1,93 @@ + + + + purchase.team.form + purchase.team + + + +
      +
      + + + + + + + + + + +
      +
      +
      + Avatar +
      +
      + +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      + + purchase.team.form + purchase.team + + + + + + + + Purchase Teams + ir.actions.act_window + purchase.team + tree,form + + +
      From 4ee1d3ce0b897f437e5d8aa5f0994409a423293f Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sun, 23 Jul 2023 12:26:16 +0200 Subject: [PATCH 0822/1277] [IMP] purchase_security: Computed and sortable team - Fine-tune security rules. - Put sequence on teams. - Edit teams on tree. - Convert purchase order team in computed writable. - Use new_test_user in tests + useless lines for shorten code. - Extra tests [FIX] purchase_security: Fine-tune security rules - PO lines domain was not adjusted - Team rule doesn't need the second operand --- purchase_security/README.rst | 1 + purchase_security/models/purchase_order.py | 24 ++- purchase_security/models/purchase_team.py | 5 +- purchase_security/readme/CONTRIBUTORS.rst | 1 + purchase_security/security/security.xml | 11 +- .../static/description/index.html | 1 + purchase_security/tests/test_access_rights.py | 143 ++++++------------ .../views/purchase_team_views.xml | 4 +- 8 files changed, 80 insertions(+), 110 deletions(-) diff --git a/purchase_security/README.rst b/purchase_security/README.rst index ff20e04d70d..538003b185d 100644 --- a/purchase_security/README.rst +++ b/purchase_security/README.rst @@ -79,6 +79,7 @@ Contributors * João Marques * Pilar Vargas * Stefan Ungureanu + * Pedro M. Baeza * `Solvos `_: * David Alonso diff --git a/purchase_security/models/purchase_order.py b/purchase_security/models/purchase_order.py index 44b75c70420..7336046e586 100644 --- a/purchase_security/models/purchase_order.py +++ b/purchase_security/models/purchase_order.py @@ -1,8 +1,9 @@ # © 2023 Solvos Consultoría Informática () # Copyright 2023 Tecnativa - Stefan Ungureanu -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +# Copyright 2023 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import api, fields, models class PurchaseOrder(models.Model): @@ -16,6 +17,9 @@ class PurchaseOrder(models.Model): string="Team", index=True, auto_join=True, + compute="_compute_team_id", + store=True, + readonly=False, ) def _compute_is_user_id_editable(self): @@ -23,3 +27,19 @@ def _compute_is_user_id_editable(self): "purchase.group_purchase_manager" ) or not self.env.user.has_group("purchase_security.group_purchase_own_orders") self.write({"is_user_id_editable": is_user_id_editable}) + + @api.depends("user_id") + def _compute_team_id(self): + """When a user is assigned, the first team which the user belongs to is + assigned, and if no one, the first purchase team. + """ + first_team = self.env["purchase.team"].search([], limit=1) + for record in self: + if record.user_id: + team = self.env["purchase.team"].search( + [("user_ids", "=", record.user_id.id)], limit=1 + ) + if team: + record.team_id = team.id + continue + record.team_id = first_team.id diff --git a/purchase_security/models/purchase_team.py b/purchase_security/models/purchase_team.py index 72c0889deb7..67e2d75226f 100644 --- a/purchase_security/models/purchase_team.py +++ b/purchase_security/models/purchase_team.py @@ -1,4 +1,5 @@ # Copyright 2023 Tecnativa - Stefan Ungureanu +# Copyright 2023 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models @@ -7,6 +8,8 @@ class PurchaseTeam(models.Model): _name = "purchase.team" _description = "Purchase Team" + _order = "sequence,id" - name = fields.Char() + name = fields.Char(required=True) + sequence = fields.Integer(default=10) user_ids = fields.Many2many("res.users", string="Purchase Users") diff --git a/purchase_security/readme/CONTRIBUTORS.rst b/purchase_security/readme/CONTRIBUTORS.rst index 36d57c91767..eccebd01a91 100644 --- a/purchase_security/readme/CONTRIBUTORS.rst +++ b/purchase_security/readme/CONTRIBUTORS.rst @@ -3,6 +3,7 @@ * João Marques * Pilar Vargas * Stefan Ungureanu + * Pedro M. Baeza * `Solvos `_: * David Alonso diff --git a/purchase_security/security/security.xml b/purchase_security/security/security.xml index 8d679c8cad3..f8976f42d2f 100644 --- a/purchase_security/security/security.xml +++ b/purchase_security/security/security.xml @@ -36,16 +36,13 @@ ['|',('user_id','=',user.id),('user_id','=',False)] + >['|',('user_id','=',user.id),'&',('user_id','=',False),('team_id','=',False)] View purchase orders (purchase team member) - ['|', ('team_id.user_ids', 'in', [user.id]),('team_id', '=', False)] - + [('team_id.user_ids', '=', user.id)] @@ -62,7 +59,7 @@ ['|',('order_id.user_id','=',user.id),('order_id.user_id','=',False)] + >['|',('order_id.user_id','=',user.id),'&',('order_id.user_id','=',False),('order_id.team_id','=',False)] @@ -70,7 +67,7 @@ ['|', ('order_id.team_id.user_ids', 'in', [user.id]), ('order_id.team_id', '=', False)] + >[('order_id.team_id.user_ids', '=', user.id)] diff --git a/purchase_security/static/description/index.html b/purchase_security/static/description/index.html index 792c5389d21..efe2751a556 100644 --- a/purchase_security/static/description/index.html +++ b/purchase_security/static/description/index.html @@ -423,6 +423,7 @@

      Contributors

    • João Marques
    • Pilar Vargas
    • Stefan Ungureanu
    • +
    • Pedro M. Baeza
  • Solvos:
      diff --git a/purchase_security/tests/test_access_rights.py b/purchase_security/tests/test_access_rights.py index 45ff2bf3da6..00301db0374 100644 --- a/purchase_security/tests/test_access_rights.py +++ b/purchase_security/tests/test_access_rights.py @@ -1,8 +1,11 @@ # Copyright 2020 Tecnativa - Víctor Martínez +# Copyright 2023 Tecnativa - Stefan Ungureanu +# Copyright 2023 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). import logging +from odoo.tests import new_test_user from odoo.tests.common import TransactionCase _logger = logging.getLogger(__name__) @@ -11,117 +14,60 @@ class TestPurchaseOrderSecurity(TransactionCase): @classmethod def setUpClass(cls): - super(TestPurchaseOrderSecurity, cls).setUpClass() - # Users - users = cls.env["res.users"].with_context(no_reset_password=True) + super().setUpClass() + cls.env = cls.env( + context=dict( + cls.env.context, + mail_create_nolog=True, + mail_create_nosubscribe=True, + mail_notrack=True, + no_reset_password=True, + tracking_disable=True, + ) + ) + # Teams cls.team1 = cls.env["purchase.team"].create({"name": "Team1"}) cls.team2 = cls.env["purchase.team"].create({"name": "Team2"}) + # Users # User in group_purchase_own_orders - cls.user_group_purchase_own_orders = users.create( - { - "name": "group_purchase_own_orders", - "login": "group_purchase_own_orders", - "email": "group_purchase_own_orders@example.com", - "groups_id": [ - ( - 6, - 0, - [cls.env.ref("purchase_security.group_purchase_own_orders").id], - ) - ], - } + cls.user_group_purchase_own_orders = new_test_user( + cls.env, + login="group_purchase_own_orders", + groups="purchase_security.group_purchase_own_orders", ) # User 1 in group_purchase_group_orders - cls.user_group_team_1 = users.create( - { - "name": "group_purchase_team_1_orders", - "login": "group_purchase_team_1_orders", - "email": "group_purchase_team_1_orders@example.com", - "groups_id": [ - ( - 6, - 0, - [ - cls.env.ref( - "purchase_security.group_purchase_group_orders" - ).id - ], - ) - ], - } + cls.user_group_team_1 = new_test_user( + cls.env, + login="group_purchase_team_1_orders", + groups="purchase_security.group_purchase_group_orders", ) # Adding user 1 to both teams cls.team1.write({"user_ids": [(4, cls.user_group_team_1.id)]}) cls.team2.write({"user_ids": [(4, cls.user_group_team_1.id)]}) # User 2 in group_purchase_group_orders - cls.user_group_team_2 = users.create( - { - "name": "group_purchase_team_2_orders", - "login": "group_purchase_team_2_orders", - "email": "group_purchase_team_2_orders@example.com", - "groups_id": [ - ( - 6, - 0, - [ - cls.env.ref( - "purchase_security.group_purchase_group_orders" - ).id - ], - ) - ], - } + cls.user_group_team_2 = new_test_user( + cls.env, + login="group_purchase_team_2_orders", + groups="purchase_security.group_purchase_group_orders", ) # Adding user 2 to only one team cls.team1.write({"user_ids": [(4, cls.user_group_team_2.id)]}) # User with group permission but without being assigned to any team - cls.user_group_team_3 = users.create( - { - "name": "group_purchase_team_3_orders", - "login": "group_purchase_team_3_orders", - "email": "group_purchase_team_3_orders@example.com", - "groups_id": [ - ( - 6, - 0, - [ - cls.env.ref( - "purchase_security.group_purchase_group_orders" - ).id - ], - ) - ], - } + cls.user_group_team_3 = new_test_user( + cls.env, + login="group_purchase_team_3_orders", + groups="purchase_security.group_purchase_group_orders", ) # Purchase order user - cls.user_po_user = users.create( - { - "name": "po_user", - "login": "po_user", - "email": "po_user@example.com", - "groups_id": [(6, 0, [cls.env.ref("purchase.group_purchase_user").id])], - } + cls.user_po_user = new_test_user( + cls.env, login="po_user", groups="purchase.group_purchase_user" ) # Purchase order manager - cls.user_po_manager = users.create( - { - "name": "po_manager", - "login": "po_manager", - "email": "po_manager@example.com", - "groups_id": [ - (6, 0, [cls.env.ref("purchase.group_purchase_manager").id]) - ], - } + cls.user_po_manager = new_test_user( + cls.env, login="po_manager", groups="purchase.group_purchase_manager" ) # User without groups - cls.user_without_groups = users.create( - { - "name": "without_groups", - "login": "without_groups", - "email": "without_groups@example.com", - "groups_id": False, - } - ) + cls.user_without_groups = new_test_user(cls.env, login="without_groups") # Partner for the POs cls.partner_po = cls.env["res.partner"].create({"name": "PO Partner"}) # Purchase Order @@ -131,6 +77,7 @@ def setUpClass(cls): "name": "po_security_1", "partner_id": cls.partner_po.id, "user_id": False, # No Purchase Representative + "team_id": False, # No automatic team }, { "name": "po_security_2", @@ -152,6 +99,10 @@ def setUpClass(cls): ) ) + def test_po_auto_team(self): + order = self.env["purchase.order"].search([("name", "=", "po_security_2")]) + self.assertEqual(order.team_id, self.team1) + def test_access_user_user_group_purchase_own_orders(self): # User in group should have access to it's own PO # and to those w/o Purchase Representative @@ -160,7 +111,6 @@ def test_access_user_user_group_purchase_own_orders(self): self.env["purchase.order"] .with_user(self.user_group_purchase_own_orders) .search([]) - .ids ), 2, ) @@ -180,7 +130,6 @@ def test_access_user_po_user(self): self.env["purchase.order"] .with_user(self.user_po_user) .search([("name", "like", "po_security")]) - .ids ), 4, ) @@ -193,7 +142,6 @@ def test_access_user_po_manager(self): self.env["purchase.order"] .with_user(self.user_po_manager) .search([("name", "like", "po_security")]) - .ids ), 4, ) @@ -217,7 +165,6 @@ def test_access_user_user_group_purchase_group_orders_1(self): self.env["purchase.order"] .with_user(self.user_group_team_1) .search([("name", "like", "po_security")]) - .ids ), 4, ) @@ -231,21 +178,19 @@ def test_access_user_user_group_purchase_group_orders_2(self): self.env["purchase.order"] .with_user(self.user_group_team_2) .search([("name", "like", "po_security")]) - .ids ), 3, ) def test_access_user_user_group_purchase_group_orders_3(self): # User in group should have access PO's without any team assigned, - # and to those to whose team he belongs. In this case, it does not + # and to those to whose team they belongs. In this case, it does not # belongs to any team, so the other orders won't be seen self.assertEqual( len( self.env["purchase.order"] .with_user(self.user_group_team_3) .search([("name", "like", "po_security")]) - .ids ), - 2, + 1, ) diff --git a/purchase_security/views/purchase_team_views.xml b/purchase_security/views/purchase_team_views.xml index 6ec4412112c..3079f3f96c6 100644 --- a/purchase_security/views/purchase_team_views.xml +++ b/purchase_security/views/purchase_team_views.xml @@ -72,8 +72,10 @@ purchase.team.form purchase.team - + + + From 0cf4917d6304cc7722b9a3290dedf227aac1472e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Mon, 22 Jan 2024 14:07:36 +0100 Subject: [PATCH 0823/1277] [IMP] purchase_security: Restrict partners according to purchase groups Similar to sales_team_security, partners are restricted according to purchase permissions: - User (own orders): If you are a follower of the partner or there is no user or you are the partner's user. - User (team orders): If you are a follower of the partner or there is no user or you are a user of your purchasing team. - Administrator: Without the restrictions of the other groups. Add 'Purchase representative' (purchase_user_id) field to partners. Add 'Purchase team' (purchase_team_id) field to partners. TT47237 --- purchase_security/README.rst | 13 +- purchase_security/__manifest__.py | 1 + purchase_security/models/__init__.py | 3 + purchase_security/models/ir_rule.py | 57 +++++ purchase_security/models/purchase_order.py | 22 +- purchase_security/models/purchase_team.py | 8 +- purchase_security/models/res_partner.py | 20 ++ purchase_security/models/res_users.py | 19 ++ purchase_security/readme/DESCRIPTION.rst | 11 +- .../static/description/index.html | 14 +- purchase_security/tests/test_access_rights.py | 195 +++++++++++++++++- .../views/purchase_team_views.xml | 6 +- purchase_security/views/res_partner_views.xml | 59 ++++++ 13 files changed, 401 insertions(+), 27 deletions(-) create mode 100644 purchase_security/models/ir_rule.py create mode 100644 purchase_security/models/res_partner.py create mode 100644 purchase_security/models/res_users.py create mode 100644 purchase_security/views/res_partner_views.xml diff --git a/purchase_security/README.rst b/purchase_security/README.rst index 538003b185d..1f7c8db1be0 100644 --- a/purchase_security/README.rst +++ b/purchase_security/README.rst @@ -7,7 +7,7 @@ Purchase Order security !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:2644bb2f51446a5ee8a417a4cc70af517724fe84f7858e0ad32227d1e805e8d1 + !! source digest: sha256:8ccfb67f2ed3e3386975bbd551862a804eea94395ffa8e3ad8e0376689862356 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png @@ -28,10 +28,15 @@ Purchase Order security |badge1| |badge2| |badge3| |badge4| |badge5| -This addon creates a new group called "Purchase (own orders)" in Purchase. +This addon creates new groups in Purchase. -For users in this group, the only Purchase Orders they can see are those where -they are the representative, or all of them if they are managers. +Visibility of purchase orders is restricted for users in these groups. +You can only see the purchase order: + +- User (own orders): If you are a follower of the partner or there is no user + or you are the partner's user. +- User (team orders): If you are a follower of the partner or there is no user + or you are a user of your purchasing team. **Table of contents** diff --git a/purchase_security/__manifest__.py b/purchase_security/__manifest__.py index 2c354ff92ff..af4d68dcdb3 100644 --- a/purchase_security/__manifest__.py +++ b/purchase_security/__manifest__.py @@ -16,6 +16,7 @@ "security/ir.model.access.csv", "views/purchase_order_views.xml", "views/purchase_team_views.xml", + "views/res_partner_views.xml", ], "installable": True, "auto_install": False, diff --git a/purchase_security/models/__init__.py b/purchase_security/models/__init__.py index a9982affd6f..38e405adafa 100644 --- a/purchase_security/models/__init__.py +++ b/purchase_security/models/__init__.py @@ -1,2 +1,5 @@ +from . import ir_rule from . import purchase_order from . import purchase_team +from . import res_partner +from . import res_users diff --git a/purchase_security/models/ir_rule.py b/purchase_security/models/ir_rule.py new file mode 100644 index 00000000000..fd6467715ec --- /dev/null +++ b/purchase_security/models/ir_rule.py @@ -0,0 +1,57 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import api, models, tools +from odoo.osv import expression +from odoo.tools import config + + +class IrRule(models.Model): + _inherit = "ir.rule" + + @api.model + @tools.conditional( + "xml" not in config["dev_mode"], + tools.ormcache( + "self.env.uid", + "self.env.su", + "model_name", + "mode", + "tuple(self._compute_domain_context_values())", + ), + ) + def _compute_domain(self, model_name, mode="read"): + """Inject extra domain for restricting partners when the user + has the group 'Purchase / User (own orders).""" + res = super()._compute_domain(model_name, mode=mode) + user = self.env.user + group1 = "purchase_security.group_purchase_own_orders" + group2 = "purchase_security.group_purchase_group_orders" + group3 = "purchase.group_purchase_manager" + if model_name == "res.partner" and not self.env.su: + if user.has_group(group1) and not user.has_group(group3): + extra_domain = [ + "|", + ("message_partner_ids", "in", user.partner_id.ids), + "|", + ("id", "=", user.partner_id.id), + ] + if user.has_group(group2): + extra_domain += [ + "|", + ("purchase_team_id", "=", user.purchase_team_ids[:1].id), + ("purchase_team_id", "=", False), + ] + else: + extra_domain += [ + "|", + ("purchase_user_id", "=", user.id), + "&", + ("purchase_user_id", "=", False), + "|", + ("purchase_team_id", "=", False), + ("purchase_team_id", "=", user.purchase_team_ids[:1].id), + ] + extra_domain = expression.normalize_domain(extra_domain) + res = expression.AND([extra_domain] + [res]) + return res diff --git a/purchase_security/models/purchase_order.py b/purchase_security/models/purchase_order.py index 7336046e586..4e72337e093 100644 --- a/purchase_security/models/purchase_order.py +++ b/purchase_security/models/purchase_order.py @@ -1,6 +1,7 @@ # © 2023 Solvos Consultoría Informática () # Copyright 2023 Tecnativa - Stefan Ungureanu # Copyright 2023 Tecnativa - Pedro M. Baeza +# Copyright 2024 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import api, fields, models @@ -35,11 +36,18 @@ def _compute_team_id(self): """ first_team = self.env["purchase.team"].search([], limit=1) for record in self: - if record.user_id: - team = self.env["purchase.team"].search( - [("user_ids", "=", record.user_id.id)], limit=1 + record.team_id = record.user_id.purchase_team_ids[:1] or first_team + + def onchange_partner_id(self): + res = super().onchange_partner_id() + if self.partner_id: + partner = self.partner_id.commercial_partner_id + if not self.env.context.get("default_user_id"): + self.user_id = partner.purchase_user_id or self.env.user + if not self.env.context.get("default_team_id"): + self.team_id = ( + partner.purchase_team_id + or self.user_id.purchase_team_ids[:1] + or self.env["purchase.team"].search([], limit=1) ) - if team: - record.team_id = team.id - continue - record.team_id = first_team.id + return res diff --git a/purchase_security/models/purchase_team.py b/purchase_security/models/purchase_team.py index 67e2d75226f..13126178e79 100644 --- a/purchase_security/models/purchase_team.py +++ b/purchase_security/models/purchase_team.py @@ -12,4 +12,10 @@ class PurchaseTeam(models.Model): name = fields.Char(required=True) sequence = fields.Integer(default=10) - user_ids = fields.Many2many("res.users", string="Purchase Users") + user_ids = fields.Many2many( + comodel_name="res.users", + relation="purchase_team_res_users_rel", + column1="purchase_team_id", + column2="res_users_id", + string="Purchase Users", + ) diff --git a/purchase_security/models/res_partner.py b/purchase_security/models/res_partner.py new file mode 100644 index 00000000000..9e889e487de --- /dev/null +++ b/purchase_security/models/res_partner.py @@ -0,0 +1,20 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + purchase_user_id = fields.Many2one( + comodel_name="res.users", + domain="[('share', '=', False)]", + string="Purchase representative", + index=True, + ) + purchase_team_id = fields.Many2one( + comodel_name="purchase.team", + string="Purchase team", + index=True, + ) diff --git a/purchase_security/models/res_users.py b/purchase_security/models/res_users.py new file mode 100644 index 00000000000..663ce99e091 --- /dev/null +++ b/purchase_security/models/res_users.py @@ -0,0 +1,19 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + purchase_team_ids = fields.Many2many( + comodel_name="purchase.team", + relation="purchase_team_res_users_rel", + column1="res_users_id", + column2="purchase_team_id", + string="Purchases Teams", + check_company=True, + copy=False, + readonly=True, + ) diff --git a/purchase_security/readme/DESCRIPTION.rst b/purchase_security/readme/DESCRIPTION.rst index 040e02e5d7d..ec67d54b8d0 100644 --- a/purchase_security/readme/DESCRIPTION.rst +++ b/purchase_security/readme/DESCRIPTION.rst @@ -1,4 +1,9 @@ -This addon creates a new group called "Purchase (own orders)" in Purchase. +This addon creates new groups in Purchase. -For users in this group, the only Purchase Orders they can see are those where -they are the representative, or all of them if they are managers. +Visibility of purchase orders is restricted for users in these groups. +You can only see the purchase order: + +- User (own orders): If you are a follower of the partner or there is no user + or you are the partner's user. +- User (team orders): If you are a follower of the partner or there is no user + or you are a user of your purchasing team. diff --git a/purchase_security/static/description/index.html b/purchase_security/static/description/index.html index efe2751a556..599e09b69e5 100644 --- a/purchase_security/static/description/index.html +++ b/purchase_security/static/description/index.html @@ -366,12 +366,18 @@

      Purchase Order security

      !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:2644bb2f51446a5ee8a417a4cc70af517724fe84f7858e0ad32227d1e805e8d1 +!! source digest: sha256:8ccfb67f2ed3e3386975bbd551862a804eea94395ffa8e3ad8e0376689862356 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

      Production/Stable License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runboat

      -

      This addon creates a new group called “Purchase (own orders)” in Purchase.

      -

      For users in this group, the only Purchase Orders they can see are those where -they are the representative, or all of them if they are managers.

      +

      This addon creates new groups in Purchase.

      +

      Visibility of purchase orders is restricted for users in these groups. +You can only see the purchase order:

      +
        +
      • User (own orders): If you are a follower of the partner or there is no user +or you are the partner’s user.
      • +
      • User (team orders): If you are a follower of the partner or there is no user +or you are a user of your purchasing team.
      • +

      Table of contents

        diff --git a/purchase_security/tests/test_access_rights.py b/purchase_security/tests/test_access_rights.py index 00301db0374..3d0cee899f5 100644 --- a/purchase_security/tests/test_access_rights.py +++ b/purchase_security/tests/test_access_rights.py @@ -1,17 +1,14 @@ # Copyright 2020 Tecnativa - Víctor Martínez # Copyright 2023 Tecnativa - Stefan Ungureanu # Copyright 2023 Tecnativa - Pedro M. Baeza +# Copyright 2024 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -import logging +from odoo.tests import Form, common, new_test_user +from odoo.tests.common import users -from odoo.tests import new_test_user -from odoo.tests.common import TransactionCase -_logger = logging.getLogger(__name__) - - -class TestPurchaseOrderSecurity(TransactionCase): +class TestPurchaseOrderSecurity(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() @@ -99,6 +96,50 @@ def setUpClass(cls): ) ) + @users("group_purchase_team_1_orders") + def test_new_purchase_order(self): + order_form_1 = Form(self.env["purchase.order"]) + self.assertEqual(order_form_1.user_id, self.user_group_team_1) + self.assertEqual(order_form_1.team_id, self.team1) + order_form_1.partner_id = self.partner_po + self.assertEqual(order_form_1.user_id, self.user_group_team_1) + self.assertEqual(order_form_1.team_id, self.team1) + # order_form with default_user_id (user_group_team_2 > team_2) + self.team1.write({"user_ids": [(3, self.user_group_team_2.id)]}) + self.team2.write({"user_ids": [(4, self.user_group_team_2.id)]}) + order_form_2 = Form( + self.env["purchase.order"].with_context( + default_user_id=self.user_group_team_2.id + ) + ) + self.assertEqual(order_form_2.user_id, self.user_group_team_2) + self.assertEqual(order_form_2.team_id, self.team2) + order_form_2.partner_id = self.partner_po + self.assertEqual(order_form_2.user_id, self.user_group_team_2) + self.assertEqual(order_form_2.team_id, self.team2) + # order_form with default_user_id (user_group_team_3 > without team) + order_form_2 = Form( + self.env["purchase.order"].with_context( + default_user_id=self.user_group_team_3.id + ) + ) + self.assertEqual(order_form_2.user_id, self.user_group_team_3) + self.assertEqual(order_form_2.team_id, self.team1) + order_form_2.partner_id = self.partner_po + self.assertEqual(order_form_2.user_id, self.user_group_team_3) + self.assertEqual(order_form_2.team_id, self.team1) + + def _check_permission(self, user, team, expected): + self.partner_po.write( + { + "purchase_user_id": user.id if user else user, + "purchase_team_id": team.id if team else team, + } + ) + domain = [("id", "=", self.partner_po.id)] + obj = self.env[self.partner_po._name] + self.assertEqual(bool(obj.search(domain)), expected) + def test_po_auto_team(self): order = self.env["purchase.order"].search([("name", "=", "po_security_2")]) self.assertEqual(order.team_id, self.team1) @@ -194,3 +235,143 @@ def test_access_user_user_group_purchase_group_orders_3(self): ), 1, ) + + @users("po_user") + def test_partner_permissions_01(self): + """User with purchase.group_purchase_user group.""" + self._check_permission(False, False, True) + self._check_permission(False, self.team1, True) + self._check_permission(False, self.team2, True) + self._check_permission(self.user_group_purchase_own_orders, False, True) + self._check_permission(self.user_group_purchase_own_orders, self.team1, True) + self._check_permission(self.user_group_purchase_own_orders, self.team2, True) + self._check_permission(self.user_group_team_1, False, True) + self._check_permission(self.user_group_team_1, self.team1, True) + self._check_permission(self.user_group_team_1, self.team2, True) + self._check_permission(self.user_group_team_2, False, True) + self._check_permission(self.user_group_team_2, self.team1, True) + self._check_permission(self.user_group_team_2, self.team2, True) + self._check_permission(self.user_group_team_3, False, True) + self._check_permission(self.user_group_team_3, self.team1, True) + self._check_permission(self.user_group_team_3, self.team2, True) + self._check_permission(self.user_po_user, False, True) + self._check_permission(self.user_po_user, self.team1, True) + self._check_permission(self.user_po_user, self.team2, True) + self._check_permission(self.user_po_manager, False, True) + self._check_permission(self.user_po_manager, self.team1, True) + self._check_permission(self.user_po_manager, self.team2, True) + self._check_permission(self.user_without_groups, False, True) + self._check_permission(self.user_without_groups, self.team1, True) + self._check_permission(self.user_without_groups, self.team2, True) + + @users("group_purchase_own_orders") + def test_partner_permissions_02(self): + """User with purchase_security.group_purchase_own_orders group.""" + self._check_permission(False, False, True) + self._check_permission(False, self.team1, False) + self._check_permission(False, self.team2, False) + self._check_permission(self.user_group_purchase_own_orders, False, True) + self._check_permission(self.user_group_purchase_own_orders, self.team1, True) + self._check_permission(self.user_group_purchase_own_orders, self.team2, True) + self._check_permission(self.user_group_team_1, False, False) + self._check_permission(self.user_group_team_1, self.team1, False) + self._check_permission(self.user_group_team_1, self.team2, False) + self._check_permission(self.user_group_team_2, False, False) + self._check_permission(self.user_group_team_2, self.team1, False) + self._check_permission(self.user_group_team_2, self.team2, False) + self._check_permission(self.user_group_team_3, False, False) + self._check_permission(self.user_group_team_3, self.team1, False) + self._check_permission(self.user_group_team_3, self.team2, False) + self._check_permission(self.user_po_user, False, False) + self._check_permission(self.user_po_user, self.team1, False) + self._check_permission(self.user_po_user, self.team2, False) + self._check_permission(self.user_po_manager, False, False) + self._check_permission(self.user_po_manager, self.team1, False) + self._check_permission(self.user_po_manager, self.team2, False) + self._check_permission(self.user_without_groups, False, False) + self._check_permission(self.user_without_groups, self.team1, False) + self._check_permission(self.user_without_groups, self.team2, False) + + @users("group_purchase_team_1_orders") + def test_partner_permissions_03(self): + """User with purchase_security.group_purchase_group_orders group.""" + self._check_permission(False, False, True) + self._check_permission(False, self.team1, True) + self._check_permission(False, self.team2, False) + self._check_permission(self.user_group_purchase_own_orders, False, True) + self._check_permission(self.user_group_purchase_own_orders, self.team1, True) + self._check_permission(self.user_group_purchase_own_orders, self.team2, False) + self._check_permission(self.user_group_team_1, False, True) + self._check_permission(self.user_group_team_1, self.team1, True) + self._check_permission(self.user_group_team_1, self.team2, False) + self._check_permission(self.user_group_team_2, False, True) + self._check_permission(self.user_group_team_2, self.team1, True) + self._check_permission(self.user_group_team_2, self.team2, False) + self._check_permission(self.user_group_team_3, False, True) + self._check_permission(self.user_group_team_3, self.team1, True) + self._check_permission(self.user_group_team_3, self.team2, False) + self._check_permission(self.user_po_user, False, True) + self._check_permission(self.user_po_user, self.team1, True) + self._check_permission(self.user_po_user, self.team2, False) + self._check_permission(self.user_po_manager, False, True) + self._check_permission(self.user_po_manager, self.team1, True) + self._check_permission(self.user_po_manager, self.team2, False) + self._check_permission(self.user_without_groups, False, True) + self._check_permission(self.user_without_groups, self.team1, True) + self._check_permission(self.user_without_groups, self.team2, False) + + @users("po_manager") + def test_partner_permissions_04(self): + """User with purchase.group_purchase_manager group.""" + self._check_permission(False, False, True) + self._check_permission(False, self.team1, True) + self._check_permission(False, self.team2, True) + self._check_permission(self.user_group_purchase_own_orders, False, True) + self._check_permission(self.user_group_purchase_own_orders, self.team1, True) + self._check_permission(self.user_group_purchase_own_orders, self.team2, True) + self._check_permission(self.user_group_team_1, False, True) + self._check_permission(self.user_group_team_1, self.team1, True) + self._check_permission(self.user_group_team_1, self.team2, True) + self._check_permission(self.user_group_team_2, False, True) + self._check_permission(self.user_group_team_2, self.team1, True) + self._check_permission(self.user_group_team_2, self.team2, True) + self._check_permission(self.user_group_team_3, False, True) + self._check_permission(self.user_group_team_3, self.team1, True) + self._check_permission(self.user_group_team_3, self.team2, True) + self._check_permission(self.user_po_user, False, True) + self._check_permission(self.user_po_user, self.team1, True) + self._check_permission(self.user_po_user, self.team2, True) + self._check_permission(self.user_po_manager, False, True) + self._check_permission(self.user_po_manager, self.team1, True) + self._check_permission(self.user_po_manager, self.team2, True) + self._check_permission(self.user_without_groups, False, True) + self._check_permission(self.user_without_groups, self.team1, True) + self._check_permission(self.user_without_groups, self.team2, True) + + @users("without_groups") + def test_partner_permissions_05(self): + """User witout groups""" + self._check_permission(False, False, True) + self._check_permission(False, self.team1, True) + self._check_permission(False, self.team2, True) + self._check_permission(self.user_group_purchase_own_orders, False, True) + self._check_permission(self.user_group_purchase_own_orders, self.team1, True) + self._check_permission(self.user_group_purchase_own_orders, self.team2, True) + self._check_permission(self.user_group_team_1, False, True) + self._check_permission(self.user_group_team_1, self.team1, True) + self._check_permission(self.user_group_team_1, self.team2, True) + self._check_permission(self.user_group_team_2, False, True) + self._check_permission(self.user_group_team_2, self.team1, True) + self._check_permission(self.user_group_team_2, self.team2, True) + self._check_permission(self.user_group_team_3, False, True) + self._check_permission(self.user_group_team_3, self.team1, True) + self._check_permission(self.user_group_team_3, self.team2, True) + self._check_permission(self.user_po_user, False, True) + self._check_permission(self.user_po_user, self.team1, True) + self._check_permission(self.user_po_user, self.team2, True) + self._check_permission(self.user_po_manager, False, True) + self._check_permission(self.user_po_manager, self.team1, True) + self._check_permission(self.user_po_manager, self.team2, True) + self._check_permission(self.user_without_groups, False, True) + self._check_permission(self.user_without_groups, self.team1, True) + self._check_permission(self.user_without_groups, self.team2, True) diff --git a/purchase_security/views/purchase_team_views.xml b/purchase_security/views/purchase_team_views.xml index 3079f3f96c6..36fe514ceac 100644 --- a/purchase_security/views/purchase_team_views.xml +++ b/purchase_security/views/purchase_team_views.xml @@ -75,7 +75,11 @@ - + diff --git a/purchase_security/views/res_partner_views.xml b/purchase_security/views/res_partner_views.xml new file mode 100644 index 00000000000..19f40faf49f --- /dev/null +++ b/purchase_security/views/res_partner_views.xml @@ -0,0 +1,59 @@ + + + + res.partner.select + res.partner + + + + + + + + + + + + res.partner.tree + res.partner + + + + + + + + + res.partner.property.form.inherit + res.partner + + + + + + + + + + From 2315fae893e866364397a991710d550b88db9e54 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 27 Feb 2024 07:28:02 +0000 Subject: [PATCH 0824/1277] [UPD] Update purchase_security.pot --- purchase_security/i18n/purchase_security.pot | 127 ++++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/purchase_security/i18n/purchase_security.pot b/purchase_security/i18n/purchase_security.pot index 78945ac980c..0e37b1a514f 100644 --- a/purchase_security/i18n/purchase_security.pot +++ b/purchase_security/i18n/purchase_security.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-23 09:35+0000\n" -"PO-Revision-Date: 2023-06-23 09:35+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,17 +13,142 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Avatar" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_res_partner +msgid "Contact" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_date +msgid "Created on" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__id +msgid "ID" +msgstr "" + #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_order__is_user_id_editable msgid "Is User Id Editable" msgstr "" +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Members" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__name +msgid "Name" +msgstr "" + #. module: purchase_security #: model:ir.model,name:purchase_security.model_purchase_order msgid "Purchase Order" msgstr "" +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_purchase_team +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Purchase Team" +msgstr "" + +#. module: purchase_security +#: model:ir.actions.act_window,name:purchase_security.action_purchase_team_display +#: model:ir.ui.menu,name:purchase_security.menu_purchase_team_tree +msgid "Purchase Teams" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__user_ids +msgid "Purchase Users" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_user_id +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_user_id +#: model_terms:ir.ui.view,arch_db:purchase_security.view_res_partner_filter +msgid "Purchase representative" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_team_id +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_id +msgid "Purchase team" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_ids +msgid "Purchases Teams" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_ir_rule +msgid "Record Rule" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__sequence +msgid "Sequence" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_order__team_id +msgid "Team" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_res_users +msgid "User" +msgstr "" + #. module: purchase_security #: model:res.groups,name:purchase_security.group_purchase_own_orders msgid "User (own orders)" msgstr "" + +#. module: purchase_security +#: model:res.groups,name:purchase_security.group_purchase_group_orders +msgid "User (team orders)" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "e.g. Europe" +msgstr "" From f4da13f264c2b3a0cc6e444b316580415c2bc29d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 27 Feb 2024 07:32:21 +0000 Subject: [PATCH 0825/1277] [BOT] post-merge updates --- README.md | 2 +- purchase_security/README.rst | 2 +- purchase_security/__manifest__.py | 2 +- purchase_security/static/description/index.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index abe73b04831..110fb5d9d47 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ addon | version | maintainers | summary [purchase_request](purchase_request/) | 16.0.1.0.3 | | Use this module to have notification of requirements of materials and/or external services and keep track of such requirements. [purchase_request_tier_validation](purchase_request_tier_validation/) | 16.0.1.0.0 | | Extends the functionality of Purchase Requests to support a tier validation process. [purchase_requisition_tier_validation](purchase_requisition_tier_validation/) | 16.0.1.0.0 | | Extends the functionality of Purchase Agreements to support a tier validation process. -[purchase_security](purchase_security/) | 16.0.1.0.0 | [![pilarvargas-tecnativa](https://github.com/pilarvargas-tecnativa.png?size=30px)](https://github.com/pilarvargas-tecnativa) | See only your purchase orders +[purchase_security](purchase_security/) | 16.0.2.0.0 | [![pilarvargas-tecnativa](https://github.com/pilarvargas-tecnativa.png?size=30px)](https://github.com/pilarvargas-tecnativa) | See only your purchase orders [purchase_stock_packaging](purchase_stock_packaging/) | 16.0.1.0.0 | [![rousseldenis](https://github.com/rousseldenis.png?size=30px)](https://github.com/rousseldenis) | Allows to transmit the product packaging from the procurement values to the generated purchase order line [purchase_tag](purchase_tag/) | 16.0.1.1.0 | | Allows to add multiple tags to purchase orders [purchase_tier_validation](purchase_tier_validation/) | 16.0.1.1.0 | | Extends the functionality of Purchase Orders to support a tier validation process. diff --git a/purchase_security/README.rst b/purchase_security/README.rst index 1f7c8db1be0..c388628141a 100644 --- a/purchase_security/README.rst +++ b/purchase_security/README.rst @@ -7,7 +7,7 @@ Purchase Order security !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:8ccfb67f2ed3e3386975bbd551862a804eea94395ffa8e3ad8e0376689862356 + !! source digest: sha256:c16cac2ffcc0b82500b7eacd7f41279805c1df3dacd03c09ca1ee90726358a5e !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png diff --git a/purchase_security/__manifest__.py b/purchase_security/__manifest__.py index af4d68dcdb3..b3449db5f91 100644 --- a/purchase_security/__manifest__.py +++ b/purchase_security/__manifest__.py @@ -2,7 +2,7 @@ { "name": "Purchase Order security", - "version": "16.0.1.0.0", + "version": "16.0.2.0.0", "category": "Purchase", "development_status": "Production/Stable", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/purchase_security/static/description/index.html b/purchase_security/static/description/index.html index 599e09b69e5..4daabf2e435 100644 --- a/purchase_security/static/description/index.html +++ b/purchase_security/static/description/index.html @@ -366,7 +366,7 @@

        Purchase Order security

        !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:8ccfb67f2ed3e3386975bbd551862a804eea94395ffa8e3ad8e0376689862356 +!! source digest: sha256:c16cac2ffcc0b82500b7eacd7f41279805c1df3dacd03c09ca1ee90726358a5e !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

        Production/Stable License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runboat

        This addon creates new groups in Purchase.

        From 13ae703f621d919a9d75f9c15a0e61110d1f25b6 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 27 Feb 2024 08:02:02 +0000 Subject: [PATCH 0826/1277] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_security Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_security/ --- purchase_security/i18n/es.po | 127 +++++++++++++++++++++++++++++++++++ purchase_security/i18n/it.po | 127 +++++++++++++++++++++++++++++++++++ 2 files changed, 254 insertions(+) diff --git a/purchase_security/i18n/es.po b/purchase_security/i18n/es.po index 39dc19564ea..17e65158f3a 100644 --- a/purchase_security/i18n/es.po +++ b/purchase_security/i18n/es.po @@ -16,17 +16,144 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.17\n" +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "" +"" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Avatar" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_res_partner +msgid "Contact" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_date +msgid "Created on" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__id +msgid "ID" +msgstr "" + #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_order__is_user_id_editable msgid "Is User Id Editable" msgstr "Se puede editar el ID de usuario" +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Members" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__name +msgid "Name" +msgstr "" + #. module: purchase_security #: model:ir.model,name:purchase_security.model_purchase_order msgid "Purchase Order" msgstr "Pedido de compra" +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_purchase_team +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Purchase Team" +msgstr "" + +#. module: purchase_security +#: model:ir.actions.act_window,name:purchase_security.action_purchase_team_display +#: model:ir.ui.menu,name:purchase_security.menu_purchase_team_tree +msgid "Purchase Teams" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__user_ids +msgid "Purchase Users" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_user_id +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_user_id +#: model_terms:ir.ui.view,arch_db:purchase_security.view_res_partner_filter +msgid "Purchase representative" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_team_id +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_id +msgid "Purchase team" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_ids +msgid "Purchases Teams" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_ir_rule +msgid "Record Rule" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__sequence +msgid "Sequence" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_order__team_id +msgid "Team" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_res_users +msgid "User" +msgstr "" + #. module: purchase_security #: model:res.groups,name:purchase_security.group_purchase_own_orders msgid "User (own orders)" msgstr "Usuario (pedidos propios)" + +#. module: purchase_security +#: model:res.groups,name:purchase_security.group_purchase_group_orders +msgid "User (team orders)" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "e.g. Europe" +msgstr "" diff --git a/purchase_security/i18n/it.po b/purchase_security/i18n/it.po index 05cf30ad207..23b7fa38d70 100644 --- a/purchase_security/i18n/it.po +++ b/purchase_security/i18n/it.po @@ -16,17 +16,144 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.17\n" +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "" +"" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Avatar" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_res_partner +msgid "Contact" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_date +msgid "Created on" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__id +msgid "ID" +msgstr "" + #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_order__is_user_id_editable msgid "Is User Id Editable" msgstr "L'ID utente è modificabile" +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Members" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__name +msgid "Name" +msgstr "" + #. module: purchase_security #: model:ir.model,name:purchase_security.model_purchase_order msgid "Purchase Order" msgstr "Ordine di acquisto" +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_purchase_team +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "Purchase Team" +msgstr "" + +#. module: purchase_security +#: model:ir.actions.act_window,name:purchase_security.action_purchase_team_display +#: model:ir.ui.menu,name:purchase_security.menu_purchase_team_tree +msgid "Purchase Teams" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__user_ids +msgid "Purchase Users" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_user_id +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_user_id +#: model_terms:ir.ui.view,arch_db:purchase_security.view_res_partner_filter +msgid "Purchase representative" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_team_id +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_id +msgid "Purchase team" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_ids +msgid "Purchases Teams" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_ir_rule +msgid "Record Rule" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_team__sequence +msgid "Sequence" +msgstr "" + +#. module: purchase_security +#: model:ir.model.fields,field_description:purchase_security.field_purchase_order__team_id +msgid "Team" +msgstr "" + +#. module: purchase_security +#: model:ir.model,name:purchase_security.model_res_users +msgid "User" +msgstr "" + #. module: purchase_security #: model:res.groups,name:purchase_security.group_purchase_own_orders msgid "User (own orders)" msgstr "Utente (solo propri ordini)" + +#. module: purchase_security +#: model:res.groups,name:purchase_security.group_purchase_group_orders +msgid "User (team orders)" +msgstr "" + +#. module: purchase_security +#: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form +msgid "e.g. Europe" +msgstr "" From 08946d6614ee53243f9a3a451b655aec5defa5cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 6 Apr 2022 17:44:16 +0200 Subject: [PATCH 0827/1277] [ADD] purchase_order_price_recalculation: New addon. TT33369 [UPD] Update purchase_order_price_recalculation.pot [UPD] README.rst --- purchase_order_price_recalculation/README.rst | 101 ++++ .../__init__.py | 1 + .../__manifest__.py | 14 + purchase_order_price_recalculation/i18n/es.po | 52 ++ .../purchase_order_price_recalculation.pot | 46 ++ .../models/__init__.py | 2 + .../models/purchase_order.py | 13 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 7 + .../readme/USAGE.rst | 7 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 444 ++++++++++++++++++ .../tests/__init__.py | 2 + ...test_purchase_order_price_recalculation.py | 42 ++ .../views/purchase_order_view.xml | 19 + 15 files changed, 754 insertions(+) create mode 100644 purchase_order_price_recalculation/README.rst create mode 100644 purchase_order_price_recalculation/__init__.py create mode 100644 purchase_order_price_recalculation/__manifest__.py create mode 100644 purchase_order_price_recalculation/i18n/es.po create mode 100644 purchase_order_price_recalculation/i18n/purchase_order_price_recalculation.pot create mode 100644 purchase_order_price_recalculation/models/__init__.py create mode 100644 purchase_order_price_recalculation/models/purchase_order.py create mode 100644 purchase_order_price_recalculation/readme/CONTRIBUTORS.rst create mode 100644 purchase_order_price_recalculation/readme/DESCRIPTION.rst create mode 100644 purchase_order_price_recalculation/readme/USAGE.rst create mode 100644 purchase_order_price_recalculation/static/description/icon.png create mode 100644 purchase_order_price_recalculation/static/description/index.html create mode 100644 purchase_order_price_recalculation/tests/__init__.py create mode 100644 purchase_order_price_recalculation/tests/test_purchase_order_price_recalculation.py create mode 100644 purchase_order_price_recalculation/views/purchase_order_view.xml diff --git a/purchase_order_price_recalculation/README.rst b/purchase_order_price_recalculation/README.rst new file mode 100644 index 00000000000..b757c0d5fe4 --- /dev/null +++ b/purchase_order_price_recalculation/README.rst @@ -0,0 +1,101 @@ +======================================= +Price recalculation in purchases orders +======================================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_order_price_recalculation + :alt: OCA/purchase-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_order_price_recalculation + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/142/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds one button on purchase orders (below the lines) that: + +* Recalculates the prices of the order lines that contain a product in them. + +It is launched manually as a button to get the user to decide if he/she wants to +recalculate prices when vendor is changed or after duplicating a purchase order +to update or not purchase information. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. Go to *Purchase -> Products > Products* and create some record and set differente prices to vendors in Purchase tab, for example: Vendor 1: 10 and Vendor 2: 20. +#. Go to *Purchase -> Orders > Requests for Quotation* and create some record and set Vendor 1. +#. Add a line with the previously created product. +#. The unit price of the product is 10. +#. Change vendor to Vendor 2. +#. Click on the "Update lines info" button. +#. The unit price of the product is 20. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +This module is part of the `OCA/purchase-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_order_price_recalculation/__init__.py b/purchase_order_price_recalculation/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/purchase_order_price_recalculation/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_order_price_recalculation/__manifest__.py b/purchase_order_price_recalculation/__manifest__.py new file mode 100644 index 00000000000..746b6e42f69 --- /dev/null +++ b/purchase_order_price_recalculation/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Price recalculation in purchases orders", + "version": "14.0.1.0.0", + "category": "Purchase Management", + "website": "https://github.com/OCA/purchase-workflow", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["purchase"], + "data": ["views/purchase_order_view.xml"], + "maintainers": ["victoralmau"], +} diff --git a/purchase_order_price_recalculation/i18n/es.po b/purchase_order_price_recalculation/i18n/es.po new file mode 100644 index 00000000000..7770fca2915 --- /dev/null +++ b/purchase_order_price_recalculation/i18n/es.po @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_price_recalculation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-05-03 08:04+0000\n" +"PO-Revision-Date: 2022-05-03 10:06+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 2.3\n" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__id +msgid "ID" +msgstr "ID" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: purchase_order_price_recalculation +#: model:ir.model,name:purchase_order_price_recalculation.model_purchase_order +msgid "Purchase Order" +msgstr "Pedido de compra" + +#. module: purchase_order_price_recalculation +#: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form +msgid "" +"This will update all the line prices based on the vendor currently set. Do " +"you want to continue?" +msgstr "" +"Esto actualizará todos los precios de la línea según el proveedor " +"establecido actualmente. ¿Quiere continuar?" + +#. module: purchase_order_price_recalculation +#: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form +msgid "Update lines info" +msgstr "Actualizar información de líneas" diff --git a/purchase_order_price_recalculation/i18n/purchase_order_price_recalculation.pot b/purchase_order_price_recalculation/i18n/purchase_order_price_recalculation.pot new file mode 100644 index 00000000000..35233a6c6c7 --- /dev/null +++ b/purchase_order_price_recalculation/i18n/purchase_order_price_recalculation.pot @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_price_recalculation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__id +msgid "ID" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model:ir.model,name:purchase_order_price_recalculation.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form +msgid "" +"This will update all the line prices based on the vendor currently set. Do " +"you want to continue?" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form +msgid "Update lines info" +msgstr "" diff --git a/purchase_order_price_recalculation/models/__init__.py b/purchase_order_price_recalculation/models/__init__.py new file mode 100644 index 00000000000..2eaf7ea0a8b --- /dev/null +++ b/purchase_order_price_recalculation/models/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from . import purchase_order diff --git a/purchase_order_price_recalculation/models/purchase_order.py b/purchase_order_price_recalculation/models/purchase_order.py new file mode 100644 index 00000000000..41a7c3a9ca4 --- /dev/null +++ b/purchase_order_price_recalculation/models/purchase_order.py @@ -0,0 +1,13 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import models + + +class PurchaseOrder(models.Model): + _inherit = "purchase.order" + + def update_lines_info(self): + self.ensure_one() + for line in self.order_line: + line._onchange_quantity() + return True diff --git a/purchase_order_price_recalculation/readme/CONTRIBUTORS.rst b/purchase_order_price_recalculation/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..5fb71305308 --- /dev/null +++ b/purchase_order_price_recalculation/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/purchase_order_price_recalculation/readme/DESCRIPTION.rst b/purchase_order_price_recalculation/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..68b30bb5ec5 --- /dev/null +++ b/purchase_order_price_recalculation/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +This module adds one button on purchase orders (below the lines) that: + +* Recalculates the prices of the order lines that contain a product in them. + +It is launched manually as a button to get the user to decide if he/she wants to +recalculate prices when vendor is changed or after duplicating a purchase order +to update or not purchase information. diff --git a/purchase_order_price_recalculation/readme/USAGE.rst b/purchase_order_price_recalculation/readme/USAGE.rst new file mode 100644 index 00000000000..a66ad865a42 --- /dev/null +++ b/purchase_order_price_recalculation/readme/USAGE.rst @@ -0,0 +1,7 @@ +#. Go to *Purchase -> Products > Products* and create some record and set differente prices to vendors in Purchase tab, for example: Vendor 1: 10 and Vendor 2: 20. +#. Go to *Purchase -> Orders > Requests for Quotation* and create some record and set Vendor 1. +#. Add a line with the previously created product. +#. The unit price of the product is 10. +#. Change vendor to Vendor 2. +#. Click on the "Update lines info" button. +#. The unit price of the product is 20. diff --git a/purchase_order_price_recalculation/static/description/icon.png b/purchase_order_price_recalculation/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/purchase_order_price_recalculation/static/description/index.html b/purchase_order_price_recalculation/static/description/index.html new file mode 100644 index 00000000000..3240b8c6639 --- /dev/null +++ b/purchase_order_price_recalculation/static/description/index.html @@ -0,0 +1,444 @@ + + + + + + +Price recalculation in purchases orders + + + +
        +

        Price recalculation in purchases orders

        + + +

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

        +

        This module adds one button on purchase orders (below the lines) that:

        +
          +
        • Recalculates the prices of the order lines that contain a product in them.
        • +
        +

        It is launched manually as a button to get the user to decide if he/she wants to +recalculate prices when vendor is changed or after duplicating a purchase order +to update or not purchase information.

        +

        Table of contents

        + +
        +

        Usage

        +
          +
        1. Go to Purchase -> Products > Products and create some record and set differente prices to vendors in Purchase tab, for example: Vendor 1: 10 and Vendor 2: 20.
        2. +
        3. Go to Purchase -> Orders > Requests for Quotation and create some record and set Vendor 1.
        4. +
        5. Add a line with the previously created product.
        6. +
        7. The unit price of the product is 10.
        8. +
        9. Change vendor to Vendor 2.
        10. +
        11. Click on the “Update lines info” button.
        12. +
        13. The unit price of the product is 20.
        14. +
        +
        +
        +

        Bug Tracker

        +

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

        +

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

        +
        +
        +

        Credits

        +
        +

        Authors

        +
          +
        • Tecnativa
        • +
        +
        +
        +

        Contributors

        +
          +
        • Tecnativa:
            +
          • Víctor Martínez
          • +
          • Pedro M. Baeza
          • +
          +
        • +
        +
        +
        +

        Maintainers

        +

        This module is maintained by the OCA.

        +Odoo Community Association +

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

        +

        Current maintainer:

        +

        victoralmau

        +

        This module is part of the OCA/purchase-workflow project on GitHub.

        +

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

        +
        +
        +
        + + diff --git a/purchase_order_price_recalculation/tests/__init__.py b/purchase_order_price_recalculation/tests/__init__.py new file mode 100644 index 00000000000..3f6b4227301 --- /dev/null +++ b/purchase_order_price_recalculation/tests/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from . import test_purchase_order_price_recalculation diff --git a/purchase_order_price_recalculation/tests/test_purchase_order_price_recalculation.py b/purchase_order_price_recalculation/tests/test_purchase_order_price_recalculation.py new file mode 100644 index 00000000000..93f37ac5a54 --- /dev/null +++ b/purchase_order_price_recalculation/tests/test_purchase_order_price_recalculation.py @@ -0,0 +1,42 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + +from odoo.tests import Form, common + + +class TestPurchaseOrderPriceRecalculation(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner_a = cls.env["res.partner"].create({"name": "Test partner A"}) + cls.partner_b = cls.env["res.partner"].create({"name": "Test partner B"}) + cls.product = cls.env["product.product"].create( + { + "name": "Test product", + "seller_ids": [ + (0, 0, {"name": cls.partner_a.id, "price": 10}), + (0, 0, {"name": cls.partner_b.id, "price": 20}), + ], + } + ) + cls.order = cls._create_order(cls, cls.partner_a) + + def _create_order(self, partner): + order_form = Form(self.env["purchase.order"]) + order_form.partner_id = partner + with order_form.order_line.new() as line_form: + line_form.product_id = self.product + line_form.product_qty = 1 + return order_form.save() + + def test_order_update_lines_info(self): + product_line = self.order.order_line + self.assertEqual(product_line.price_unit, 10) + # Test form + order_form = Form(self.order) + order_form.partner_id = self.partner_b + # Update partner + self.order.partner_id = self.partner_b + self.assertEqual(product_line.price_unit, 10) + self.order.update_lines_info() + self.assertEqual(product_line.price_unit, 20) diff --git a/purchase_order_price_recalculation/views/purchase_order_view.xml b/purchase_order_price_recalculation/views/purchase_order_view.xml new file mode 100644 index 00000000000..b310c841b05 --- /dev/null +++ b/purchase_order_price_recalculation/views/purchase_order_view.xml @@ -0,0 +1,19 @@ + + + + purchase.order + + + + + + From 88148d020fe917e30a71c7647dfe72e7e77e6fbc Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Wed, 16 Nov 2022 17:33:19 +0000 Subject: [PATCH 0828/1277] Added translation using Weblate (Italian) --- purchase_order_price_recalculation/i18n/it.po | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 purchase_order_price_recalculation/i18n/it.po diff --git a/purchase_order_price_recalculation/i18n/it.po b/purchase_order_price_recalculation/i18n/it.po new file mode 100644 index 00000000000..e05819377e9 --- /dev/null +++ b/purchase_order_price_recalculation/i18n/it.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_price_recalculation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\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" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__id +msgid "ID" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model:ir.model,name:purchase_order_price_recalculation.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form +msgid "" +"This will update all the line prices based on the vendor currently set. Do " +"you want to continue?" +msgstr "" + +#. module: purchase_order_price_recalculation +#: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form +msgid "Update lines info" +msgstr "" From 38ec7e972efb8c82d94cd4d7d2b97181791dccc6 Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Wed, 16 Nov 2022 17:33:26 +0000 Subject: [PATCH 0829/1277] Translated using Weblate (Italian) Currently translated at 100.0% (6 of 6 strings) Translation: purchase-workflow-14.0/purchase-workflow-14.0-purchase_order_price_recalculation Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_order_price_recalculation/it/ --- purchase_order_price_recalculation/i18n/it.po | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/purchase_order_price_recalculation/i18n/it.po b/purchase_order_price_recalculation/i18n/it.po index e05819377e9..001a47c5360 100644 --- a/purchase_order_price_recalculation/i18n/it.po +++ b/purchase_order_price_recalculation/i18n/it.po @@ -6,33 +6,35 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2022-11-16 19:44+0000\n" +"Last-Translator: Francesco Foresti \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14.1\n" #. module: purchase_order_price_recalculation #: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__display_name msgid "Display Name" -msgstr "" +msgstr "Nome da visualizzare" #. module: purchase_order_price_recalculation #: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__id msgid "ID" -msgstr "" +msgstr "ID" #. module: purchase_order_price_recalculation #: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: purchase_order_price_recalculation #: model:ir.model,name:purchase_order_price_recalculation.model_purchase_order msgid "Purchase Order" -msgstr "" +msgstr "Ordine di acquisto" #. module: purchase_order_price_recalculation #: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form @@ -40,8 +42,10 @@ msgid "" "This will update all the line prices based on the vendor currently set. Do " "you want to continue?" msgstr "" +"Questo aggiornerà i prezzi di tutte le righe sulla base del fornitore " +"impostato in questo momento. Vuoi continuare?" #. module: purchase_order_price_recalculation #: model_terms:ir.ui.view,arch_db:purchase_order_price_recalculation.purchase_order_form msgid "Update lines info" -msgstr "" +msgstr "Aggiorna info righe" From 92386bbe392febf07d25071c7e263f77b83a7d3b Mon Sep 17 00:00:00 2001 From: mymage Date: Thu, 23 Mar 2023 10:53:45 +0000 Subject: [PATCH 0830/1277] Translated using Weblate (Italian) Currently translated at 100.0% (6 of 6 strings) Translation: purchase-workflow-14.0/purchase-workflow-14.0-purchase_order_price_recalculation Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_order_price_recalculation/it/ [UPD] README.rst --- purchase_order_price_recalculation/README.rst | 15 ++++--- purchase_order_price_recalculation/i18n/it.po | 6 +-- .../static/description/index.html | 40 ++++++++++--------- 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/purchase_order_price_recalculation/README.rst b/purchase_order_price_recalculation/README.rst index b757c0d5fe4..543e78d9674 100644 --- a/purchase_order_price_recalculation/README.rst +++ b/purchase_order_price_recalculation/README.rst @@ -2,10 +2,13 @@ Price recalculation in purchases orders ======================================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:990cd9a9f28aac588b8afdc0bcfb334edc4b5e6c94c6d2a39f056f32f13cfebc + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Price recalculation in purchases orders .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_order_price_recalculation :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/14.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=14.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds one button on purchase orders (below the lines) that: @@ -54,7 +57,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +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. diff --git a/purchase_order_price_recalculation/i18n/it.po b/purchase_order_price_recalculation/i18n/it.po index 001a47c5360..462dd5690bf 100644 --- a/purchase_order_price_recalculation/i18n/it.po +++ b/purchase_order_price_recalculation/i18n/it.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2022-11-16 19:44+0000\n" -"Last-Translator: Francesco Foresti \n" +"PO-Revision-Date: 2023-03-23 13:24+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" @@ -19,7 +19,7 @@ msgstr "" #. module: purchase_order_price_recalculation #: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__display_name msgid "Display Name" -msgstr "Nome da visualizzare" +msgstr "Nome visualizzato" #. module: purchase_order_price_recalculation #: model:ir.model.fields,field_description:purchase_order_price_recalculation.field_purchase_order__id diff --git a/purchase_order_price_recalculation/static/description/index.html b/purchase_order_price_recalculation/static/description/index.html index 3240b8c6639..100a763ea8d 100644 --- a/purchase_order_price_recalculation/static/description/index.html +++ b/purchase_order_price_recalculation/static/description/index.html @@ -1,20 +1,20 @@ - + - + Price recalculation in purchases orders + + +
        +

        Purchase Order Product Attachment Mgmt

        + + +

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

        +

        This module allows to get all attachments from all products of a purchase on a view.

        +

        Table of contents

        + +
        +

        Usage

        +
          +
        1. Go to Purchase -> Orders > Purchase Orders and create or edit some record.
        2. +
        3. The smart-button “Attachments” display the attachments of the product lines.
        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 smashing it by providing a detailed and welcomed +feedback.

        +

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

        +
        +
        +

        Credits

        +
        +

        Authors

        +
          +
        • Tecnativa
        • +
        +
        +
        +

        Contributors

        +
          +
        • Tecnativa:
            +
          • Víctor Martínez
          • +
          • Pedro M. Baeza
          • +
          +
        • +
        +
        +
        +

        Maintainers

        +

        This module is maintained by the OCA.

        +Odoo Community Association +

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

        +

        Current maintainer:

        +

        victoralmau

        +

        This module is part of the OCA/purchase-workflow project on GitHub.

        +

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

        +
        +
        +
        + + diff --git a/purchase_order_product_attachment_mgmt/tests/__init__.py b/purchase_order_product_attachment_mgmt/tests/__init__.py new file mode 100644 index 00000000000..4d931d95937 --- /dev/null +++ b/purchase_order_product_attachment_mgmt/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + +from . import test_purchase_order_product_attachment_mgmt diff --git a/purchase_order_product_attachment_mgmt/tests/test_purchase_order_product_attachment_mgmt.py b/purchase_order_product_attachment_mgmt/tests/test_purchase_order_product_attachment_mgmt.py new file mode 100644 index 00000000000..3c844e9a562 --- /dev/null +++ b/purchase_order_product_attachment_mgmt/tests/test_purchase_order_product_attachment_mgmt.py @@ -0,0 +1,48 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import base64 + +from odoo.tests import Form, common + + +class TestPurchaseOrderProductAttachmentMgmt(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner = cls.env["res.partner"].create({"name": "Mr Odoo"}) + cls.product_a = cls.env["product.product"].create({"name": "Test Product A"}) + cls.product_b = cls.env["product.product"].create({"name": "Test Product B"}) + cls.purchase_order = cls._create_purchase_order(cls) + + def _create_purchase_order(self): + order_form = Form(self.env["purchase.order"]) + order_form.partner_id = self.partner + with order_form.order_line.new() as line_form: + line_form.product_id = self.product_a + with order_form.order_line.new() as line_form: + line_form.product_id = self.product_b + return order_form.save() + + def _create_attachment(self, product): + return self.env["ir.attachment"].create( + { + "name": "Test file %s" % product.name, + "res_model": product._name, + "res_id": product.id, + "datas": base64.b64encode(b"\xff data"), + } + ) + + def test_purchase_order_documents(self): + attachment_a = self._create_attachment(self.product_a) + action = self.purchase_order.action_see_purchase_order_attachments() + attachments = self.env["ir.attachment"].search(action["domain"]) + self.assertIn(attachment_a.id, attachments.ids) + self.assertIn(self.product_a.id, attachments.mapped("res_id")) + self.assertNotIn(self.product_b.id, attachments.mapped("res_id")) + attachment_b = self._create_attachment(self.product_b) + action = self.purchase_order.action_see_purchase_order_attachments() + attachments = self.env["ir.attachment"].search(action["domain"]) + self.assertIn(attachment_b.id, attachments.ids) + self.assertIn(self.product_a.id, attachments.mapped("res_id")) + self.assertIn(self.product_b.id, attachments.mapped("res_id")) diff --git a/purchase_order_product_attachment_mgmt/views/purchase_order_view.xml b/purchase_order_product_attachment_mgmt/views/purchase_order_view.xml new file mode 100644 index 00000000000..b854939e450 --- /dev/null +++ b/purchase_order_product_attachment_mgmt/views/purchase_order_view.xml @@ -0,0 +1,29 @@ + + + + purchase.order.form + purchase.order + + + +
      @@ -427,7 +428,7 @@

      Maintainers

      promote its widespread use.

      Current maintainer:

      victoralmau

      -

      This module is part of the OCA/purchase-workflow project on GitHub.

      +

      This module is part of the OCA/purchase-workflow project on GitHub.

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

  • From 9ef06ac972e9bf8db5a0a7d3f06a2bc3a74f6d5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 26 Oct 2022 08:46:41 +0200 Subject: [PATCH 0851/1277] [FIX] Change SavepointCase to TransactionCase purchase_order_qty_change_no_recompute 15.0.1.0.1 --- purchase_order_qty_change_no_recompute/__manifest__.py | 2 +- .../tests/test_purchase_order_qty_change.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/purchase_order_qty_change_no_recompute/__manifest__.py b/purchase_order_qty_change_no_recompute/__manifest__.py index 87ceff9d136..bff8eb40abb 100644 --- a/purchase_order_qty_change_no_recompute/__manifest__.py +++ b/purchase_order_qty_change_no_recompute/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Order Qty change no recompute", "summary": "Prevent recompute if only quantity has changed in purchase order line", - "version": "15.0.1.0.0", + "version": "15.0.1.0.1", "category": "Purchases", "website": "https://github.com/OCA/purchase-workflow", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/purchase_order_qty_change_no_recompute/tests/test_purchase_order_qty_change.py b/purchase_order_qty_change_no_recompute/tests/test_purchase_order_qty_change.py index a0e8e5ad1eb..d61773a7d08 100644 --- a/purchase_order_qty_change_no_recompute/tests/test_purchase_order_qty_change.py +++ b/purchase_order_qty_change_no_recompute/tests/test_purchase_order_qty_change.py @@ -1,9 +1,9 @@ # Copyright 2021 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests.common import Form, SavepointCase +from odoo.tests.common import Form, TransactionCase -class TestPurchaseOrderQtyChange(SavepointCase): +class TestPurchaseOrderQtyChange(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() From 99ac7b82124bffe4d52f22d6cd0ee78e0f3b7dbd Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Thu, 13 Jul 2023 07:58:23 +0000 Subject: [PATCH 0852/1277] Added translation using Weblate (Spanish) Translated using Weblate (Spanish) Currently translated at 100.0% (1 of 1 strings) Translation: purchase-workflow-15.0/purchase-workflow-15.0-purchase_order_qty_change_no_recompute Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_order_qty_change_no_recompute/es/ [UPD] README.rst --- .../README.rst | 15 ++++--- .../i18n/es.po | 22 ++++++++++ .../static/description/index.html | 40 ++++++++++--------- 3 files changed, 52 insertions(+), 25 deletions(-) create mode 100644 purchase_order_qty_change_no_recompute/i18n/es.po diff --git a/purchase_order_qty_change_no_recompute/README.rst b/purchase_order_qty_change_no_recompute/README.rst index 55bded23f5c..af69ba02a4e 100644 --- a/purchase_order_qty_change_no_recompute/README.rst +++ b/purchase_order_qty_change_no_recompute/README.rst @@ -2,10 +2,13 @@ Purchase Order Qty change no recompute ====================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:8da639b20ed31ded8069c09c61e84128d5c62834ea8d58879a3e5c3bd7ff5183 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Purchase Order Qty change no recompute .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_order_qty_change_no_recompute :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module prevents to recompute if only quantity has changed in purchase order line. @@ -47,7 +50,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +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. diff --git a/purchase_order_qty_change_no_recompute/i18n/es.po b/purchase_order_qty_change_no_recompute/i18n/es.po new file mode 100644 index 00000000000..5f11af72699 --- /dev/null +++ b/purchase_order_qty_change_no_recompute/i18n/es.po @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_qty_change_no_recompute +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-07-13 10:09+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\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: purchase_order_qty_change_no_recompute +#: model:ir.model,name:purchase_order_qty_change_no_recompute.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Línea de pedido de compra" diff --git a/purchase_order_qty_change_no_recompute/static/description/index.html b/purchase_order_qty_change_no_recompute/static/description/index.html index 4faec234215..da89d161324 100644 --- a/purchase_order_qty_change_no_recompute/static/description/index.html +++ b/purchase_order_qty_change_no_recompute/static/description/index.html @@ -1,20 +1,20 @@ - + - + Purchase Order Qty change no recompute + + +
    +

    Procurement Purchase No Grouping

    + + +

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

    +

    This module allows to not group generated purchase orders from procurements. +The grouping behaviour can be configurable at product category level.

    +

    Table of contents

    + +
    +

    Configuration

    +

    Go to each product category, and select one of these values in the field +“Procured purchase grouping”:

    +
      +
    • Standard grouping (default): With this option, procurements will generate +purchase orders as always, grouping lines and orders when possible.
    • +
    • No line grouping: With this value, if there are any open purchase order +for the same supplier, it will be reused, but lines won’t be merged.
    • +
    • No order grouping: This option will prevent any kind of grouping.
    • +
    +
    +
    +

    Bug Tracker

    +

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

    +

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

    +
    +
    +

    Credits

    +
    +

    Authors

    +
      +
    • AvanzOSC
    • +
    • Tecnativa
    • +
    +
    +
    +

    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/purchase-workflow project on GitHub.

    +

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

    +
    +
    +
    + + diff --git a/procurement_purchase_no_grouping/tests/test_procurement_purchase_no_grouping.py b/procurement_purchase_no_grouping/tests/test_procurement_purchase_no_grouping.py index bf32a31272e..82d30af1eb5 100644 --- a/procurement_purchase_no_grouping/tests/test_procurement_purchase_no_grouping.py +++ b/procurement_purchase_no_grouping/tests/test_procurement_purchase_no_grouping.py @@ -1,6 +1,7 @@ # Copyright 2015-2017 - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import fields from odoo.tests import common @@ -24,69 +25,66 @@ def setUpClass(cls): }), ]} ) - cls.procurement = cls.env['procurement.order'].create({ - 'name': 'Procurement test', - 'product_id': cls.product.id, - 'product_uom': cls.product.uom_id.id, - 'warehouse_id': cls.env.ref('stock.warehouse0').id, - 'location_id': cls.env.ref('stock.stock_location_stock').id, - 'route_ids': [ - (6, 0, [cls.env.ref('purchase.route_warehouse0_buy').id]), - ], - 'product_qty': 1.0, + # FIXME: Core doesn't find correctly supplier if this is not set + cls.product.seller_ids.product_id = cls.product.id + cls.location = cls.env.ref('stock.stock_location_stock') + cls.picking_type = cls.env.ref('stock.picking_type_in') + cls.origin = 'Test procurement_purchase_no_grouping' + cls.stock_location_route = cls.env.ref('purchase.route_warehouse0_buy') + cls.procurement_rule = cls.stock_location_route.pull_ids[0] + cls.values = { + # FIXME: Core doesn't find correctly supplier if not recordset + 'company_id': cls.env.user.company_id, + 'date_planned': fields.Datetime.now(), } + + def _run_procurement(self): + self.procurement_rule._run_buy( + self.product, 1, self.product.uom_id, self.location, False, + self.origin, self.values, ) def test_procurement_grouped_purchase(self): self.category.procured_purchase_grouping = 'standard' - procurement_1 = self.procurement.copy() - procurement_2 = self.procurement.copy() - procurement_1.run() - procurement_2.run() - self.assertTrue(procurement_1.purchase_id) - self.assertTrue(procurement_2.purchase_id) + self._run_procurement() + self._run_procurement() + orders = self.env['purchase.order'].search([ + ('origin', '=', self.origin), + ]) self.assertEqual( - procurement_1.purchase_id, procurement_2.purchase_id, - 'Procured purchase orders are not the same', + len(orders), 1, 'Procured purchase orders are not the same', ) self.assertEqual( - procurement_1.purchase_line_id, procurement_2.purchase_line_id, + len(orders.order_line), 1, 'Procured purchase orders lines are not the same', ) - return True def test_procurement_no_grouping_line_purchase(self): self.category.procured_purchase_grouping = 'line' - procurement_1 = self.procurement.copy() - procurement_2 = self.procurement.copy() - procurement_1.run() - procurement_2.run() - self.assertTrue(procurement_1.purchase_id) - self.assertTrue(procurement_2.purchase_id) + self._run_procurement() + self._run_procurement() + orders = self.env['purchase.order'].search([ + ('origin', '=', self.origin), + ]) self.assertEqual( - procurement_1.purchase_id, procurement_2.purchase_id, - 'Procured purchase orders are not the same', + len(orders), 1, 'Procured purchase orders are not the same', ) - self.assertNotEqual( - procurement_1.purchase_line_id, procurement_2.purchase_line_id, + self.assertEqual( + len(orders.order_line), 2, 'Procured purchase orders lines are the same', ) - return True def test_procurement_no_grouping_order_purchase(self): self.category.procured_purchase_grouping = 'order' - procurement_1 = self.procurement.copy() - procurement_2 = self.procurement.copy() - procurement_1.run() - procurement_2.run() - self.assertTrue(procurement_1.purchase_id) - self.assertTrue(procurement_2.purchase_id) - self.assertNotEqual( - procurement_1.purchase_id, procurement_2.purchase_id, - 'Procured purchase orders are the same', + self._run_procurement() + self._run_procurement() + orders = self.env['purchase.order'].search([ + ('origin', '=', self.origin), + ]) + self.assertEqual( + len(orders), 2, 'Procured purchase orders are the same', ) - self.assertNotEqual( - procurement_1.purchase_line_id, procurement_2.purchase_line_id, + self.assertEqual( + len(orders.mapped('order_line')), 2, 'Procured purchase orders lines are the same', ) - return True From 10c0ff9efa0c12c19a54ae12f4a77e377d60770a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=C3=ADaz?= Date: Mon, 17 Jun 2019 19:46:00 +0200 Subject: [PATCH 0872/1277] [MIG] procurement_purchase_no_grouping: Migration to 12.0 --- procurement_purchase_no_grouping/README.rst | 11 ++--- procurement_purchase_no_grouping/__init__.py | 2 - .../__manifest__.py | 4 +- procurement_purchase_no_grouping/i18n/de.po | 14 +++---- procurement_purchase_no_grouping/i18n/es.po | 14 +++---- .../i18n/es_ES.po | 14 +++---- .../i18n/es_MX.po | 14 +++---- .../i18n/es_PE.po | 19 +++++---- procurement_purchase_no_grouping/i18n/fi.po | 14 +++---- procurement_purchase_no_grouping/i18n/fr.po | 14 +++---- .../i18n/fr_BE.po | 14 +++---- .../i18n/fr_FR.po | 14 +++---- procurement_purchase_no_grouping/i18n/gl.po | 14 +++---- procurement_purchase_no_grouping/i18n/hr.po | 19 +++++---- procurement_purchase_no_grouping/i18n/it.po | 14 +++---- procurement_purchase_no_grouping/i18n/nl.po | 14 +++---- .../i18n/nl_NL.po | 14 +++---- .../i18n/procurement_purchase_no_grouping.pot | 16 ++++---- .../i18n/pt_BR.po | 14 +++---- .../i18n/pt_PT.po | 14 +++---- procurement_purchase_no_grouping/i18n/ro.po | 14 +++---- procurement_purchase_no_grouping/i18n/sl.po | 14 +++---- .../i18n/tr_TR.po | 19 +++++---- .../i18n/vi_VN.po | 14 +++---- .../i18n/zh_CN.po | 40 +++++++++++-------- .../models/__init__.py | 4 +- .../{procurement_rule.py => stock_rule.py} | 6 +-- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 9 +++-- .../tests/__init__.py | 2 - .../test_procurement_purchase_no_grouping.py | 7 ++-- 31 files changed, 206 insertions(+), 191 deletions(-) rename procurement_purchase_no_grouping/models/{procurement_rule.py => stock_rule.py} (86%) diff --git a/procurement_purchase_no_grouping/README.rst b/procurement_purchase_no_grouping/README.rst index 1826fe9877d..9c4ca05122e 100644 --- a/procurement_purchase_no_grouping/README.rst +++ b/procurement_purchase_no_grouping/README.rst @@ -14,13 +14,13 @@ Procurement Purchase No Grouping :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/11.0/procurement_purchase_no_grouping + :target: https://github.com/OCA/purchase-workflow/tree/12.0/procurement_purchase_no_grouping :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/purchase-workflow-11-0/purchase-workflow-11-0-procurement_purchase_no_grouping + :target: https://translation.odoo-community.org/projects/purchase-workflow-12-0/purchase-workflow-12-0-procurement_purchase_no_grouping :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/11.0 + :target: https://runbot.odoo-community.org/runbot/142/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -51,7 +51,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -72,6 +72,7 @@ Contributors * Pedro M. Baeza * Sergio Teruel * Carlos Dauden + * Alexandre Díaz * Ana Juaristi * Alfredo de la Fuente @@ -89,6 +90,6 @@ 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/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/procurement_purchase_no_grouping/__init__.py b/procurement_purchase_no_grouping/__init__.py index 21101d3490d..0650744f6bc 100644 --- a/procurement_purchase_no_grouping/__init__.py +++ b/procurement_purchase_no_grouping/__init__.py @@ -1,3 +1 @@ -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) - from . import models diff --git a/procurement_purchase_no_grouping/__manifest__.py b/procurement_purchase_no_grouping/__manifest__.py index e677f7cf323..e3025a71406 100644 --- a/procurement_purchase_no_grouping/__manifest__.py +++ b/procurement_purchase_no_grouping/__manifest__.py @@ -5,14 +5,14 @@ { 'name': 'Procurement Purchase No Grouping', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'author': 'AvanzOSC,' 'Tecnativa,' 'Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/purchase-workflow', 'category': 'Procurements', 'depends': [ - 'purchase', + 'purchase_stock', ], 'data': [ 'views/product_category_view.xml', diff --git a/procurement_purchase_no_grouping/i18n/de.po b/procurement_purchase_no_grouping/i18n/de.po index 25e0c32d9d5..1b37bbe8ece 100644 --- a/procurement_purchase_no_grouping/i18n/de.po +++ b/procurement_purchase_no_grouping/i18n/de.po @@ -29,15 +29,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -49,7 +44,7 @@ msgid "Purchase Order Line" msgstr "Bestellposition" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,5 +60,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Bestellauftrag" diff --git a/procurement_purchase_no_grouping/i18n/es.po b/procurement_purchase_no_grouping/i18n/es.po index 12259577220..b80add71789 100644 --- a/procurement_purchase_no_grouping/i18n/es.po +++ b/procurement_purchase_no_grouping/i18n/es.po @@ -29,15 +29,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -49,7 +44,7 @@ msgid "Purchase Order Line" msgstr "Línea orden de compra" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,5 +60,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Orden de Compra" diff --git a/procurement_purchase_no_grouping/i18n/es_ES.po b/procurement_purchase_no_grouping/i18n/es_ES.po index 76a0607c1ad..ffcf1d2881c 100644 --- a/procurement_purchase_no_grouping/i18n/es_ES.po +++ b/procurement_purchase_no_grouping/i18n/es_ES.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,3 +60,8 @@ msgstr "" #: selection:product.category,procured_purchase_grouping:0 msgid "Standard grouping" msgstr "" + +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" diff --git a/procurement_purchase_no_grouping/i18n/es_MX.po b/procurement_purchase_no_grouping/i18n/es_MX.po index d05a62fb3d7..29fd3dbc26b 100644 --- a/procurement_purchase_no_grouping/i18n/es_MX.po +++ b/procurement_purchase_no_grouping/i18n/es_MX.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Línea de orden de compra" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,3 +60,8 @@ msgstr "" #: selection:product.category,procured_purchase_grouping:0 msgid "Standard grouping" msgstr "" + +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" diff --git a/procurement_purchase_no_grouping/i18n/es_PE.po b/procurement_purchase_no_grouping/i18n/es_PE.po index 4a09590cbb6..4ba9775096a 100644 --- a/procurement_purchase_no_grouping/i18n/es_PE.po +++ b/procurement_purchase_no_grouping/i18n/es_PE.po @@ -30,16 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -#, fuzzy -msgid "Procurement Rule" -msgstr "Aquisiciones" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -51,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Linea de orden de compra" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -67,5 +61,14 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#, fuzzy +#~ msgid "Procurement Rule" +#~ msgstr "Aquisiciones" + #~ msgid "Purchase Order" #~ msgstr "Orden de compra" diff --git a/procurement_purchase_no_grouping/i18n/fi.po b/procurement_purchase_no_grouping/i18n/fi.po index 3bac304ae5d..eeea3b688af 100644 --- a/procurement_purchase_no_grouping/i18n/fi.po +++ b/procurement_purchase_no_grouping/i18n/fi.po @@ -29,15 +29,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -49,7 +44,7 @@ msgid "Purchase Order Line" msgstr "Ostotilausrivi" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -64,3 +59,8 @@ msgstr "" #: selection:product.category,procured_purchase_grouping:0 msgid "Standard grouping" msgstr "" + +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" diff --git a/procurement_purchase_no_grouping/i18n/fr.po b/procurement_purchase_no_grouping/i18n/fr.po index 0947162c7dd..c1005a6a80d 100644 --- a/procurement_purchase_no_grouping/i18n/fr.po +++ b/procurement_purchase_no_grouping/i18n/fr.po @@ -29,15 +29,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -49,7 +44,7 @@ msgid "Purchase Order Line" msgstr "Ligne de commande d'achat" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,5 +60,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Bon de commande" diff --git a/procurement_purchase_no_grouping/i18n/fr_BE.po b/procurement_purchase_no_grouping/i18n/fr_BE.po index 3b8ec5f783d..d95a9a209c2 100644 --- a/procurement_purchase_no_grouping/i18n/fr_BE.po +++ b/procurement_purchase_no_grouping/i18n/fr_BE.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,5 +61,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Commande fournisseur" diff --git a/procurement_purchase_no_grouping/i18n/fr_FR.po b/procurement_purchase_no_grouping/i18n/fr_FR.po index 3b064d3c075..6a7ea27d116 100644 --- a/procurement_purchase_no_grouping/i18n/fr_FR.po +++ b/procurement_purchase_no_grouping/i18n/fr_FR.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,5 +61,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Bon de commande" diff --git a/procurement_purchase_no_grouping/i18n/gl.po b/procurement_purchase_no_grouping/i18n/gl.po index cbceed5c56d..dc4e94717d5 100644 --- a/procurement_purchase_no_grouping/i18n/gl.po +++ b/procurement_purchase_no_grouping/i18n/gl.po @@ -29,15 +29,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -49,7 +44,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,5 +60,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Orde de compra" diff --git a/procurement_purchase_no_grouping/i18n/hr.po b/procurement_purchase_no_grouping/i18n/hr.po index 260784c82c6..86e9c72b0d6 100644 --- a/procurement_purchase_no_grouping/i18n/hr.po +++ b/procurement_purchase_no_grouping/i18n/hr.po @@ -30,16 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -#, fuzzy -msgid "Procurement Rule" -msgstr "Nabava" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -51,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Stavka naloga za nabavu" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -67,5 +61,14 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#, fuzzy +#~ msgid "Procurement Rule" +#~ msgstr "Nabava" + #~ msgid "Purchase Order" #~ msgstr "Nabavni nalog" diff --git a/procurement_purchase_no_grouping/i18n/it.po b/procurement_purchase_no_grouping/i18n/it.po index 499d7f2f51d..17362b3b9d3 100644 --- a/procurement_purchase_no_grouping/i18n/it.po +++ b/procurement_purchase_no_grouping/i18n/it.po @@ -29,15 +29,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -49,7 +44,7 @@ msgid "Purchase Order Line" msgstr "Riga Ordine d'Acquisto" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,5 +60,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Ordine Acquisto" diff --git a/procurement_purchase_no_grouping/i18n/nl.po b/procurement_purchase_no_grouping/i18n/nl.po index 3df282116ad..454fa3aa30d 100644 --- a/procurement_purchase_no_grouping/i18n/nl.po +++ b/procurement_purchase_no_grouping/i18n/nl.po @@ -29,15 +29,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -49,7 +44,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,5 +60,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Inkooporder" diff --git a/procurement_purchase_no_grouping/i18n/nl_NL.po b/procurement_purchase_no_grouping/i18n/nl_NL.po index 459e901bb30..5a3c16e8179 100644 --- a/procurement_purchase_no_grouping/i18n/nl_NL.po +++ b/procurement_purchase_no_grouping/i18n/nl_NL.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Inkooporderregel" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,5 +61,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Inkooporder" diff --git a/procurement_purchase_no_grouping/i18n/procurement_purchase_no_grouping.pot b/procurement_purchase_no_grouping/i18n/procurement_purchase_no_grouping.pot index e187f22c4de..506b5a6ff3f 100644 --- a/procurement_purchase_no_grouping/i18n/procurement_purchase_no_grouping.pot +++ b/procurement_purchase_no_grouping/i18n/procurement_purchase_no_grouping.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -24,15 +24,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -44,7 +39,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Select the behaviour for grouping procured purchases for the the products of this category:\n" "* Standard grouping (default): Procurements will generate purchase orders as always, grouping lines and orders when possible.\n" "* No line grouping: If there are any open purchase order for the same supplier, it will be reused, but lines won't be merged.\n" @@ -56,3 +51,8 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + diff --git a/procurement_purchase_no_grouping/i18n/pt_BR.po b/procurement_purchase_no_grouping/i18n/pt_BR.po index b5f3cbaa6ad..86ecf0b12f1 100644 --- a/procurement_purchase_no_grouping/i18n/pt_BR.po +++ b/procurement_purchase_no_grouping/i18n/pt_BR.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Linha da Ordem de Compra" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,5 +61,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Ordem de Compra" diff --git a/procurement_purchase_no_grouping/i18n/pt_PT.po b/procurement_purchase_no_grouping/i18n/pt_PT.po index 56bf561b4a0..f3a135023da 100644 --- a/procurement_purchase_no_grouping/i18n/pt_PT.po +++ b/procurement_purchase_no_grouping/i18n/pt_PT.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Linha de Encomenda de Compra" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -65,3 +60,8 @@ msgstr "" #: selection:product.category,procured_purchase_grouping:0 msgid "Standard grouping" msgstr "" + +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" diff --git a/procurement_purchase_no_grouping/i18n/ro.po b/procurement_purchase_no_grouping/i18n/ro.po index a60470edeb6..5d1a85f9588 100644 --- a/procurement_purchase_no_grouping/i18n/ro.po +++ b/procurement_purchase_no_grouping/i18n/ro.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Linie comandă achiziție" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,5 +61,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Comandă achiziție" diff --git a/procurement_purchase_no_grouping/i18n/sl.po b/procurement_purchase_no_grouping/i18n/sl.po index e3ef882cbec..429402fb489 100644 --- a/procurement_purchase_no_grouping/i18n/sl.po +++ b/procurement_purchase_no_grouping/i18n/sl.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "Postavka nabavnega naloga" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,5 +61,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Nabavni nalog" diff --git a/procurement_purchase_no_grouping/i18n/tr_TR.po b/procurement_purchase_no_grouping/i18n/tr_TR.po index f079a3de1b2..9c76f6828c2 100644 --- a/procurement_purchase_no_grouping/i18n/tr_TR.po +++ b/procurement_purchase_no_grouping/i18n/tr_TR.po @@ -30,16 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -#, fuzzy -msgid "Procurement Rule" -msgstr "Satın alma" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -51,7 +45,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,3 +60,12 @@ msgstr "" #: selection:product.category,procured_purchase_grouping:0 msgid "Standard grouping" msgstr "" + +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#, fuzzy +#~ msgid "Procurement Rule" +#~ msgstr "Satın alma" diff --git a/procurement_purchase_no_grouping/i18n/vi_VN.po b/procurement_purchase_no_grouping/i18n/vi_VN.po index 2661844a6cf..69d0d2c5092 100644 --- a/procurement_purchase_no_grouping/i18n/vi_VN.po +++ b/procurement_purchase_no_grouping/i18n/vi_VN.po @@ -30,15 +30,10 @@ msgid "No order grouping" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" msgstr "" -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -msgid "Procurement Rule" -msgstr "" - #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" @@ -50,7 +45,7 @@ msgid "Purchase Order Line" msgstr "" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -66,5 +61,10 @@ msgstr "" msgid "Standard grouping" msgstr "" +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "" + #~ msgid "Purchase Order" #~ msgstr "Đơn hàng Mua" diff --git a/procurement_purchase_no_grouping/i18n/zh_CN.po b/procurement_purchase_no_grouping/i18n/zh_CN.po index 5b33a129344..6fa6cc66af6 100644 --- a/procurement_purchase_no_grouping/i18n/zh_CN.po +++ b/procurement_purchase_no_grouping/i18n/zh_CN.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-16 02:54+0000\n" -"PO-Revision-Date: 2017-07-16 02:54+0000\n" -"Last-Translator: OCA Transbot , 2017\n" +"PO-Revision-Date: 2019-09-01 16:00+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" "Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" "zh_CN/)\n" "Language: zh_CN\n" @@ -18,40 +18,35 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.8\n" #. module: procurement_purchase_no_grouping #: selection:product.category,procured_purchase_grouping:0 msgid "No line grouping" -msgstr "" +msgstr "没有行分组" #. module: procurement_purchase_no_grouping #: selection:product.category,procured_purchase_grouping:0 msgid "No order grouping" -msgstr "" +msgstr "没有行分组" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,field_description:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "Procured purchase grouping" -msgstr "" - -#. module: procurement_purchase_no_grouping -#: model:ir.model,name:procurement_purchase_no_grouping.model_procurement_rule -#, fuzzy -msgid "Procurement Rule" -msgstr "补货" +msgstr "采购分组" #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_product_category msgid "Product Category" -msgstr "" +msgstr "产品分类" #. module: procurement_purchase_no_grouping #: model:ir.model,name:procurement_purchase_no_grouping.model_purchase_order_line msgid "Purchase Order Line" -msgstr "" +msgstr "采购订单行" #. module: procurement_purchase_no_grouping -#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category_procured_purchase_grouping +#: model:ir.model.fields,help:procurement_purchase_no_grouping.field_product_category__procured_purchase_grouping msgid "" "Select the behaviour for grouping procured purchases for the the products of " "this category:\n" @@ -61,8 +56,21 @@ msgid "" "supplier, it will be reused, but lines won't be merged.\n" "* No order grouping: This option will prevent any kind of grouping." msgstr "" +"选择为此类别的产品分组采购购买的行为:\n" +"* 标准分组(默认):采购将一如既往地生成采购订单,尽可能对生产线和订单进行分组。\n" +"* 无行分组:如果同一供应商有任何未结采购订单,则会重复使用,但不会合并行。\n" +"* 没有订单分组:此选项将阻止任何类型的分组。" #. module: procurement_purchase_no_grouping #: selection:product.category,procured_purchase_grouping:0 msgid "Standard grouping" -msgstr "" +msgstr "标准分组" + +#. module: procurement_purchase_no_grouping +#: model:ir.model,name:procurement_purchase_no_grouping.model_stock_rule +msgid "Stock Rule" +msgstr "库存规则" + +#, fuzzy +#~ msgid "Procurement Rule" +#~ msgstr "补货" diff --git a/procurement_purchase_no_grouping/models/__init__.py b/procurement_purchase_no_grouping/models/__init__.py index a5867794c18..cabf9323890 100644 --- a/procurement_purchase_no_grouping/models/__init__.py +++ b/procurement_purchase_no_grouping/models/__init__.py @@ -1,5 +1,3 @@ -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) - from . import product_category -from . import procurement_rule +from . import stock_rule from . import purchase_order diff --git a/procurement_purchase_no_grouping/models/procurement_rule.py b/procurement_purchase_no_grouping/models/stock_rule.py similarity index 86% rename from procurement_purchase_no_grouping/models/procurement_rule.py rename to procurement_purchase_no_grouping/models/stock_rule.py index 49a8371aebe..9c48ef34ced 100644 --- a/procurement_purchase_no_grouping/models/procurement_rule.py +++ b/procurement_purchase_no_grouping/models/stock_rule.py @@ -6,15 +6,15 @@ from odoo import api, models -class ProcurementRule(models.Model): - _inherit = 'procurement.rule' +class StockRule(models.Model): + _inherit = 'stock.rule' @api.multi def _run_buy(self, product_id, product_qty, product_uom, location_id, name, origin, values): grouping = product_id.categ_id.procured_purchase_grouping self_wc = self.with_context(grouping=grouping) - return super(ProcurementRule, self_wc)._run_buy( + return super(StockRule, self_wc)._run_buy( product_id, product_qty, product_uom, location_id, name, origin, values) diff --git a/procurement_purchase_no_grouping/readme/CONTRIBUTORS.rst b/procurement_purchase_no_grouping/readme/CONTRIBUTORS.rst index 170913ca481..d3575bf047f 100644 --- a/procurement_purchase_no_grouping/readme/CONTRIBUTORS.rst +++ b/procurement_purchase_no_grouping/readme/CONTRIBUTORS.rst @@ -3,6 +3,7 @@ * Pedro M. Baeza * Sergio Teruel * Carlos Dauden + * Alexandre Díaz * Ana Juaristi * Alfredo de la Fuente diff --git a/procurement_purchase_no_grouping/static/description/index.html b/procurement_purchase_no_grouping/static/description/index.html index 3f3005935bd..492ed085517 100644 --- a/procurement_purchase_no_grouping/static/description/index.html +++ b/procurement_purchase_no_grouping/static/description/index.html @@ -3,7 +3,7 @@ - + Procurement Purchase No Grouping + + +
    +

    Purchase Order Downpayment

    + + +

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

    +

    The module allows for creating down payments from purchase orders.

    +

    Table of contents

    + +
    +

    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

    +
      +
    • Open Source Integrators (OSI)
    • +
    +
    + +
    +

    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/purchase-workflow project on GitHub.

    +

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

    +
    +
    +
    + + diff --git a/purchase_order_downpayment/tests/__init__.py b/purchase_order_downpayment/tests/__init__.py new file mode 100644 index 00000000000..db5f6bc88a7 --- /dev/null +++ b/purchase_order_downpayment/tests/__init__.py @@ -0,0 +1 @@ +from . import test_purchase_order_downpayment diff --git a/purchase_order_downpayment/tests/test_purchase_order_downpayment.py b/purchase_order_downpayment/tests/test_purchase_order_downpayment.py new file mode 100644 index 00000000000..648724b9b77 --- /dev/null +++ b/purchase_order_downpayment/tests/test_purchase_order_downpayment.py @@ -0,0 +1,150 @@ +from odoo.exceptions import UserError +from odoo.tests import common + + +class TestPurchaseOrderDownPayment(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # Partners + cls.res_partner_1 = cls.env["res.partner"].create({"name": "Abigail Peterson"}) + cls.res_partner_2 = cls.env["res.partner"].create({"name": "Ernest Reed"}) + cls.res_partner_3 = cls.env["res.partner"].create({"name": "Jennie Fletcher"}) + + # Products + cls.product_1 = cls.env["product.product"].create( + { + "name": "Desk Combination", + } + ) + + # Purchase Order + cls.purchase_order_1 = cls.env["purchase.order"].create( + {"partner_id": cls.res_partner_1.id} + ) + cls.purchase_order_2 = cls.env["purchase.order"].create( + {"partner_id": cls.res_partner_2.id} + ) + cls.purchase_order_3 = cls.env["purchase.order"].create( + {"partner_id": cls.res_partner_3.id} + ) + + cls.order_line_1 = cls.env["purchase.order.line"].create( + { + "order_id": cls.purchase_order_1.id, + "product_id": cls.product_1.id, + "product_uom": cls.product_1.uom_id.id, + "product_qty": 1.0, + "price_unit": 100.0, + } + ) + + cls.order_line_2 = cls.env["purchase.order.line"].create( + { + "order_id": cls.purchase_order_2.id, + "product_id": cls.product_1.id, + "product_uom": cls.product_1.uom_id.id, + "product_qty": 1.0, + "price_unit": 100.0, + } + ) + cls.order_line_3 = cls.env["purchase.order.line"].create( + { + "order_id": cls.purchase_order_3.id, + "product_id": cls.product_1.id, + "product_uom": cls.product_1.uom_id.id, + "product_qty": 1.0, + "price_unit": 100.0, + } + ) + cls.order_line_3 = cls.env["purchase.order.line"].create( + { + "order_id": cls.purchase_order_3.id, + "product_id": cls.product_1.id, + "product_uom": cls.product_1.uom_id.id, + "product_qty": 1.0, + "price_unit": 100.0, + } + ) + + def test_regular_payment(self): + self.purchase_order_1.button_confirm() + context = { + "active_ids": [self.purchase_order_1.id], + "active_id": self.purchase_order_1.id, + } + downpayment = ( + self.env["purchase.order.down.payment.wizard"] + .with_context(**context) + .create( + { + "advance_payment_method": "delivered", + } + ) + ) + self.assertEqual(downpayment.order_id.id, self.purchase_order_1.id) + downpayment.with_context(view_payment=True).create_payment() + self.assertTrue(self.purchase_order_1.account_payment_ids) + payment_id = ( + self.purchase_order_1.account_payment_ids + and self.purchase_order_1.account_payment_ids[0] + ) + self.assertEqual(payment_id.amount, self.purchase_order_1.amount_total) + self.assertEqual(payment_id.partner_id, self.purchase_order_1.partner_id) + + def test_percentage_payment(self): + self.purchase_order_2.button_confirm() + context = { + "active_ids": [self.purchase_order_2.id], + "active_id": self.purchase_order_2.id, + } + downpayment = ( + self.env["purchase.order.down.payment.wizard"] + .with_context(**context) + .create({"advance_payment_method": "percentage", "amount": 10}) + ) + self.assertEqual(downpayment.order_id.id, self.purchase_order_2.id) + downpayment.with_context(view_payment=True).create_payment() + self.assertTrue(self.purchase_order_2.account_payment_ids) + payment_id = ( + self.purchase_order_2.account_payment_ids + and self.purchase_order_2.account_payment_ids[0] + ) + self.assertEqual( + payment_id.amount, ((self.purchase_order_2.amount_total * 10) / 100) + ) + self.assertEqual(payment_id.partner_id, self.purchase_order_2.partner_id) + + with self.assertRaises(UserError): + self.env["purchase.order.down.payment.wizard"].with_context( + **context + ).create({"advance_payment_method": "percentage", "amount": 0}) + + def test_fixed_payment(self): + self.purchase_order_3.button_confirm() + action = self.purchase_order_3.action_open_payment() + action.get("domain") + self.assertEqual(self.purchase_order_3.id, action.get("domain")[0][2]) + context = { + "active_ids": [self.purchase_order_3.id], + "active_id": self.purchase_order_3.id, + } + downpayment = ( + self.env["purchase.order.down.payment.wizard"] + .with_context(**context) + .create({"advance_payment_method": "fixed", "fixed_amount": 50}) + ) + self.assertEqual(downpayment.order_id.id, self.purchase_order_3.id) + downpayment.create_payment() + self.assertTrue(self.purchase_order_3.account_payment_ids) + payment_id = ( + self.purchase_order_3.account_payment_ids + and self.purchase_order_3.account_payment_ids[0] + ) + self.assertEqual(payment_id.amount, 50) + self.assertEqual(payment_id.partner_id, self.purchase_order_3.partner_id) + + with self.assertRaises(UserError): + self.env["purchase.order.down.payment.wizard"].with_context( + **context + ).create({"advance_payment_method": "fixed", "fixed_amount": 0}) diff --git a/purchase_order_downpayment/views/purchase_view.xml b/purchase_order_downpayment/views/purchase_view.xml new file mode 100644 index 00000000000..de681cab674 --- /dev/null +++ b/purchase_order_downpayment/views/purchase_view.xml @@ -0,0 +1,31 @@ + + + purchase.order.form + purchase.order + + + + + + + + + diff --git a/purchase_order_downpayment/wizard/__init__.py b/purchase_order_downpayment/wizard/__init__.py new file mode 100644 index 00000000000..484ac3ec4d5 --- /dev/null +++ b/purchase_order_downpayment/wizard/__init__.py @@ -0,0 +1 @@ +from . import purchase_order_downpayment_wizard diff --git a/purchase_order_downpayment/wizard/purchase_order_downpayment_wiz_view.xml b/purchase_order_downpayment/wizard/purchase_order_downpayment_wiz_view.xml new file mode 100644 index 00000000000..7cf0a2cbe42 --- /dev/null +++ b/purchase_order_downpayment/wizard/purchase_order_downpayment_wiz_view.xml @@ -0,0 +1,70 @@ + + + Purchase order down payment + purchase.order.down.payment.wizard + form + +
    +

    + Payment will be created in draft so that you can review + them before validation. +

    + + + + + + +
    +
    +
    +
    +
    + + Payment + ir.actions.act_window + purchase.order.down.payment.wizard + form + new + +
    diff --git a/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py b/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py new file mode 100644 index 00000000000..f5069eb06d8 --- /dev/null +++ b/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py @@ -0,0 +1,101 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class PurchaseOrderDownPaymentWizard(models.TransientModel): + _name = "purchase.order.down.payment.wizard" + _description = "Purchase Order DownPayment Wizard" + + order_id = fields.Many2one("purchase.order", required=True) + + advance_payment_method = fields.Selection( + selection=[ + ("delivered", "Regular Payment"), + ("percentage", "Down payment (percentage)"), + ("fixed", "Down payment (fixed amount)"), + ], + string="Create Payment", + default="delivered", + required=True, + ) + + amount = fields.Float(string="Down Payment Amount") + fixed_amount = fields.Float( + string="Down Payment Amount (Fixed)", + ) + + @api.model + def default_get(self, fields_list): + res = super().default_get(fields_list) + purchase_id = self.env.context.get("active_id") + if not purchase_id: + return res + purchase_id = self.env["purchase.order"].browse(purchase_id) + if purchase_id: + res.update( + { + "order_id": purchase_id.id, + } + ) + + return res + + @api.constrains("advance_payment_method", "amount", "fixed_amount") + def _check_amount_is_positive(self): + for wizard in self: + if wizard.advance_payment_method == "percentage" and ( + wizard.amount <= 0 or wizard.amount > 100 + ): + raise UserError( + _( + "The value of the down payment percentage cannot be greater than 100%." + ) + ) + elif ( + wizard.advance_payment_method == "fixed" and wizard.fixed_amount <= 0.00 + ): + raise UserError( + _("The value of the down payment amount must be positive.") + ) + + def _get_down_payment_amount(self, order): + self.ensure_one() + if self.advance_payment_method == "delivered": + amount = order.amount_total + elif self.advance_payment_method == "percentage": + amount = order.amount_total * self.amount / 100 + else: + amount = self.fixed_amount + return amount + + def create_payment(self): + self.ensure_one() + payment_obj = self.env["account.payment"] + if self.order_id: + amount_advance = self._get_down_payment_amount(self.order_id) + payment = payment_obj.create( + { + "date": fields.date.today(), + "amount": amount_advance, + "payment_type": "outbound", + "partner_type": "supplier", + "ref": self.order_id.name, + "currency_id": self.order_id.currency_id.id, + "partner_id": self.order_id.partner_id.id, + "payment_method_id": self.env.ref( + "account.account_payment_method_manual_in" + ).id, + "purchase_id": self.order_id.id, + } + ) + + if self.env.context.get("view_payment"): + action = self.env["ir.actions.actions"]._for_xml_id( + "account.action_account_payments_payable" + ) + action.update({"domain": [("id", "=", payment.id)]}) + return action + + return { + "type": "ir.actions.act_window_close", + } diff --git a/setup/purchase_order_downpayment/odoo/addons/purchase_order_downpayment b/setup/purchase_order_downpayment/odoo/addons/purchase_order_downpayment new file mode 120000 index 00000000000..2ca4f5c4d1a --- /dev/null +++ b/setup/purchase_order_downpayment/odoo/addons/purchase_order_downpayment @@ -0,0 +1 @@ +../../../../purchase_order_downpayment \ No newline at end of file diff --git a/setup/purchase_order_downpayment/setup.py b/setup/purchase_order_downpayment/setup.py new file mode 100644 index 00000000000..28c57bb6403 --- /dev/null +++ b/setup/purchase_order_downpayment/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 9ae95cb75e7746c9661a88d33c7faf56761fbc26 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 12 Mar 2024 08:26:42 +0000 Subject: [PATCH 0928/1277] Added translation using Weblate (Italian) --- purchase_work_acceptance/i18n/it.po | 701 ++++++++++++++++++++++++++++ 1 file changed, 701 insertions(+) create mode 100644 purchase_work_acceptance/i18n/it.po diff --git a/purchase_work_acceptance/i18n/it.po b/purchase_work_acceptance/i18n/it.po new file mode 100644 index 00000000000..95d4505a4cb --- /dev/null +++ b/purchase_work_acceptance/i18n/it.po @@ -0,0 +1,701 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_work_acceptance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\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" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/wizard/select_work_acceptance_wizard.py:0 +#, python-format +msgid "%s was already used by some bill" +msgstr "" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/models/stock_picking.py:0 +#, python-format +msgid "%s was used in some picking." +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_accepted_date_wizard +msgid "Accept" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Accepte Date" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields.selection,name:purchase_work_acceptance.selection__work_acceptance__state__accept +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Accepted" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Accepted By" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__date_accept +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__date_accept +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__date_accept +msgid "Accepted Date" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order_line__qty_accepted +msgid "Accepted Qty." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__access_warning +msgid "Access warning" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_ids +msgid "Activities" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_state +msgid "Activity State" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_select_work_acceptance_wizard +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_accepted_date_wizard +msgid "Cancel" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields.selection,name:purchase_work_acceptance.selection__work_acceptance__state__cancel +msgid "Cancelled" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__company_id +msgid "Company" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_select_work_acceptance_wizard +msgid "Create Vendor Bill" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit +msgid "Create WA" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.actions.act_window,help:purchase_work_acceptance.action_work_acceptance +msgid "Create a new work acceptance" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__create_uid +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__create_uid +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__create_uid +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__create_date +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__create_date +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__create_date +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__currency_id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__currency_id +msgid "Currency" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__access_url +msgid "Customer Portal URL" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form +msgid "Define your terms and conditions ..." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__name +msgid "Description" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__display_name +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__display_name +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__display_name +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields.selection,name:purchase_work_acceptance.selection__work_acceptance__state__draft +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Draft" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__date_due +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__date_due +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Due Date" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enable_wa_on_in +#: model:res.groups,name:purchase_work_acceptance.group_enable_wa_on_in +msgid "Enable WA on Goods Receipt" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enable_wa_on_po +#: model:res.groups,name:purchase_work_acceptance.group_enable_wa_on_po +msgid "Enable WA on Purchase Order" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enable_wa_on_invoice +#: model:res.groups,name:purchase_work_acceptance.group_enable_wa_on_invoice +msgid "Enable WA on Vendor Bill" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enforce_wa_on_in +#: model:res.groups,name:purchase_work_acceptance.group_enforce_wa_on_in +msgid "Enforce WA on Goods Receipt" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enforce_wa_on_invoice +#: model:res.groups,name:purchase_work_acceptance.group_enforce_wa_on_invoice +msgid "Enforce WA on Vendor Bill" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Group By" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__has_message +msgid "Has Message" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__id +msgid "ID" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__invoice_ref +msgid "Invoice Reference" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard____last_update +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance____last_update +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line____last_update +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__write_uid +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__write_uid +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__write_uid +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__write_date +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__write_date +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__write_date +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_ids +msgid "Messages" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "My Work Acceptance" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__name +msgid "Name" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__notes +msgid "Notes" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/models/purchase.py:0 +#, python-format +msgid "Operation not supported" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__partner_id +msgid "Partner" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_stock_picking_type +msgid "Picking Type" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__access_url +msgid "Portal Access URL" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_res_config_settings +msgid "Procurement purchase grouping settings" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__product_id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__product_id +msgid "Product" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__product_uom +msgid "Product Unit of Measure" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form +msgid "Products" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_purchase_order +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__purchase_id +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Purchase Order" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_purchase_order_line +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__purchase_line_id +msgid "Purchase Order Line" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__product_qty +msgid "Quantity" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Receive Date" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__date_receive +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__date_receive +msgid "Received Date" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_tree +msgid "Reference" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_bank_statement_line__require_wa +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_move__require_wa +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_payment__require_wa +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__require_wa +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking__require_wa +msgid "Require Wa" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__responsible_id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__responsible_id +msgid "Responsible Person" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__access_token +msgid "Security Token" +msgstr "" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/models/work_acceptance.py:0 +#, python-format +msgid "Select Accept Date" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_accepted_date_wizard +msgid "Select Accepted Date" +msgstr "" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/models/purchase.py:0 +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_select_work_acceptance_wizard +#, python-format +msgid "Select Work Acceptance" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_select_work_acceptance_wizard +msgid "Select Work Acceptance Wizard" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_work_accepted_date_wizard +msgid "Select work accepted date" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form +msgid "Set to draft" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__state +msgid "Status" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__price_subtotal +msgid "Subtotal" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit +msgid "To Accept" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order_line__qty_to_accept +msgid "To Accept Qty." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_account_bank_statement_line__wa_id +#: model:ir.model.fields,help:purchase_work_acceptance.field_account_move__wa_id +#: model:ir.model.fields,help:purchase_work_acceptance.field_account_payment__wa_id +msgid "" +"To control quantity and unit price of the vendor bill, to be according to " +"the quantity and unit price of the work acceptance." +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form +msgid "Total" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/models/work_acceptance.py:0 +#, python-format +msgid "" +"Unable set to draft this work acceptance. You must first cancel the related " +"receipts." +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__price_unit +msgid "Unit Price" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__partner_id +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search +msgid "Vendor" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit +msgid "WA" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_accepted +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_view_search +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_purchase_order_filter +msgid "WA Accepted" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_line_ids +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order_line__wa_line_ids +msgid "WA Lines" +msgstr "" + +#. module: purchase_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_view_search +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_purchase_order_filter +msgid "WA Not Accepted" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_bank_statement_line__wa_id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_move__wa_id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_payment__wa_id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking__wa_id +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__wa_id +msgid "WA Reference" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_count +msgid "WA count" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking_type__bypass_wa +msgid "WA not required" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__wa_ids +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking__wa_ids +msgid "Wa" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,help:purchase_work_acceptance.field_stock_picking_type__bypass_wa +msgid "" +"When 'Enforce WA on Goods Receipt' is set, this option type can by pass it" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.actions.act_window,name:purchase_work_acceptance.action_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__wa_id +#: model:ir.ui.menu,name:purchase_work_acceptance.menu_work_acceptance +#: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.res_config_settings_view_form_purchase +msgid "Work Acceptance" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model,name:purchase_work_acceptance.model_work_acceptance_line +msgid "Work Acceptance Line" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__wa_line_ids +msgid "Work Acceptance Lines" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__user_id +msgid "Work Acceptance Representative" +msgstr "" + +#. module: purchase_work_acceptance +#: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_ids +msgid "Work Acceptances" +msgstr "" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/models/account_move.py:0 +#, python-format +msgid "You cannot validate a bill if Quantity not equal accepted quantity" +msgstr "" + +#. module: purchase_work_acceptance +#. odoo-python +#: code:addons/purchase_work_acceptance/models/stock_picking.py:0 +#, python-format +msgid "" +"You cannot validate a transfer if done quantity not equal accepted quantity" +msgstr "" From 134007977dbdcb0231b0ab5d76ad9113dba81aa8 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 13 Mar 2024 10:10:33 +0000 Subject: [PATCH 0929/1277] Translated using Weblate (Italian) Currently translated at 100.0% (27 of 27 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_security Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_security/it/ --- purchase_security/i18n/it.po | 50 +++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/purchase_security/i18n/it.po b/purchase_security/i18n/it.po index 23b7fa38d70..3b9f6fb0dd6 100644 --- a/purchase_security/i18n/it.po +++ b/purchase_security/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-12-20 18:34+0000\n" +"PO-Revision-Date: 2024-03-13 12:38+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -22,36 +22,38 @@ msgid "" "" msgstr "" +"" #. module: purchase_security #: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form msgid "Avatar" -msgstr "" +msgstr "Avatar" #. module: purchase_security #: model:ir.model,name:purchase_security.model_res_partner msgid "Contact" -msgstr "" +msgstr "Contatto" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__id msgid "ID" -msgstr "" +msgstr "ID" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_order__is_user_id_editable @@ -61,27 +63,27 @@ msgstr "L'ID utente è modificabile" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: purchase_security #: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form msgid "Members" -msgstr "" +msgstr "Membri" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__name msgid "Name" -msgstr "" +msgstr "Nome" #. module: purchase_security #: model:ir.model,name:purchase_security.model_purchase_order @@ -92,56 +94,56 @@ msgstr "Ordine di acquisto" #: model:ir.model,name:purchase_security.model_purchase_team #: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form msgid "Purchase Team" -msgstr "" +msgstr "Team acquisti" #. module: purchase_security #: model:ir.actions.act_window,name:purchase_security.action_purchase_team_display #: model:ir.ui.menu,name:purchase_security.menu_purchase_team_tree msgid "Purchase Teams" -msgstr "" +msgstr "Team acquisti" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__user_ids msgid "Purchase Users" -msgstr "" +msgstr "Utente acquisti" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_user_id #: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_user_id #: model_terms:ir.ui.view,arch_db:purchase_security.view_res_partner_filter msgid "Purchase representative" -msgstr "" +msgstr "Rappresentante acquisti" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_res_partner__purchase_team_id #: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_id msgid "Purchase team" -msgstr "" +msgstr "Team acquisti" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_res_users__purchase_team_ids msgid "Purchases Teams" -msgstr "" +msgstr "Team acquisti" #. module: purchase_security #: model:ir.model,name:purchase_security.model_ir_rule msgid "Record Rule" -msgstr "" +msgstr "Regola su record" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_team__sequence msgid "Sequence" -msgstr "" +msgstr "Sequenza" #. module: purchase_security #: model:ir.model.fields,field_description:purchase_security.field_purchase_order__team_id msgid "Team" -msgstr "" +msgstr "Team" #. module: purchase_security #: model:ir.model,name:purchase_security.model_res_users msgid "User" -msgstr "" +msgstr "Utente" #. module: purchase_security #: model:res.groups,name:purchase_security.group_purchase_own_orders @@ -151,9 +153,9 @@ msgstr "Utente (solo propri ordini)" #. module: purchase_security #: model:res.groups,name:purchase_security.group_purchase_group_orders msgid "User (team orders)" -msgstr "" +msgstr "Utente (ordini team)" #. module: purchase_security #: model_terms:ir.ui.view,arch_db:purchase_security.purchase_team_form msgid "e.g. Europe" -msgstr "" +msgstr "es. Europa" From 00085248ca321a26db695d5903c2e2f0f67d4727 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 13 Mar 2024 10:18:54 +0000 Subject: [PATCH 0930/1277] Translated using Weblate (Italian) Currently translated at 100.0% (119 of 119 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_work_acceptance Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_work_acceptance/it/ --- purchase_work_acceptance/i18n/it.po | 244 +++++++++++++++------------- 1 file changed, 130 insertions(+), 114 deletions(-) diff --git a/purchase_work_acceptance/i18n/it.po b/purchase_work_acceptance/i18n/it.po index 95d4505a4cb..2ef2aa414d6 100644 --- a/purchase_work_acceptance/i18n/it.po +++ b/purchase_work_acceptance/i18n/it.po @@ -6,129 +6,131 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-03-13 12:38+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\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: purchase_work_acceptance #. odoo-python #: code:addons/purchase_work_acceptance/wizard/select_work_acceptance_wizard.py:0 #, python-format msgid "%s was already used by some bill" -msgstr "" +msgstr "%s è stato già utilizzato da qualche conto" #. module: purchase_work_acceptance #. odoo-python #: code:addons/purchase_work_acceptance/models/stock_picking.py:0 #, python-format msgid "%s was used in some picking." -msgstr "" +msgstr "%s è utilizzato in qualche prelievo." #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_accepted_date_wizard msgid "Accept" -msgstr "" +msgstr "Accetta" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Accepte Date" -msgstr "" +msgstr "Data accettazione" #. module: purchase_work_acceptance #: model:ir.model.fields.selection,name:purchase_work_acceptance.selection__work_acceptance__state__accept #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Accepted" -msgstr "" +msgstr "Accettata" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Accepted By" -msgstr "" +msgstr "Accettato da" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__date_accept #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__date_accept #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__date_accept msgid "Accepted Date" -msgstr "" +msgstr "Data accettata" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order_line__qty_accepted msgid "Accepted Qty." -msgstr "" +msgstr "Q.tà accettata" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__access_warning msgid "Access warning" -msgstr "" +msgstr "Avviso accesso" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_needaction msgid "Action Needed" -msgstr "" +msgstr "Azione richiesta" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_ids msgid "Activities" -msgstr "" +msgstr "Attività" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_exception_decoration msgid "Activity Exception Decoration" -msgstr "" +msgstr "Decorazione eccezione attività" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_state msgid "Activity State" -msgstr "" +msgstr "Stato attività" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_type_icon msgid "Activity Type Icon" -msgstr "" +msgstr "Icona tipo attività" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_attachment_count msgid "Attachment Count" -msgstr "" +msgstr "Conteggio allegati" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_select_work_acceptance_wizard #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_accepted_date_wizard msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: purchase_work_acceptance #: model:ir.model.fields.selection,name:purchase_work_acceptance.selection__work_acceptance__state__cancel msgid "Cancelled" -msgstr "" +msgstr "Annullato" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__company_id msgid "Company" -msgstr "" +msgstr "Azienda" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_select_work_acceptance_wizard msgid "Create Vendor Bill" -msgstr "" +msgstr "Crea una fattura fornitore" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit msgid "Create WA" -msgstr "" +msgstr "Crea approvazione lavoro" #. module: purchase_work_acceptance #: model_terms:ir.actions.act_window,help:purchase_work_acceptance.action_work_acceptance msgid "Create a new work acceptance" -msgstr "" +msgstr "Crea una nuova accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__create_uid @@ -136,7 +138,7 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__create_uid #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__create_date @@ -144,28 +146,28 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__create_date #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__currency_id #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__currency_id msgid "Currency" -msgstr "" +msgstr "Valuta" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__access_url msgid "Customer Portal URL" -msgstr "" +msgstr "URL portale cliente" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form msgid "Define your terms and conditions ..." -msgstr "" +msgstr "Definire i termini e condizioni ..." #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__name msgid "Description" -msgstr "" +msgstr "Descrizione" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__display_name @@ -173,75 +175,75 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__display_name #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: purchase_work_acceptance #: model:ir.model.fields.selection,name:purchase_work_acceptance.selection__work_acceptance__state__draft #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Draft" -msgstr "" +msgstr "Bozza" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__date_due #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__date_due #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Due Date" -msgstr "" +msgstr "Scadenza" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enable_wa_on_in #: model:res.groups,name:purchase_work_acceptance.group_enable_wa_on_in msgid "Enable WA on Goods Receipt" -msgstr "" +msgstr "Abilitare approvazione lavoro nella distinta merce" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enable_wa_on_po #: model:res.groups,name:purchase_work_acceptance.group_enable_wa_on_po msgid "Enable WA on Purchase Order" -msgstr "" +msgstr "Abilitare approvazione lavoro nell'ordine di acquisto" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enable_wa_on_invoice #: model:res.groups,name:purchase_work_acceptance.group_enable_wa_on_invoice msgid "Enable WA on Vendor Bill" -msgstr "" +msgstr "Abilitare accettazione lavoro nella ricevuta venditore" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enforce_wa_on_in #: model:res.groups,name:purchase_work_acceptance.group_enforce_wa_on_in msgid "Enforce WA on Goods Receipt" -msgstr "" +msgstr "Forza accettazione lavoro nella distinta merce" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_res_config_settings__group_enforce_wa_on_invoice #: model:res.groups,name:purchase_work_acceptance.group_enforce_wa_on_invoice msgid "Enforce WA on Vendor Bill" -msgstr "" +msgstr "Forza accettazione lavoro nella ricevuta venditore" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_follower_ids msgid "Followers" -msgstr "" +msgstr "Seguito da" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_partner_ids msgid "Followers (Partners)" -msgstr "" +msgstr "Seguito da (partner)" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_type_icon msgid "Font awesome icon e.g. fa-tasks" -msgstr "" +msgstr "Icona Font Awesome es. fa-tasks" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Group By" -msgstr "" +msgstr "Raggruppa per" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__has_message msgid "Has Message" -msgstr "" +msgstr "Ha un messaggio" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__id @@ -249,42 +251,42 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__id #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__id msgid "ID" -msgstr "" +msgstr "ID" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_exception_icon msgid "Icon" -msgstr "" +msgstr "Icona" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_exception_icon msgid "Icon to indicate an exception activity." -msgstr "" +msgstr "Icona per indicare un'attività eccezione." #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_needaction msgid "If checked, new messages require your attention." -msgstr "" +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_has_error msgid "If checked, some messages have a delivery error." -msgstr "" +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__invoice_ref msgid "Invoice Reference" -msgstr "" +msgstr "Riferimento fattura" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_is_follower msgid "Is Follower" -msgstr "" +msgstr "Segue" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_account_move msgid "Journal Entry" -msgstr "" +msgstr "Registrazione contabile" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard____last_update @@ -292,7 +294,7 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line____last_update #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__write_uid @@ -300,7 +302,7 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__write_uid #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__write_date @@ -308,155 +310,155 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__write_date #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_accepted_date_wizard__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_main_attachment_id msgid "Main Attachment" -msgstr "" +msgstr "Allegato principale" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_has_error msgid "Message Delivery error" -msgstr "" +msgstr "Errore di consegna messaggio" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_ids msgid "Messages" -msgstr "" +msgstr "Messaggi" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__my_activity_date_deadline msgid "My Activity Deadline" -msgstr "" +msgstr "Scadenza mia attività" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "My Work Acceptance" -msgstr "" +msgstr "Mia approvazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__name msgid "Name" -msgstr "" +msgstr "Nome" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_date_deadline msgid "Next Activity Deadline" -msgstr "" +msgstr "Scadenza prossima attività" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_summary msgid "Next Activity Summary" -msgstr "" +msgstr "Riepilogo prossima attività" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_type_id msgid "Next Activity Type" -msgstr "" +msgstr "Tipo prossima attività" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__notes msgid "Notes" -msgstr "" +msgstr "Note" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_needaction_counter msgid "Number of Actions" -msgstr "" +msgstr "Numero di azioni" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__message_has_error_counter msgid "Number of errors" -msgstr "" +msgstr "Numero di errori" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_needaction_counter msgid "Number of messages requiring action" -msgstr "" +msgstr "Numero di messaggi che richiedono un'azione" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__message_has_error_counter msgid "Number of messages with delivery error" -msgstr "" +msgstr "Numero di messaggi con errore di consegna" #. module: purchase_work_acceptance #. odoo-python #: code:addons/purchase_work_acceptance/models/purchase.py:0 #, python-format msgid "Operation not supported" -msgstr "" +msgstr "Operazione non supportata" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__partner_id msgid "Partner" -msgstr "" +msgstr "Partner" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_stock_picking_type msgid "Picking Type" -msgstr "" +msgstr "Tipo prelievo" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__access_url msgid "Portal Access URL" -msgstr "" +msgstr "URL accesso portale" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_res_config_settings msgid "Procurement purchase grouping settings" -msgstr "" +msgstr "Impostazioni raggruppamento approvvigionamento acquisti" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__product_id #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__product_id msgid "Product" -msgstr "" +msgstr "Prodotto" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__product_uom msgid "Product Unit of Measure" -msgstr "" +msgstr "Unità di misura del prodotto" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form msgid "Products" -msgstr "" +msgstr "Prodotti" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_purchase_order #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__purchase_id #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Purchase Order" -msgstr "" +msgstr "Ordine di acquisto" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_purchase_order_line #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__purchase_line_id msgid "Purchase Order Line" -msgstr "" +msgstr "Riga ordine di acquisto" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__product_qty msgid "Quantity" -msgstr "" +msgstr "Quantità" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Receive Date" -msgstr "" +msgstr "Data ricezione" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__date_receive #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__date_receive msgid "Received Date" -msgstr "" +msgstr "Data ricezione" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_tree msgid "Reference" -msgstr "" +msgstr "Riferimento" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_bank_statement_line__require_wa @@ -465,35 +467,35 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__require_wa #: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking__require_wa msgid "Require Wa" -msgstr "" +msgstr "Richiede accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__responsible_id #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__responsible_id msgid "Responsible Person" -msgstr "" +msgstr "Persona responsabile" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__activity_user_id msgid "Responsible User" -msgstr "" +msgstr "Utente responsabile" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__access_token msgid "Security Token" -msgstr "" +msgstr "Token di sicurezza" #. module: purchase_work_acceptance #. odoo-python #: code:addons/purchase_work_acceptance/models/work_acceptance.py:0 #, python-format msgid "Select Accept Date" -msgstr "" +msgstr "Selezionare data accettazione" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_accepted_date_wizard msgid "Select Accepted Date" -msgstr "" +msgstr "Selezionare data accettazione" #. module: purchase_work_acceptance #. odoo-python @@ -501,27 +503,27 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_select_work_acceptance_wizard #, python-format msgid "Select Work Acceptance" -msgstr "" +msgstr "Selezionare accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_select_work_acceptance_wizard msgid "Select Work Acceptance Wizard" -msgstr "" +msgstr "Procedura guidata selezione accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_work_accepted_date_wizard msgid "Select work accepted date" -msgstr "" +msgstr "Selezionare data accettazione lavoro" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form msgid "Set to draft" -msgstr "" +msgstr "Imposta a bozza" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__state msgid "Status" -msgstr "" +msgstr "Stato" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_state @@ -531,21 +533,25 @@ msgid "" "Today: Activity date is today\n" "Planned: Future activities." msgstr "" +"Stato in base alle attività\n" +"Scaduto: la data richiesta è trascorsa\n" +"Oggi: la data attività è oggi\n" +"Pianificato: attività future." #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__price_subtotal msgid "Subtotal" -msgstr "" +msgstr "Subtotale" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit msgid "To Accept" -msgstr "" +msgstr "Da approvare" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order_line__qty_to_accept msgid "To Accept Qty." -msgstr "" +msgstr "Q.tà da approvare" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_account_bank_statement_line__wa_id @@ -555,21 +561,23 @@ msgid "" "To control quantity and unit price of the vendor bill, to be according to " "the quantity and unit price of the work acceptance." msgstr "" +"Quantità da controllare e prezzo unitario del conto vendtore, da allineare " +"alla quantità e prezzo unitario dell'accettazione lavoro." #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_form msgid "Total" -msgstr "" +msgstr "Totale" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_stock_picking msgid "Transfer" -msgstr "" +msgstr "Trasferimento" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__activity_exception_decoration msgid "Type of the exception activity on record." -msgstr "" +msgstr "Tipo di attività eccezione sul record." #. module: purchase_work_acceptance #. odoo-python @@ -579,41 +587,43 @@ msgid "" "Unable set to draft this work acceptance. You must first cancel the related " "receipts." msgstr "" +"Impossibile impostare a bozza questa accettazione lavoro. Bisogna prima " +"annullare la ricevuta relativa." #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__price_unit msgid "Unit Price" -msgstr "" +msgstr "Prezzo unitario" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__partner_id #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_work_acceptance_search msgid "Vendor" -msgstr "" +msgstr "Fornitore" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_form_inherit msgid "WA" -msgstr "" +msgstr "Approvazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_accepted #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_view_search #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_purchase_order_filter msgid "WA Accepted" -msgstr "" +msgstr "Approvazione lavoro accettata" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_line_ids #: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order_line__wa_line_ids msgid "WA Lines" -msgstr "" +msgstr "Righe approvazione lavoro" #. module: purchase_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.purchase_order_view_search #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.view_purchase_order_filter msgid "WA Not Accepted" -msgstr "" +msgstr "Accettazione lavoro non approvata" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_account_bank_statement_line__wa_id @@ -622,39 +632,41 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking__wa_id #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance_line__wa_id msgid "WA Reference" -msgstr "" +msgstr "Riferimento approvazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_count msgid "WA count" -msgstr "" +msgstr "Conteggio approvazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking_type__bypass_wa msgid "WA not required" -msgstr "" +msgstr "Accettazione lavoro non richiesta" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_select_work_acceptance_wizard__wa_ids #: model:ir.model.fields,field_description:purchase_work_acceptance.field_stock_picking__wa_ids msgid "Wa" -msgstr "" +msgstr "Accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__website_message_ids msgid "Website Messages" -msgstr "" +msgstr "Messaggi sito web" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_work_acceptance__website_message_ids msgid "Website communication history" -msgstr "" +msgstr "Cronologia comunicazioni sito web" #. module: purchase_work_acceptance #: model:ir.model.fields,help:purchase_work_acceptance.field_stock_picking_type__bypass_wa msgid "" "When 'Enforce WA on Goods Receipt' is set, this option type can by pass it" msgstr "" +"Quando è impostato 'Forza accettazione lavoro in distinta merce', questo " +"tipo opzione la può baypassare" #. module: purchase_work_acceptance #: model:ir.actions.act_window,name:purchase_work_acceptance.action_work_acceptance @@ -663,27 +675,27 @@ msgstr "" #: model:ir.ui.menu,name:purchase_work_acceptance.menu_work_acceptance #: model_terms:ir.ui.view,arch_db:purchase_work_acceptance.res_config_settings_view_form_purchase msgid "Work Acceptance" -msgstr "" +msgstr "Approvazione lavoro" #. module: purchase_work_acceptance #: model:ir.model,name:purchase_work_acceptance.model_work_acceptance_line msgid "Work Acceptance Line" -msgstr "" +msgstr "Riga accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__wa_line_ids msgid "Work Acceptance Lines" -msgstr "" +msgstr "Righe accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_work_acceptance__user_id msgid "Work Acceptance Representative" -msgstr "" +msgstr "Rappresentante accettazione lavoro" #. module: purchase_work_acceptance #: model:ir.model.fields,field_description:purchase_work_acceptance.field_purchase_order__wa_ids msgid "Work Acceptances" -msgstr "" +msgstr "Approvazioni lavoro" #. module: purchase_work_acceptance #. odoo-python @@ -691,6 +703,8 @@ msgstr "" #, python-format msgid "You cannot validate a bill if Quantity not equal accepted quantity" msgstr "" +"Non si può validare una ricevuta se la quantità è diversa dalla quantità " +"accettata" #. module: purchase_work_acceptance #. odoo-python @@ -699,3 +713,5 @@ msgstr "" msgid "" "You cannot validate a transfer if done quantity not equal accepted quantity" msgstr "" +"Non si può validare un trasferimento se la quantità è diversa dalla quantità " +"accettata" From 0dbe9ecbf8145e5b3584140f8c61fc8c854fa833 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 14 Mar 2024 20:17:52 +0000 Subject: [PATCH 0931/1277] [UPD] addons table in README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 860342621f1..3a96f1fe7b1 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ addon | version | maintainers | summary [purchase_open_qty](purchase_open_qty/) | 16.0.2.0.1 | | Allows to identify the purchase orders that have quantities pending to invoice or to receive. [purchase_order_approved](purchase_order_approved/) | 16.0.1.0.0 | | Add a new state 'Approved' in purchase orders. [purchase_order_archive](purchase_order_archive/) | 16.0.1.0.0 | | Archive Purchase Orders +[purchase_order_downpayment](purchase_order_downpayment/) | 16.0.1.0.0 | | Allow to add payments from Purchase order view [purchase_order_general_discount](purchase_order_general_discount/) | 16.0.1.0.0 | | General discount per purchase order [purchase_order_hide_receipt_status](purchase_order_hide_receipt_status/) | 16.0.1.0.1 | | Purchase Order Hide Receipt Status [purchase_order_line_menu](purchase_order_line_menu/) | 16.0.2.1.0 | | Adds Purchase Order Lines Menu From 6870b5a656ac370fda70c89a32777982a2693caa Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 14 Mar 2024 20:17:53 +0000 Subject: [PATCH 0932/1277] [UPD] README.rst --- purchase_order_downpayment/README.rst | 2 +- purchase_order_downpayment/static/description/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/purchase_order_downpayment/README.rst b/purchase_order_downpayment/README.rst index c878333cc77..092cc2ddb9b 100644 --- a/purchase_order_downpayment/README.rst +++ b/purchase_order_downpayment/README.rst @@ -7,7 +7,7 @@ Purchase Order Downpayment !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:7d61f49e6bbdaf0d11f54d526d3011548db93ada9194005c4c32f52599d877b1 + !! source digest: sha256:30c07f3f85481a5630a1b3a2ac657b283e79d56cb7416aee7735506f286994f9 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/purchase_order_downpayment/static/description/index.html b/purchase_order_downpayment/static/description/index.html index 1501e3a007f..f0ba460dbc3 100644 --- a/purchase_order_downpayment/static/description/index.html +++ b/purchase_order_downpayment/static/description/index.html @@ -366,7 +366,7 @@

    Purchase Order Downpayment

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:7d61f49e6bbdaf0d11f54d526d3011548db93ada9194005c4c32f52599d877b1 +!! source digest: sha256:30c07f3f85481a5630a1b3a2ac657b283e79d56cb7416aee7735506f286994f9 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

    The module allows for creating down payments from purchase orders.

    From a8fa6e190b6daca5e09195ecbe1fbe14e7b600b2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 14 Mar 2024 20:17:54 +0000 Subject: [PATCH 0933/1277] [ADD] setup.py --- setup/_metapackage/VERSION.txt | 2 +- setup/_metapackage/setup.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/setup/_metapackage/VERSION.txt b/setup/_metapackage/VERSION.txt index 9bdd9217bc9..e793cfecdf7 100644 --- a/setup/_metapackage/VERSION.txt +++ b/setup/_metapackage/VERSION.txt @@ -1 +1 @@ -16.0.20240308.0 \ No newline at end of file +16.0.20240314.0 \ No newline at end of file diff --git a/setup/_metapackage/setup.py b/setup/_metapackage/setup.py index 61cbd528c3a..925ec2cf00b 100644 --- a/setup/_metapackage/setup.py +++ b/setup/_metapackage/setup.py @@ -36,6 +36,7 @@ 'odoo-addon-purchase_open_qty>=16.0dev,<16.1dev', 'odoo-addon-purchase_order_approved>=16.0dev,<16.1dev', 'odoo-addon-purchase_order_archive>=16.0dev,<16.1dev', + 'odoo-addon-purchase_order_downpayment>=16.0dev,<16.1dev', 'odoo-addon-purchase_order_general_discount>=16.0dev,<16.1dev', 'odoo-addon-purchase_order_hide_receipt_status>=16.0dev,<16.1dev', 'odoo-addon-purchase_order_line_menu>=16.0dev,<16.1dev', From 1e11b6bd7ba9a5f062a809b67ef1c4a928c4ac4b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 14 Mar 2024 20:22:08 +0000 Subject: [PATCH 0934/1277] [UPD] Update purchase_advance_payment.pot --- purchase_advance_payment/i18n/purchase_advance_payment.pot | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/purchase_advance_payment/i18n/purchase_advance_payment.pot b/purchase_advance_payment/i18n/purchase_advance_payment.pot index b8b69c32c05..091491e69f3 100644 --- a/purchase_advance_payment/i18n/purchase_advance_payment.pot +++ b/purchase_advance_payment/i18n/purchase_advance_payment.pot @@ -171,7 +171,6 @@ msgid "Partially Paid" msgstr "" #. module: purchase_advance_payment -#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_form msgid "Pay purchase advanced" msgstr "" @@ -206,6 +205,11 @@ msgstr "" msgid "Purchase Order" msgstr "" +#. module: purchase_advance_payment +#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids +msgid "Purchase Payment" +msgstr "" + #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__payment_ref msgid "Ref." From e2e9e0f09dbb7c7ca7e45c1c1cf66b74d5794734 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 14 Mar 2024 20:22:17 +0000 Subject: [PATCH 0935/1277] [UPD] Update purchase_order_downpayment.pot --- .../i18n/purchase_order_downpayment.pot | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 purchase_order_downpayment/i18n/purchase_order_downpayment.pot diff --git a/purchase_order_downpayment/i18n/purchase_order_downpayment.pot b/purchase_order_downpayment/i18n/purchase_order_downpayment.pot new file mode 100644 index 00000000000..5d57fcb0dce --- /dev/null +++ b/purchase_order_downpayment/i18n/purchase_order_downpayment.pot @@ -0,0 +1,164 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_downpayment +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "" +"%" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "Cancel" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__advance_payment_method +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.purchase_order_form_inherit_downpayment +msgid "Create Payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "Create and view payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "Create payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__amount +msgid "Down Payment Amount" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__fixed_amount +msgid "Down Payment Amount (Fixed)" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__fixed +msgid "Down payment (fixed amount)" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__percentage +msgid "Down payment (percentage)" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__id +msgid "ID" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__order_id +msgid "Order" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.actions.act_window,name:purchase_order_downpayment.action_view_po_downpayment_wizard +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.purchase_order_form_inherit_downpayment +msgid "Payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order__payment_count +msgid "Payment Count" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "" +"Payment will be created in draft so that you can review\n" +" them before validation." +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model,name:purchase_order_downpayment.model_account_payment +msgid "Payments" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_account_payment__purchase_id +msgid "Purchase" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model,name:purchase_order_downpayment.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model,name:purchase_order_downpayment.model_purchase_order_down_payment_wizard +msgid "Purchase Order DownPayment Wizard" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order__account_payment_ids +msgid "Purchase Payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__delivered +msgid "Regular Payment" +msgstr "" + +#. module: purchase_order_downpayment +#. odoo-python +#: code:addons/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py:0 +#, python-format +msgid "The value of the down payment amount must be positive." +msgstr "" + +#. module: purchase_order_downpayment +#. odoo-python +#: code:addons/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py:0 +#, python-format +msgid "The value of the down payment percentage cannot be greater than 100%." +msgstr "" From 93120f08214cfd59d1d80e66b8cc1d5d5ddaadf7 Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 14 Mar 2024 20:22:38 +0000 Subject: [PATCH 0936/1277] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_advance_payment Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_advance_payment/ --- purchase_advance_payment/i18n/es.po | 6 +++++- purchase_advance_payment/i18n/fr.po | 6 +++++- purchase_advance_payment/i18n/it.po | 6 +++++- purchase_advance_payment/i18n/pt_BR.po | 6 +++++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/purchase_advance_payment/i18n/es.po b/purchase_advance_payment/i18n/es.po index 6fc5ff90c64..68e7006e3e6 100644 --- a/purchase_advance_payment/i18n/es.po +++ b/purchase_advance_payment/i18n/es.po @@ -174,7 +174,6 @@ msgid "Partially Paid" msgstr "Pagado parcialmente" #. module: purchase_advance_payment -#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_form msgid "Pay purchase advanced" msgstr "Pagar anticipo de compra" @@ -209,6 +208,11 @@ msgstr "Compra" msgid "Purchase Order" msgstr "Pedido de compra" +#. module: purchase_advance_payment +#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids +msgid "Purchase Payment" +msgstr "" + #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__payment_ref msgid "Ref." diff --git a/purchase_advance_payment/i18n/fr.po b/purchase_advance_payment/i18n/fr.po index 837ff265e93..49202b476a5 100644 --- a/purchase_advance_payment/i18n/fr.po +++ b/purchase_advance_payment/i18n/fr.po @@ -172,7 +172,6 @@ msgid "Partially Paid" msgstr "" #. module: purchase_advance_payment -#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_form msgid "Pay purchase advanced" msgstr "" @@ -207,6 +206,11 @@ msgstr "" msgid "Purchase Order" msgstr "" +#. module: purchase_advance_payment +#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids +msgid "Purchase Payment" +msgstr "" + #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__payment_ref msgid "Ref." diff --git a/purchase_advance_payment/i18n/it.po b/purchase_advance_payment/i18n/it.po index 06430c43d5e..0a892508066 100644 --- a/purchase_advance_payment/i18n/it.po +++ b/purchase_advance_payment/i18n/it.po @@ -174,7 +174,6 @@ msgid "Partially Paid" msgstr "Pagato parzialmente" #. module: purchase_advance_payment -#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_form msgid "Pay purchase advanced" msgstr "Paga anticipo acquisto" @@ -209,6 +208,11 @@ msgstr "Acquisto" msgid "Purchase Order" msgstr "Ordine di acquisto" +#. module: purchase_advance_payment +#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids +msgid "Purchase Payment" +msgstr "" + #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__payment_ref msgid "Ref." diff --git a/purchase_advance_payment/i18n/pt_BR.po b/purchase_advance_payment/i18n/pt_BR.po index e4bb6813051..58dea9ebb2a 100644 --- a/purchase_advance_payment/i18n/pt_BR.po +++ b/purchase_advance_payment/i18n/pt_BR.po @@ -174,7 +174,6 @@ msgid "Partially Paid" msgstr "Parcialmente Pago" #. module: purchase_advance_payment -#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_form msgid "Pay purchase advanced" msgstr "Pagar Compra Antecipadamente" @@ -209,6 +208,11 @@ msgstr "Compra" msgid "Purchase Order" msgstr "Pedido Compra" +#. module: purchase_advance_payment +#: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids +msgid "Purchase Payment" +msgstr "" + #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__payment_ref msgid "Ref." From 7d8822c3c81492d3bd63a51eb90bfcfbea55354a Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 15 Mar 2024 13:06:49 +0000 Subject: [PATCH 0937/1277] Added translation using Weblate (Italian) --- purchase_order_downpayment/i18n/it.po | 165 ++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 purchase_order_downpayment/i18n/it.po diff --git a/purchase_order_downpayment/i18n/it.po b/purchase_order_downpayment/i18n/it.po new file mode 100644 index 00000000000..a75fdc018c1 --- /dev/null +++ b/purchase_order_downpayment/i18n/it.po @@ -0,0 +1,165 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_downpayment +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\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" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "" +"%" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "Cancel" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__advance_payment_method +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.purchase_order_form_inherit_downpayment +msgid "Create Payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "Create and view payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "Create payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__create_uid +msgid "Created by" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__create_date +msgid "Created on" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__amount +msgid "Down Payment Amount" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__fixed_amount +msgid "Down Payment Amount (Fixed)" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__fixed +msgid "Down payment (fixed amount)" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__percentage +msgid "Down payment (percentage)" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__id +msgid "ID" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__write_date +msgid "Last Updated on" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__order_id +msgid "Order" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.actions.act_window,name:purchase_order_downpayment.action_view_po_downpayment_wizard +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.purchase_order_form_inherit_downpayment +msgid "Payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order__payment_count +msgid "Payment Count" +msgstr "" + +#. module: purchase_order_downpayment +#: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard +msgid "" +"Payment will be created in draft so that you can review\n" +" them before validation." +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model,name:purchase_order_downpayment.model_account_payment +msgid "Payments" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_account_payment__purchase_id +msgid "Purchase" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model,name:purchase_order_downpayment.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model,name:purchase_order_downpayment.model_purchase_order_down_payment_wizard +msgid "Purchase Order DownPayment Wizard" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order__account_payment_ids +msgid "Purchase Payment" +msgstr "" + +#. module: purchase_order_downpayment +#: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__delivered +msgid "Regular Payment" +msgstr "" + +#. module: purchase_order_downpayment +#. odoo-python +#: code:addons/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py:0 +#, python-format +msgid "The value of the down payment amount must be positive." +msgstr "" + +#. module: purchase_order_downpayment +#. odoo-python +#: code:addons/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py:0 +#, python-format +msgid "The value of the down payment percentage cannot be greater than 100%." +msgstr "" From cb7616be7cf6a1563497fc529b3b6c7e3f066131 Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 15 Mar 2024 13:42:52 +0000 Subject: [PATCH 0938/1277] Translated using Weblate (Italian) Currently translated at 100.0% (231 of 231 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_request Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_request/it/ --- purchase_request/i18n/it.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/purchase_request/i18n/it.po b/purchase_request/i18n/it.po index 0807b70712f..692d3ee1f5c 100644 --- a/purchase_request/i18n/it.po +++ b/purchase_request/i18n/it.po @@ -12,8 +12,8 @@ msgstr "" "Project-Id-Version: purchase-workflow (10.0)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-11-17 03:38+0000\n" -"PO-Revision-Date: 2023-12-29 20:33+0000\n" -"Last-Translator: Francesco Foresti \n" +"PO-Revision-Date: 2024-03-15 15:37+0000\n" +"Last-Translator: mymage \n" "Language-Team: Italian (http://www.transifex.com/oca/" "OCA-purchase-workflow-10-0/language/it/)\n" "Language: it\n" @@ -356,7 +356,7 @@ msgstr "Copia le descrizioni in un nuovo ordine d'acquisto" #: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_form #: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_line_make_purchase_order msgid "Create RFQ" -msgstr "Crea Richiesta di preventivo" +msgstr "Crea RdP" #. module: purchase_request #: model:ir.model.fields,field_description:purchase_request.field_stock_move__created_purchase_request_line_id @@ -1508,7 +1508,7 @@ msgstr "Bisogna selezionare le righe dallo stesso tipo di prelievo." #: code:addons/purchase_request/wizard/purchase_request_line_make_purchase_order.py:0 #, python-format msgid "You have to select lines from the same company." -msgstr "Devi selezionare le righe della stessa azienda." +msgstr "Bisogna selezionare le righe della stessa azienda." #~ msgid "Number of messages which requires an action" #~ msgstr "Numero di messaggi che richiedono un'azione" From b5dc1db8c5d1250f9c591a89939b1f319c117c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Fran=C3=A7ois=20Teyssier?= Date: Fri, 15 Mar 2024 11:30:23 +0000 Subject: [PATCH 0939/1277] Translated using Weblate (French) Currently translated at 87.5% (35 of 40 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_advance_payment Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_advance_payment/fr/ --- purchase_advance_payment/i18n/fr.po | 77 +++++++++++++++-------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/purchase_advance_payment/i18n/fr.po b/purchase_advance_payment/i18n/fr.po index 49202b476a5..e514cc51b55 100644 --- a/purchase_advance_payment/i18n/fr.po +++ b/purchase_advance_payment/i18n/fr.po @@ -6,90 +6,93 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-03-15 15:37+0000\n" +"Last-Translator: Pierre-François Teyssier \n" "Language-Team: none\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.17\n" #. module: purchase_advance_payment #: model:ir.model,name:purchase_advance_payment.model_account_voucher_wizard_purchase +#, fuzzy msgid "Account Voucher Wizard Purchase" -msgstr "" +msgstr "Wizard de justificatif comptable d'achat" #. module: purchase_advance_payment #: model:ir.actions.act_window,name:purchase_advance_payment.action_view_account_voucher_wizard #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Advance Payment" -msgstr "" +msgstr "Acompte" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__advance_payment_status msgid "Advance Payment Status" -msgstr "" +msgstr "Statut de l'acompte" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_kpis_tree #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_view_tree msgid "Amount Residual" -msgstr "" +msgstr "Montant résiduel" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__amount_total msgid "Amount Total" -msgstr "" +msgstr "Montant total" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__amount_advance msgid "Amount advanced" -msgstr "" +msgstr "Montant avancé" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Amount in Order Currency" -msgstr "" +msgstr "Montant en devise de la commande" #. module: purchase_advance_payment #. odoo-python #: code:addons/purchase_advance_payment/wizard/purchase_advance_payment_wizard.py:0 #, python-format msgid "Amount of advance is greater than residual amount on purchase" -msgstr "" +msgstr "Le montant de l'acompte est supérieur au montant résiduel de l'achat" #. module: purchase_advance_payment #. odoo-python #: code:addons/purchase_advance_payment/wizard/purchase_advance_payment_wizard.py:0 #, python-format msgid "Amount of advance must be positive." -msgstr "" +msgstr "Le montant de l'acompte doit être positif." #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Cancel" -msgstr "" +msgstr "Annuler" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__create_uid msgid "Created by" -msgstr "" +msgstr "Créé par" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__create_date msgid "Created on" -msgstr "" +msgstr "Créé le" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__currency_amount msgid "Curr. amount" -msgstr "" +msgstr "Montant en devise" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__currency_id #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Currency" -msgstr "" +msgstr "Devise" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__date @@ -99,7 +102,7 @@ msgstr "" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__display_name msgid "Display Name" -msgstr "" +msgstr "Nom d'affichage" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__id @@ -114,102 +117,102 @@ msgstr "" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__journal_currency_id msgid "Journal Currency" -msgstr "" +msgstr "Devise du journal" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase____last_update msgid "Last Modified on" -msgstr "" +msgstr "Dernière modification le" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Dernière mise à jour par" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__write_date msgid "Last Updated on" -msgstr "" +msgstr "Dernière mise à jour le" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Make advance payment" -msgstr "" +msgstr "Faire un paiement d'acompte" #. module: purchase_advance_payment #: model:ir.model.fields.selection,name:purchase_advance_payment.selection__purchase_order__advance_payment_status__not_paid msgid "Not Paid" -msgstr "" +msgstr "Non payé" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Operation" -msgstr "" +msgstr "Opération" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__order_id msgid "Order" -msgstr "" +msgstr "Commande" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Order Currency" -msgstr "" +msgstr "Devise de la commande" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Order Due Amount" -msgstr "" +msgstr "Montant dû de la commande" #. module: purchase_advance_payment #: model:ir.model.fields.selection,name:purchase_advance_payment.selection__purchase_order__advance_payment_status__paid msgid "Paid" -msgstr "" +msgstr "Payé" #. module: purchase_advance_payment #: model:ir.model.fields.selection,name:purchase_advance_payment.selection__purchase_order__advance_payment_status__partial msgid "Partially Paid" -msgstr "" +msgstr "Partiellement réglé" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_form msgid "Pay purchase advanced" -msgstr "" +msgstr "Payer un acompte d'achat" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.view_account_voucher_wizard msgid "Payment Method" -msgstr "" +msgstr "Mode de paiement" #. module: purchase_advance_payment #: model_terms:ir.ui.view,arch_db:purchase_advance_payment.purchase_order_form msgid "Payment advances" -msgstr "" +msgstr "Paiements d'acomptes" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__payment_line_ids msgid "Payment move lines" -msgstr "" +msgstr "Lignes de paiements" #. module: purchase_advance_payment #: model:ir.model,name:purchase_advance_payment.model_account_payment msgid "Payments" -msgstr "" +msgstr "Paiements" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_payment__purchase_id msgid "Purchase" -msgstr "" +msgstr "Achat" #. module: purchase_advance_payment #: model:ir.model,name:purchase_advance_payment.model_purchase_order msgid "Purchase Order" -msgstr "" +msgstr "Bon de commande" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids msgid "Purchase Payment" -msgstr "" +msgstr "Paiement d'achat" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__payment_ref @@ -219,4 +222,4 @@ msgstr "" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__amount_residual msgid "Residual amount" -msgstr "" +msgstr "Montant résiduel" From 9e8a602f255a6f686d3be8dbb0507bce748d4db5 Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 15 Mar 2024 13:07:25 +0000 Subject: [PATCH 0940/1277] Translated using Weblate (Italian) Currently translated at 100.0% (40 of 40 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_advance_payment Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_advance_payment/it/ --- purchase_advance_payment/i18n/it.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/purchase_advance_payment/i18n/it.po b/purchase_advance_payment/i18n/it.po index 0a892508066..f2ace627099 100644 --- a/purchase_advance_payment/i18n/it.po +++ b/purchase_advance_payment/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-02-05 09:41+0000\n" +"PO-Revision-Date: 2024-03-15 15:37+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -211,7 +211,7 @@ msgstr "Ordine di acquisto" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_purchase_order__account_payment_ids msgid "Purchase Payment" -msgstr "" +msgstr "Pagamento acquisto" #. module: purchase_advance_payment #: model:ir.model.fields,field_description:purchase_advance_payment.field_account_voucher_wizard_purchase__payment_ref From 2091eaeecb7311f5a5a829b6dce0d4fd5836688f Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 15 Mar 2024 13:16:10 +0000 Subject: [PATCH 0941/1277] Translated using Weblate (Italian) Currently translated at 100.0% (150 of 150 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_blanket_order Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_blanket_order/it/ --- purchase_blanket_order/i18n/it.po | 307 ++++++++++++++++-------------- 1 file changed, 168 insertions(+), 139 deletions(-) diff --git a/purchase_blanket_order/i18n/it.po b/purchase_blanket_order/i18n/it.po index 323eca744fa..c150306ac4e 100644 --- a/purchase_blanket_order/i18n/it.po +++ b/purchase_blanket_order/i18n/it.po @@ -6,142 +6,144 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-03-15 15:37+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\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: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Blanket Order # " -msgstr "" +msgstr "Ordine aperto #" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Currency:" -msgstr "" +msgstr "Valuta:" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Payment Terms:" -msgstr "" +msgstr "Termini di pagamento:" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Purchase person:" -msgstr "" +msgstr "Referente acquisti:" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Subtotal" -msgstr "" +msgstr "Subtotale" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Total" -msgstr "" +msgstr "Totale" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Validity Date:" -msgstr "" +msgstr "Data di validità:" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_needaction #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_needaction msgid "Action Needed" -msgstr "" +msgstr "Azione richiesta" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_ids #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_ids msgid "Activities" -msgstr "" +msgstr "Attività" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_exception_decoration #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_exception_decoration msgid "Activity Exception Decoration" -msgstr "" +msgstr "Decorazione eccezione attività" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_state #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_state msgid "Activity State" -msgstr "" +msgstr "Stato attività" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_type_icon #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_type_icon msgid "Activity Type Icon" -msgstr "" +msgstr "Icona tipo attività" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:0 #, python-format msgid "All lines have already been completed." -msgstr "" +msgstr "Tutte le righe sono già state completate." #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Amount" -msgstr "" +msgstr "Valore" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:0 #, python-format msgid "An order can't be empty" -msgstr "" +msgstr "Un ordine non può essere vuoto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_attachment_count #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_attachment_count msgid "Attachment Count" -msgstr "" +msgstr "Conteggio allegati" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__blanket_line_id msgid "Blanket Line" -msgstr "" +msgstr "Riga ordine aperto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__blanket_order_id #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Blanket Order" -msgstr "" +msgstr "Ordine aperto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_order_line__blanket_order_line msgid "Blanket Order Line" -msgstr "" +msgstr "Riga ordine aperto" #. module: purchase_blanket_order #: model:ir.actions.act_window,name:purchase_blanket_order.act_open_purchase_blanket_order_lines_view_tree #: model:ir.ui.menu,name:purchase_blanket_order.menu_purchase_blanket_order_line msgid "Blanket Order Lines" -msgstr "" +msgstr "Righe ordine aperto" #. module: purchase_blanket_order #: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order_wizard msgid "Blanket Order Wizard" -msgstr "" +msgstr "Procedura guidata ordine aperto" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__date_start msgid "Blanket Order starting date." -msgstr "" +msgstr "Data inizio ordine aperto." #. module: purchase_blanket_order #: model:ir.actions.act_window,name:purchase_blanket_order.act_open_purchase_blanket_order_view #: model:ir.ui.menu,name:purchase_blanket_order.menu_purchase_blanket_order_config #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.purchase_config_settings_form_view msgid "Blanket Orders" -msgstr "" +msgstr "Ordini aperti" #. module: purchase_blanket_order #. odoo-python @@ -151,17 +153,19 @@ msgid "" "Can not create Purchase Order from Blanket Order lines with different " "currencies" msgstr "" +"Non si possono creare ordini di acquisto da righe ordine aperto con valute " +"diverse" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_create_purchase_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__cancelled msgid "Cancelled" -msgstr "" +msgstr "Annullato" #. module: purchase_blanket_order #. odoo-python @@ -171,44 +175,48 @@ msgid "" "Cannot confirm order %s as one of the lines refers to a blanket order that " "has no remaining quantity." msgstr "" +"Non è possibile confermare l'ordine %s in quanto una delle righe si " +"riferisce ad un ordine aperto che non ha quantità rimanenti." #. module: purchase_blanket_order #: model_terms:ir.actions.act_window,help:purchase_blanket_order.act_open_purchase_blanket_order_view msgid "" "Click to create a blanket order that can be converted into a purchase order." msgstr "" +"Clicca per creare un ordine aperto che può essere convertito in un ordine di " +"acquisto." #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__company_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__company_id msgid "Company" -msgstr "" +msgstr "Azienda" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Confirm" -msgstr "" +msgstr "Conferma" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__confirmed msgid "Confirmed" -msgstr "" +msgstr "Confermato" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_create_purchase_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Create Purchase Order" -msgstr "" +msgstr "Crea ordine di acquisto" #. module: purchase_blanket_order #: model:ir.actions.act_window,name:purchase_blanket_order.action_create_purchase_order msgid "Create RFQ" -msgstr "" +msgstr "Crea RdP" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_create_purchase_order msgid "Create and View Order" -msgstr "" +msgstr "Crea e visualizza ordine" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__create_uid @@ -216,7 +224,7 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__create_uid #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__create_date @@ -224,21 +232,21 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__create_date #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__currency_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__currency_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__currency_id msgid "Currency" -msgstr "" +msgstr "Valuta" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "Date Scheduled" -msgstr "" +msgstr "Data schedulata" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__validity_date @@ -246,26 +254,29 @@ msgid "" "Date until which the blanket order will be valid, after this date the " "blanket order will be marked as expired" msgstr "" +"Data fino alla quale l'ordine aperto sarà valido, dopo questa data l'ordine " +"aperto sarà indicato come scaduto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__name msgid "Description" -msgstr "" +msgstr "Descrizione" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_res_config_settings__group_purchase_blanket_disable_adding_lines msgid "Disable adding more lines to POs" -msgstr "" +msgstr "Disabilita l'aggiunta di altre righe negli OA" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.purchase_config_settings_form_view msgid "Disable adding more lines to POs from Blanket Orders" -msgstr "" +msgstr "Disabilita l'aggiunta di altre righe negli OA da ordini aperti" #. module: purchase_blanket_order #: model:res.groups,name:purchase_blanket_order.purchase_blanket_orders_disable_adding_lines msgid "Disable adding more lines to POs from Purchase Blanket Orders" msgstr "" +"Disabilita l'aggiunta di altre righe negli OA da ordini aperti di acquisto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__display_name @@ -273,57 +284,57 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__display_name #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: purchase_blanket_order #: model:ir.model.fields.selection,name:purchase_blanket_order.selection__purchase_blanket_order__state__done msgid "Done" -msgstr "" +msgstr "Evaso" #. module: purchase_blanket_order #: model:ir.model.fields.selection,name:purchase_blanket_order.selection__purchase_blanket_order__state__draft msgid "Draft" -msgstr "" +msgstr "Bozza" #. module: purchase_blanket_order #: model:ir.actions.server,name:purchase_blanket_order.expired_purchase_blanket_orders_cron_ir_actions_server #: model:ir.cron,cron_name:purchase_blanket_order.expired_purchase_blanket_orders_cron msgid "Expire Blanket Orders" -msgstr "" +msgstr "Scadenza ordini aperti" #. module: purchase_blanket_order #: model:ir.model.fields.selection,name:purchase_blanket_order.selection__purchase_blanket_order__state__expired msgid "Expired" -msgstr "" +msgstr "Scaduto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__fiscal_position_id msgid "Fiscal Position" -msgstr "" +msgstr "Posizione fiscale" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_follower_ids #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_follower_ids msgid "Followers" -msgstr "" +msgstr "Seguito da" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_partner_ids #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_partner_ids msgid "Followers (Partners)" -msgstr "" +msgstr "Seguito da (partner)" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__activity_type_icon #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__activity_type_icon msgid "Font awesome icon e.g. fa-tasks" -msgstr "" +msgstr "Icona Font Awesome es. fa-tasks" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__has_message #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__has_message msgid "Has Message" -msgstr "" +msgstr "Ha un messaggio" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__id @@ -331,48 +342,48 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__id msgid "ID" -msgstr "" +msgstr "ID" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_exception_icon #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_exception_icon msgid "Icon" -msgstr "" +msgstr "Icona" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__activity_exception_icon #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__activity_exception_icon msgid "Icon to indicate an exception activity." -msgstr "" +msgstr "Icona per indicare un'attività eccezione." #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__message_needaction #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__message_needaction msgid "If checked, new messages require your attention." -msgstr "" +msgstr "Se selezionata, nuovi messaggi richiedono attenzione." #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__message_has_error #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__message_has_error msgid "If checked, some messages have a delivery error." -msgstr "" +msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search msgid "Invoiced Qty" -msgstr "" +msgstr "Q.tà fatturata" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__invoiced_uom_qty #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__invoiced_uom_qty msgid "Invoiced quantity" -msgstr "" +msgstr "Quantità fatturata" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_is_follower #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_is_follower msgid "Is Follower" -msgstr "" +msgstr "Segue" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order____last_update @@ -380,7 +391,7 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard____last_update #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__write_uid @@ -388,7 +399,7 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__write_uid #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__write_date @@ -396,133 +407,133 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__write_date #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__line_ids #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Lines" -msgstr "" +msgstr "Righe" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_main_attachment_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_main_attachment_id msgid "Main Attachment" -msgstr "" +msgstr "Allegato principale" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_has_error #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_has_error msgid "Message Delivery error" -msgstr "" +msgstr "Errore di consegna messaggio" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_ids #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_ids msgid "Messages" -msgstr "" +msgstr "Messaggi" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "Must have some lines" -msgstr "" +msgstr "Deve contenere delle righe" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__my_activity_date_deadline #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__my_activity_date_deadline msgid "My Activity Deadline" -msgstr "" +msgstr "Scadenza mia attività" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__name msgid "Name" -msgstr "" +msgstr "Nome" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_date_deadline #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_date_deadline msgid "Next Activity Deadline" -msgstr "" +msgstr "Scadenza prossima attività" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_summary #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_summary msgid "Next Activity Summary" -msgstr "" +msgstr "Riepilogo prossima attività" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_type_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_type_id msgid "Next Activity Type" -msgstr "" +msgstr "Tipo prossima attività" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__note msgid "Note" -msgstr "" +msgstr "Nota" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_needaction_counter #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_needaction_counter msgid "Number of Actions" -msgstr "" +msgstr "Numero di azioni" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__message_has_error_counter #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__message_has_error_counter msgid "Number of errors" -msgstr "" +msgstr "Numero di errori" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__message_needaction_counter #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__message_needaction_counter msgid "Number of messages requiring action" -msgstr "" +msgstr "Numero di messaggi che richiedono un'azione" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__message_has_error_counter #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__message_has_error_counter msgid "Number of messages with delivery error" -msgstr "" +msgstr "Numero di messaggi con errore di consegna" #. module: purchase_blanket_order #: model:ir.model.fields.selection,name:purchase_blanket_order.selection__purchase_blanket_order__state__open #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search msgid "Open" -msgstr "" +msgstr "Aperto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__order_id msgid "Order" -msgstr "" +msgstr "Ordine" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Order Lines" -msgstr "" +msgstr "Righe ordine" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__line_ids msgid "Order lines" -msgstr "" +msgstr "Righe ordine" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search msgid "Ordered Qty" -msgstr "" +msgstr "Q.tà ordinata" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__ordered_uom_qty #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__ordered_uom_qty msgid "Ordered quantity" -msgstr "" +msgstr "Quantità ordinata" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_order__blanket_order_id msgid "Origin blanket order" -msgstr "" +msgstr "Origine ordine aperto" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_tree @@ -530,44 +541,44 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search msgid "Original Qty" -msgstr "" +msgstr "Q.tà originale" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__original_uom_qty #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__original_uom_qty msgid "Original quantity" -msgstr "" +msgstr "Quantità originale" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "Partner is mandatory" -msgstr "" +msgstr "Il partner è obbligatorio" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__payment_term_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__payment_term_id msgid "Payment Terms" -msgstr "" +msgstr "Termini di pagamento" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__price_unit #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__price_unit msgid "Price" -msgstr "" +msgstr "Prezzo" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "Price must be greater than zero" -msgstr "" +msgstr "Il prezzo deve essere maggiore di zero" #. module: purchase_blanket_order #: model:ir.model,name:purchase_blanket_order.model_res_config_settings msgid "Procurement purchase grouping settings" -msgstr "" +msgstr "Impostazioni raggruppamento approvvigionamento acquisti" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__product_id @@ -575,122 +586,122 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__product_id #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Product" -msgstr "" +msgstr "Prodotto" #. module: purchase_blanket_order #: model:ir.actions.report,name:purchase_blanket_order.report_blanket_order #: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order msgid "Purchase Blanket Order" -msgstr "" +msgstr "Ordine d'acquisto aperto" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:0 #, python-format msgid "Purchase Blanket Order %s is not open" -msgstr "" +msgstr "L'ordine di acquisto aperto %s non è aperto" #. module: purchase_blanket_order #: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order_line #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_form msgid "Purchase Blanket Order Line" -msgstr "" +msgstr "Riga ordine di acquisto aperto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__line_count msgid "Purchase Blanket Order Line count" -msgstr "" +msgstr "Numero righe ordine d'acquisto aperto" #. module: purchase_blanket_order #: model:ir.model,name:purchase_blanket_order.model_purchase_blanket_order_wizard_line msgid "Purchase Blanket Order Wizard Line" -msgstr "" +msgstr "Riga procedura guidata ordine d'acquisto aperto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__purchase_count msgid "Purchase Count" -msgstr "" +msgstr "Conteggio acquisti" #. module: purchase_blanket_order #: model:ir.model,name:purchase_blanket_order.model_purchase_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard__purchase_order_id msgid "Purchase Order" -msgstr "" +msgstr "Ordine di acquisto" #. module: purchase_blanket_order #: model:ir.model,name:purchase_blanket_order.model_purchase_order_line msgid "Purchase Order Line" -msgstr "" +msgstr "Riga ordine di acquisto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__purchase_lines #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_form msgid "Purchase Order Lines" -msgstr "" +msgstr "Righe ordine di acquisto" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "Quantity must be greater than zero" -msgstr "" +msgstr "La quantità deve essere maggiore di zero" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__qty msgid "Quantity to Order" -msgstr "" +msgstr "Quantità da Ordinare" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:0 #, python-format msgid "RFQ" -msgstr "" +msgstr "RdP" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "RFQ/Orders" -msgstr "" +msgstr "RdP/Ordini" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search msgid "Received Qty" -msgstr "" +msgstr "Q.tà ricevuta" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__received_uom_qty #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__received_uom_qty msgid "Received quantity" -msgstr "" +msgstr "Quantità ricevuta" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_search msgid "Remaining Qty" -msgstr "" +msgstr "Q.tà rimanente" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__remaining_uom_qty #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__remaining_uom_qty #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__remaining_uom_qty msgid "Remaining quantity" -msgstr "" +msgstr "Quantità rimanente" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__remaining_qty msgid "Remaining quantity in base UoM" -msgstr "" +msgstr "Quantità rimanente in UdM base" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__user_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__user_id msgid "Responsible" -msgstr "" +msgstr "Responsabile" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__activity_user_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__activity_user_id msgid "Responsible User" -msgstr "" +msgstr "Utente responsabile" #. module: purchase_blanket_order #. odoo-python @@ -700,38 +711,41 @@ msgid "" "Schedule dates defined on the Purchase Order Line and on the Blanket Order " "Line do not match." msgstr "" +"Le date pianificate definite sulla riga ordine di acquisto e sulla riga " +"ordine aperto non corrispondono." #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__date_schedule #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__date_schedule #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Scheduled Date" -msgstr "" +msgstr "Data schedulata" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.purchase_blanket_order_line_search msgid "Search Purchase Blanket Order Line" -msgstr "" +msgstr "Cerca riga ordine di acquisto aperto" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__sequence msgid "Sequence" -msgstr "" +msgstr "Sequenza" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Setup default terms and conditions in your company settings." msgstr "" +"Imposta termini predefiniti e condizioni nelle tue impostazioni aziendali." #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__date_start msgid "Start Date" -msgstr "" +msgstr "Data inizio" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__state msgid "State" -msgstr "" +msgstr "Stato" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__activity_state @@ -742,16 +756,20 @@ msgid "" "Today: Activity date is today\n" "Planned: Future activities." msgstr "" +"Stato in base alle attività\n" +"Scaduto: la data richiesta è trascorsa\n" +"Oggi: la data attività è oggi\n" +"Pianificato: attività future." #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__price_subtotal msgid "Subtotal" -msgstr "" +msgstr "Subtotale" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__price_tax msgid "Tax" -msgstr "" +msgstr "Imposta" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__amount_tax @@ -759,12 +777,12 @@ msgstr "" #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__taxes_id #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Taxes" -msgstr "" +msgstr "Imposte" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "Terms and Conditions" -msgstr "" +msgstr "Termini e condizioni" #. module: purchase_blanket_order #. odoo-python @@ -773,46 +791,48 @@ msgstr "" msgid "" "The currency of the blanket order must match with that of the purchase order." msgstr "" +"La valuta dell'ordine aperto deve corrispondere con quella dell'ordine di " +"acquisto." #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/purchase_order.py:0 #, python-format msgid "The vendor must be equal to the blanket order lines vendor" -msgstr "" +msgstr "Il fornitore deve essere lo stesso delle righe dell'ordine aperto" #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.view_purchase_blanket_order_form msgid "To Draft" -msgstr "" +msgstr "A bozza" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__amount_total #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__price_total msgid "Total" -msgstr "" +msgstr "Totale" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__activity_exception_decoration #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__activity_exception_decoration msgid "Type of the exception activity on record." -msgstr "" +msgstr "Tipo di attività eccezione sul record." #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "Unit Price" -msgstr "" +msgstr "Prezzo unitario" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__product_uom #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__product_uom msgid "Unit of Measure" -msgstr "" +msgstr "Unità di misura" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__amount_untaxed msgid "Untaxed Amount" -msgstr "" +msgstr "Imponibile" #. module: purchase_blanket_order #: model_terms:ir.actions.act_window,help:purchase_blanket_order.act_open_purchase_blanket_order_view @@ -822,59 +842,64 @@ msgid "" "control\n" " the products received and control the vendor bills." msgstr "" +"Usa questo menu per ricercare nei tuoi ordini aperto. Per ogni ordine aperto," +"\n" +" puoi tracciare le relative conversazioni con il cliente, " +"controllare\n" +" i prodotti spediti e controllare le fatture del fornitore." #. module: purchase_blanket_order #: model_terms:ir.ui.view,arch_db:purchase_blanket_order.report_blanketorder_document msgid "VAT:" -msgstr "" +msgstr "IVA:" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__validity_date msgid "Validity Date" -msgstr "" +msgstr "Data validità" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "Validity date is mandatory" -msgstr "" +msgstr "La data di validità è obbligatoria" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "Validity date must be in the future" -msgstr "" +msgstr "La data di validità deve essere nel futuro" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__partner_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__partner_id #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__partner_id msgid "Vendor" -msgstr "" +msgstr "Fornitore" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__partner_ref msgid "Vendor Reference" -msgstr "" +msgstr "Riferimento venditore" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order__website_message_ids #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_line__website_message_ids msgid "Website Messages" -msgstr "" +msgstr "Messaggi sito web" #. module: purchase_blanket_order #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order__website_message_ids #: model:ir.model.fields,help:purchase_blanket_order.field_purchase_blanket_order_line__website_message_ids msgid "Website communication history" -msgstr "" +msgstr "Cronologia comunicazioni sito web" #. module: purchase_blanket_order #: model:ir.model.fields,field_description:purchase_blanket_order.field_purchase_blanket_order_wizard_line__wizard_id msgid "Wizard" -msgstr "" +msgstr "Procedura guidata" #. module: purchase_blanket_order #. odoo-python @@ -884,6 +909,8 @@ msgid "" "You can not delete a blanket order with opened purchase orders! Try to " "cancel them before." msgstr "" +"Non si può cancellare un ordine aperto con ordini di acquisto aperti! " +"Provare prima a cancellarli." #. module: purchase_blanket_order #. odoo-python @@ -891,31 +918,33 @@ msgstr "" #, python-format msgid "You can not delete an open blanket order! Try to cancel it before." msgstr "" +"Non si può cancellare un ordine aperto in stato aperto! Prova prima ad " +"annullarlo." #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:0 #, python-format msgid "You can't create a purchase order from an expired blanket order!" -msgstr "" +msgstr "Non si può creare un ordine di acquisto da un ordine aperto scaduto!" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:0 #, python-format msgid "You can't order more than the remaining quantities" -msgstr "" +msgstr "Non si può ordinare più della quantità rimanente" #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/wizard/create_purchase_orders.py:0 #, python-format msgid "You have to select lines from the same company." -msgstr "" +msgstr "Bisogna selezionare le righe della stessa azienda." #. module: purchase_blanket_order #. odoo-python #: code:addons/purchase_blanket_order/models/blanket_orders.py:0 #, python-format msgid "remaining" -msgstr "" +msgstr "rimanenti" From afbb2ac309c34cee67d85c1a16e02bda410ead3d Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 15 Mar 2024 13:08:26 +0000 Subject: [PATCH 0942/1277] Translated using Weblate (Italian) Currently translated at 100.0% (28 of 28 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_order_downpayment Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_order_downpayment/it/ --- purchase_order_downpayment/i18n/it.po | 60 +++++++++++++++------------ 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/purchase_order_downpayment/i18n/it.po b/purchase_order_downpayment/i18n/it.po index a75fdc018c1..cf0821b35e6 100644 --- a/purchase_order_downpayment/i18n/it.po +++ b/purchase_order_downpayment/i18n/it.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-03-15 15:37+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\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: purchase_order_downpayment #: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard @@ -20,98 +22,100 @@ msgid "" "%" msgstr "" +"%" #. module: purchase_order_downpayment #: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__advance_payment_method #: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.purchase_order_form_inherit_downpayment msgid "Create Payment" -msgstr "" +msgstr "Crea pagamento" #. module: purchase_order_downpayment #: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard msgid "Create and view payment" -msgstr "" +msgstr "Crea e visualizza pagamento" #. module: purchase_order_downpayment #: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard msgid "Create payment" -msgstr "" +msgstr "Crea pagamento" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__amount msgid "Down Payment Amount" -msgstr "" +msgstr "Importo acconto" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__fixed_amount msgid "Down Payment Amount (Fixed)" -msgstr "" +msgstr "Importo acconto (fisso)" #. module: purchase_order_downpayment #: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__fixed msgid "Down payment (fixed amount)" -msgstr "" +msgstr "Acconto (valore fisso)" #. module: purchase_order_downpayment #: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__percentage msgid "Down payment (percentage)" -msgstr "" +msgstr "Acconto (percentuale)" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__id msgid "ID" -msgstr "" +msgstr "ID" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order_down_payment_wizard__order_id msgid "Order" -msgstr "" +msgstr "Ordine" #. module: purchase_order_downpayment #: model:ir.actions.act_window,name:purchase_order_downpayment.action_view_po_downpayment_wizard #: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.purchase_order_form_inherit_downpayment msgid "Payment" -msgstr "" +msgstr "Pagamento" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order__payment_count msgid "Payment Count" -msgstr "" +msgstr "Conteggio pagamenti" #. module: purchase_order_downpayment #: model_terms:ir.ui.view,arch_db:purchase_order_downpayment.view_po_downpayment_wizard @@ -119,47 +123,49 @@ msgid "" "Payment will be created in draft so that you can review\n" " them before validation." msgstr "" +"Il pagamento verrà creato in bozza in modo che possa essere rivisto\n" +" prima della validazione." #. module: purchase_order_downpayment #: model:ir.model,name:purchase_order_downpayment.model_account_payment msgid "Payments" -msgstr "" +msgstr "Pagamenti" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_account_payment__purchase_id msgid "Purchase" -msgstr "" +msgstr "Acquisto" #. module: purchase_order_downpayment #: model:ir.model,name:purchase_order_downpayment.model_purchase_order msgid "Purchase Order" -msgstr "" +msgstr "Ordine di acquisto" #. module: purchase_order_downpayment #: model:ir.model,name:purchase_order_downpayment.model_purchase_order_down_payment_wizard msgid "Purchase Order DownPayment Wizard" -msgstr "" +msgstr "Procedura guidata acconto ordine di acquisto" #. module: purchase_order_downpayment #: model:ir.model.fields,field_description:purchase_order_downpayment.field_purchase_order__account_payment_ids msgid "Purchase Payment" -msgstr "" +msgstr "Pagamento acquisto" #. module: purchase_order_downpayment #: model:ir.model.fields.selection,name:purchase_order_downpayment.selection__purchase_order_down_payment_wizard__advance_payment_method__delivered msgid "Regular Payment" -msgstr "" +msgstr "Pagamento regolare" #. module: purchase_order_downpayment #. odoo-python #: code:addons/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py:0 #, python-format msgid "The value of the down payment amount must be positive." -msgstr "" +msgstr "Il valore dell'acconto deve essere positivo." #. module: purchase_order_downpayment #. odoo-python #: code:addons/purchase_order_downpayment/wizard/purchase_order_downpayment_wizard.py:0 #, python-format msgid "The value of the down payment percentage cannot be greater than 100%." -msgstr "" +msgstr "La percentuale dell'acconto on può essere superiore a 100%." From 87983d63f65939448d448e32fd6a75e4345e86bf Mon Sep 17 00:00:00 2001 From: ThiagoMForgeFlow Date: Tue, 23 Jan 2024 12:30:38 +0100 Subject: [PATCH 0943/1277] [IMP] purchase_blanket_order: link PBO when a PO is created and add expired warnings --- purchase_blanket_order/data/ir_cron.xml | 15 ++++++++++++ .../models/blanket_orders.py | 5 ++++ .../models/purchase_order.py | 24 +++++++++++++++---- .../views/purchase_blanket_order_views.xml | 3 +++ 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/purchase_blanket_order/data/ir_cron.xml b/purchase_blanket_order/data/ir_cron.xml index 01a96163279..b6483b7a1a6 100644 --- a/purchase_blanket_order/data/ir_cron.xml +++ b/purchase_blanket_order/data/ir_cron.xml @@ -20,4 +20,19 @@ code model.expire_orders() + + + Warnings Blanket Orders + 1 + days + + -1 + + + code + model.compute_warnings() + diff --git a/purchase_blanket_order/models/blanket_orders.py b/purchase_blanket_order/models/blanket_orders.py index acd2da03c53..6cfa5d57031 100644 --- a/purchase_blanket_order/models/blanket_orders.py +++ b/purchase_blanket_order/models/blanket_orders.py @@ -327,6 +327,11 @@ def expire_orders(self): expired_orders.modified(["validity_date"]) expired_orders.env.flush_all() + @api.model + def compute_warnings(self): + """Base function to create activity warnings""" + return True + @api.model def _search_original_uom_qty(self, operator, value): bo_line_obj = self.env["purchase.blanket.order.line"] diff --git a/purchase_blanket_order/models/purchase_order.py b/purchase_blanket_order/models/purchase_order.py index 432c5b9b7e9..04736cf8b76 100644 --- a/purchase_blanket_order/models/purchase_order.py +++ b/purchase_blanket_order/models/purchase_order.py @@ -71,6 +71,14 @@ class PurchaseOrderLine(models.Model): domain="[('product_id', '=', product_id)]", ) + @api.model_create_multi + def create(self, vals_list): + lines = super().create(vals_list) + for line in lines: + if not line.blanket_order_line: + line.with_context(assigned_from_creation=True).get_assigned_bo_line() + return lines + def _get_assigned_bo_line(self, bo_lines): # We get the blanket order line with enough quantity and closest # scheduled date @@ -132,7 +140,11 @@ def onchange_product_id(self): def _compute_price_unit_and_date_planned_and_name(self): res = super()._compute_price_unit_and_date_planned_and_name() for rec in self: - if rec.product_id and not rec.env.context.get("skip_blanket_find", False): + if ( + rec.product_id + and not rec.env.context.get("skip_blanket_find", False) + and not rec.env.context.get("assigned_from_creation", False) + ): return rec.get_assigned_bo_line() return res @@ -153,10 +165,11 @@ def onchange_blanket_order_line(self): if bol.taxes_id: self.taxes_id = bol.taxes_id else: - self._compute_tax_id() - self.with_context( - skip_blanket_find=True - )._compute_price_unit_and_date_planned_and_name() + if not self.env.context.get("assigned_from_creation", False): + self._compute_tax_id() + self.with_context( + skip_blanket_find=True + )._compute_price_unit_and_date_planned_and_name() @api.constrains("date_planned") def check_date_planned(self): @@ -166,6 +179,7 @@ def check_date_planned(self): line.blanket_order_line and line.blanket_order_line.date_schedule and line.blanket_order_line.date_schedule != date_planned + and not line.env.context.get("assigned_from_creation", False) ): raise ValidationError( _( diff --git a/purchase_blanket_order/views/purchase_blanket_order_views.xml b/purchase_blanket_order/views/purchase_blanket_order_views.xml index b6f320dfaab..0a0cab1e124 100644 --- a/purchase_blanket_order/views/purchase_blanket_order_views.xml +++ b/purchase_blanket_order/views/purchase_blanket_order_views.xml @@ -16,6 +16,7 @@ + @@ -60,6 +61,7 @@ statusbar_visible="draft,open,expired" /> +