From b834f0302cc360ce408a248f5cc555e15f456256 Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Fri, 15 Jan 2021 15:18:44 +0100 Subject: [PATCH 01/17] [ADD] partner_pricelist_search: New module TT27659 --- partner_pricelist_search/README.rst | 86 ++++ partner_pricelist_search/__init__.py | 1 + partner_pricelist_search/__manifest__.py | 19 + partner_pricelist_search/i18n/es.po | 51 +++ .../i18n/partner_pricelist_search.pot | 44 ++ partner_pricelist_search/models/__init__.py | 2 + .../models/product_pricelist.py | 21 + .../models/res_partner.py | 33 ++ .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 4 + partner_pricelist_search/readme/ROADMAP.rst | 4 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 431 ++++++++++++++++++ partner_pricelist_search/tests/__init__.py | 1 + .../tests/test_partner_pricelist_search.py | 77 ++++ .../views/product_pricelist_views.xml | 14 + 16 files changed, 791 insertions(+) create mode 100644 partner_pricelist_search/README.rst create mode 100644 partner_pricelist_search/__init__.py create mode 100644 partner_pricelist_search/__manifest__.py create mode 100644 partner_pricelist_search/i18n/es.po create mode 100644 partner_pricelist_search/i18n/partner_pricelist_search.pot create mode 100644 partner_pricelist_search/models/__init__.py create mode 100644 partner_pricelist_search/models/product_pricelist.py create mode 100644 partner_pricelist_search/models/res_partner.py create mode 100644 partner_pricelist_search/readme/CONTRIBUTORS.rst create mode 100644 partner_pricelist_search/readme/DESCRIPTION.rst create mode 100644 partner_pricelist_search/readme/ROADMAP.rst create mode 100644 partner_pricelist_search/static/description/icon.png create mode 100644 partner_pricelist_search/static/description/index.html create mode 100644 partner_pricelist_search/tests/__init__.py create mode 100644 partner_pricelist_search/tests/test_partner_pricelist_search.py create mode 100644 partner_pricelist_search/views/product_pricelist_views.xml diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst new file mode 100644 index 000000000000..7a002b59bfc3 --- /dev/null +++ b/partner_pricelist_search/README.rst @@ -0,0 +1,86 @@ +======================== +Partner pricelist search +======================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fpartner--contact-lightgray.png?logo=github + :target: https://github.com/OCA/partner-contact/tree/12.0/partner_pricelist_search + :alt: OCA/partner-contact +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/partner-contact-12-0/partner-contact-12-0-partner_pricelist_search + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/134/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds search by pricelist field option in partners. + +Also add a new smart button called "Customers" in pricelist form view to show +partners with that pricelist. + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +With many partner records the search can be slow because all partners are +computed. + +No grouping is allowed. + +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 `_: + + * Carlos Dauden + +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/partner-contact `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__init__.py b/partner_pricelist_search/__init__.py new file mode 100644 index 000000000000..0650744f6bc6 --- /dev/null +++ b/partner_pricelist_search/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py new file mode 100644 index 000000000000..84efccb2cc26 --- /dev/null +++ b/partner_pricelist_search/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +{ + "name": "Partner pricelist search", + "version": "12.0.1.0.0", + "author": "Tecnativa," + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/partner-contact", + "category": "Partner Management", + "depends": [ + "product", + ], + "data": [ + "views/product_pricelist_views.xml", + ], + "installable": True, + "license": "AGPL-3", +} diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po new file mode 100644 index 000000000000..2daa17e34a84 --- /dev/null +++ b/partner_pricelist_search/i18n/es.po @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * partner_pricelist_search +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-01-15 14:06+0000\n" +"PO-Revision-Date: 2021-01-15 15:07+0100\n" +"Last-Translator: Carlos Dauden \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: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" + +#. module: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_res_partner +msgid "Contact" +msgstr "Contacto" + +#. module: partner_pricelist_search +#: model_terms:ir.ui.view,arch_db:partner_pricelist_search.product_pricelist_view +msgid "Customers" +msgstr "Clientes" + +#. module: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "Pricelist" +msgstr "Tarifa" + +#. module: partner_pricelist_search +#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#, python-format +msgid "Pricelist field do not support search with the operator '%s'." +msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." + +#. module: partner_pricelist_search +#: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "" +"This pricelist will be used, instead of the default one, for sales to the " +"current partner" +msgstr "" +"Esta tarifa se utilizará, en lugar de la por defecto, para las ventas de la " +"empresa actual" diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot new file mode 100644 index 000000000000..93250fc2546e --- /dev/null +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * partner_pricelist_search +# +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: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_res_partner +msgid "Contact" +msgstr "" + +#. module: partner_pricelist_search +#: model_terms:ir.ui.view,arch_db:partner_pricelist_search.product_pricelist_view +msgid "Customers" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "Pricelist" +msgstr "" + +#. module: partner_pricelist_search +#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#, python-format +msgid "Pricelist field do not support search with the operator '%s'." +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "This pricelist will be used, instead of the default one, for sales to the current partner" +msgstr "" + diff --git a/partner_pricelist_search/models/__init__.py b/partner_pricelist_search/models/__init__.py new file mode 100644 index 000000000000..978a9c748069 --- /dev/null +++ b/partner_pricelist_search/models/__init__.py @@ -0,0 +1,2 @@ +from . import product_pricelist +from . import res_partner diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py new file mode 100644 index 000000000000..35706dd88f38 --- /dev/null +++ b/partner_pricelist_search/models/product_pricelist.py @@ -0,0 +1,21 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +from odoo import models + + +class Pricelist(models.Model): + _inherit = "product.pricelist" + + def show_pricelist_partners(self): + if len(self) == 1: + domain = [("property_product_pricelist", "=", self.id)] + else: + domain = [("property_product_pricelist", "in", self.ids)] + partners = self.env["res.partner"].search(domain) + action = self.env.ref("base.action_partner_form") + res = action.read()[0] + res['domain'] = [ + ('id', 'in', partners.ids), + ] + return res diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py new file mode 100644 index 000000000000..6b1c8275674a --- /dev/null +++ b/partner_pricelist_search/models/res_partner.py @@ -0,0 +1,33 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class Pricelist(models.Model): + _inherit = "res.partner" + + property_product_pricelist = fields.Many2one( + search="_search_property_product_pricelist") + + @api.model + def _search_property_product_pricelist(self, operator, value): + if operator == "=": + def filter_func(partner): + return partner.property_product_pricelist.id == value + elif operator == "!=": + def filter_func(partner): + return partner.property_product_pricelist.id != value + elif operator == "in": + def filter_func(partner): + return partner.property_product_pricelist.id in value + elif operator == "not in": + def filter_func(partner): + return partner.property_product_pricelist.id not in value + else: + raise UserError(_( + "Pricelist field do not support search with the operator '%s'." + ) % operator) + partners = self.with_context(prefetch_fields=False).search([]) + return [("id", "in", partners.filtered(filter_func).ids)] diff --git a/partner_pricelist_search/readme/CONTRIBUTORS.rst b/partner_pricelist_search/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..af740da8f3ff --- /dev/null +++ b/partner_pricelist_search/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `_: + + * Carlos Dauden diff --git a/partner_pricelist_search/readme/DESCRIPTION.rst b/partner_pricelist_search/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..f8ad39831394 --- /dev/null +++ b/partner_pricelist_search/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This module adds search by pricelist field option in partners. + +Also add a new smart button called "Customers" in pricelist form view to show +partners with that pricelist. diff --git a/partner_pricelist_search/readme/ROADMAP.rst b/partner_pricelist_search/readme/ROADMAP.rst new file mode 100644 index 000000000000..2568d59b2a14 --- /dev/null +++ b/partner_pricelist_search/readme/ROADMAP.rst @@ -0,0 +1,4 @@ +With many partner records the search can be slow because all partners are +computed. + +No grouping is allowed. diff --git a/partner_pricelist_search/static/description/icon.png b/partner_pricelist_search/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/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html new file mode 100644 index 000000000000..13590990be19 --- /dev/null +++ b/partner_pricelist_search/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Partner pricelist search + + + + + + diff --git a/partner_pricelist_search/tests/__init__.py b/partner_pricelist_search/tests/__init__.py new file mode 100644 index 000000000000..06c448861fe3 --- /dev/null +++ b/partner_pricelist_search/tests/__init__.py @@ -0,0 +1 @@ +from . import test_partner_pricelist_search diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py new file mode 100644 index 000000000000..5d0eedbf07b7 --- /dev/null +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -0,0 +1,77 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +from odoo.exceptions import UserError +from odoo.tests import common + + +class TestPartnerPricelistSearch(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.pricelist_1 = cls.env["product.pricelist"].create({ + "name": "Test pricelist 1", + }) + cls.pricelist_2 = cls.env["product.pricelist"].create({ + "name": "Test pricelist 2", + }) + cls.customer_1 = cls.env["res.partner"].create({ + "name": "Test customer 1", + "property_product_pricelist": cls.pricelist_1, + }) + cls.customer_2 = cls.env["res.partner"].create({ + "name": "Test customer 2", + "property_product_pricelist": cls.pricelist_2, + }) + cls.partner_obj = cls.env["res.partner"] + + def test_partner_pricelist_search_equal(self): + """ Test search '=' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "=", + self.pricelist_1.id) + ]) + self.assertEqual(partners, self.customer_1) + + def test_partner_pricelist_search_in(self): + """ Test search 'in' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "in", + (self.pricelist_1 | self.pricelist_2).ids) + ]) + self.assertIn(self.customer_1, partners) + self.assertIn(self.customer_2, partners) + + def test_partner_pricelist_search_not_equal(self): + """ Test search 'not equal' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "!=", + self.pricelist_1.id) + ]) + self.assertNotIn(self.customer_1, partners) + self.assertIn(self.customer_2, partners) + + def test_partner_pricelist_search_not_in(self): + """ Test search 'not in' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "not in", + (self.pricelist_1 | self.pricelist_2).ids) + ]) + self.assertNotIn(self.customer_1, partners) + self.assertNotIn(self.customer_2, partners) + + def test_partner_pricelist_search_not_implemented(self): + """ Test search not implemented """ + with self.assertRaises(UserError): + self.partner_obj.search([ + ("property_product_pricelist", "ilike", + "pricelist xx") + ]) + + def test_show_pricelist_partners(self): + res = self.pricelist_1.show_pricelist_partners() + self.assertEqual(self.partner_obj.search(res["domain"]), + self.customer_1) + res = (self.pricelist_1 | self.pricelist_2).show_pricelist_partners() + self.assertEqual(self.partner_obj.search(res["domain"]), + (self.customer_1 | self.customer_2)) diff --git a/partner_pricelist_search/views/product_pricelist_views.xml b/partner_pricelist_search/views/product_pricelist_views.xml new file mode 100644 index 000000000000..8c5e95038cd4 --- /dev/null +++ b/partner_pricelist_search/views/product_pricelist_views.xml @@ -0,0 +1,14 @@ + + + + product.pricelist + + + + + + From 11f9700c9a3aca50b91e4ef687595ade60fd7b13 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 3 Mar 2021 22:51:10 +0100 Subject: [PATCH 02/17] [IMP] partner_pricelist_search: black, isort, prettier --- partner_pricelist_search/__manifest__.py | 11 +-- .../models/product_pricelist.py | 4 +- .../models/res_partner.py | 18 ++++- .../tests/test_partner_pricelist_search.py | 81 ++++++++++--------- .../views/product_pricelist_views.xml | 14 ++-- 5 files changed, 71 insertions(+), 57 deletions(-) diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index 84efccb2cc26..3447fdae5a0a 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -4,16 +4,11 @@ { "name": "Partner pricelist search", "version": "12.0.1.0.0", - "author": "Tecnativa," - "Odoo Community Association (OCA)", + "author": "Tecnativa," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", - "depends": [ - "product", - ], - "data": [ - "views/product_pricelist_views.xml", - ], + "depends": ["product",], + "data": ["views/product_pricelist_views.xml",], "installable": True, "license": "AGPL-3", } diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py index 35706dd88f38..ed2ea12c6e1d 100644 --- a/partner_pricelist_search/models/product_pricelist.py +++ b/partner_pricelist_search/models/product_pricelist.py @@ -15,7 +15,7 @@ def show_pricelist_partners(self): partners = self.env["res.partner"].search(domain) action = self.env.ref("base.action_partner_form") res = action.read()[0] - res['domain'] = [ - ('id', 'in', partners.ids), + res["domain"] = [ + ("id", "in", partners.ids), ] return res diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index 6b1c8275674a..aa5066030092 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -9,25 +9,35 @@ class Pricelist(models.Model): _inherit = "res.partner" property_product_pricelist = fields.Many2one( - search="_search_property_product_pricelist") + search="_search_property_product_pricelist" + ) @api.model def _search_property_product_pricelist(self, operator, value): if operator == "=": + def filter_func(partner): return partner.property_product_pricelist.id == value + elif operator == "!=": + def filter_func(partner): return partner.property_product_pricelist.id != value + elif operator == "in": + def filter_func(partner): return partner.property_product_pricelist.id in value + elif operator == "not in": + def filter_func(partner): return partner.property_product_pricelist.id not in value + else: - raise UserError(_( - "Pricelist field do not support search with the operator '%s'." - ) % operator) + raise UserError( + _("Pricelist field do not support search with the operator '%s'.") + % operator + ) partners = self.with_context(prefetch_fields=False).search([]) return [("id", "in", partners.filtered(filter_func).ids)] diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index 5d0eedbf07b7..435f96ff92b5 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -9,69 +9,74 @@ class TestPartnerPricelistSearch(common.SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.pricelist_1 = cls.env["product.pricelist"].create({ - "name": "Test pricelist 1", - }) - cls.pricelist_2 = cls.env["product.pricelist"].create({ - "name": "Test pricelist 2", - }) - cls.customer_1 = cls.env["res.partner"].create({ - "name": "Test customer 1", - "property_product_pricelist": cls.pricelist_1, - }) - cls.customer_2 = cls.env["res.partner"].create({ - "name": "Test customer 2", - "property_product_pricelist": cls.pricelist_2, - }) + cls.pricelist_1 = cls.env["product.pricelist"].create( + {"name": "Test pricelist 1",} + ) + cls.pricelist_2 = cls.env["product.pricelist"].create( + {"name": "Test pricelist 2",} + ) + cls.customer_1 = cls.env["res.partner"].create( + {"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1,} + ) + cls.customer_2 = cls.env["res.partner"].create( + {"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2,} + ) cls.partner_obj = cls.env["res.partner"] def test_partner_pricelist_search_equal(self): """ Test search '=' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "=", - self.pricelist_1.id) - ]) + partners = self.partner_obj.search( + [("property_product_pricelist", "=", self.pricelist_1.id)] + ) self.assertEqual(partners, self.customer_1) def test_partner_pricelist_search_in(self): """ Test search 'in' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "in", - (self.pricelist_1 | self.pricelist_2).ids) - ]) + partners = self.partner_obj.search( + [ + ( + "property_product_pricelist", + "in", + (self.pricelist_1 | self.pricelist_2).ids, + ) + ] + ) self.assertIn(self.customer_1, partners) self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_equal(self): """ Test search 'not equal' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "!=", - self.pricelist_1.id) - ]) + partners = self.partner_obj.search( + [("property_product_pricelist", "!=", self.pricelist_1.id)] + ) self.assertNotIn(self.customer_1, partners) self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_in(self): """ Test search 'not in' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "not in", - (self.pricelist_1 | self.pricelist_2).ids) - ]) + partners = self.partner_obj.search( + [ + ( + "property_product_pricelist", + "not in", + (self.pricelist_1 | self.pricelist_2).ids, + ) + ] + ) self.assertNotIn(self.customer_1, partners) self.assertNotIn(self.customer_2, partners) def test_partner_pricelist_search_not_implemented(self): """ Test search not implemented """ with self.assertRaises(UserError): - self.partner_obj.search([ - ("property_product_pricelist", "ilike", - "pricelist xx") - ]) + self.partner_obj.search( + [("property_product_pricelist", "ilike", "pricelist xx")] + ) def test_show_pricelist_partners(self): res = self.pricelist_1.show_pricelist_partners() - self.assertEqual(self.partner_obj.search(res["domain"]), - self.customer_1) + self.assertEqual(self.partner_obj.search(res["domain"]), self.customer_1) res = (self.pricelist_1 | self.pricelist_2).show_pricelist_partners() - self.assertEqual(self.partner_obj.search(res["domain"]), - (self.customer_1 | self.customer_2)) + self.assertEqual( + self.partner_obj.search(res["domain"]), (self.customer_1 | self.customer_2) + ) diff --git a/partner_pricelist_search/views/product_pricelist_views.xml b/partner_pricelist_search/views/product_pricelist_views.xml index 8c5e95038cd4..0bf277111b95 100644 --- a/partner_pricelist_search/views/product_pricelist_views.xml +++ b/partner_pricelist_search/views/product_pricelist_views.xml @@ -1,13 +1,17 @@ - + product.pricelist - + From 53e37cdee36c93d9bb5859585d57d6910cc21a62 Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Wed, 24 Feb 2021 13:52:54 +0100 Subject: [PATCH 03/17] [MIG] partner_pricelist_search: Migration to v13.0 TT28442 --- partner_pricelist_search/README.rst | 10 +++++----- partner_pricelist_search/__manifest__.py | 8 ++++---- .../i18n/partner_pricelist_search.pot | 13 ++++++------ .../static/description/index.html | 6 +++--- .../tests/test_partner_pricelist_search.py | 8 ++++---- .../views/product_pricelist_views.xml | 20 ++++++++++--------- 6 files changed, 34 insertions(+), 31 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index 7a002b59bfc3..ed332bf000e3 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -14,13 +14,13 @@ Partner pricelist search :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github - :target: https://github.com/OCA/partner-contact/tree/12.0/partner_pricelist_search + :target: https://github.com/OCA/partner-contact/tree/13.0/partner_pricelist_search :alt: OCA/partner-contact .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/partner-contact-12-0/partner-contact-12-0-partner_pricelist_search + :target: https://translation.odoo-community.org/projects/partner-contact-13-0/partner-contact-13-0-partner_pricelist_search :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/12.0 + :target: https://runbot.odoo-community.org/runbot/134/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,7 +49,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. @@ -81,6 +81,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/partner-contact `_ project on GitHub. +This module is part of the `OCA/partner-contact `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index 3447fdae5a0a..9dfd9553ee9b 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,12 +3,12 @@ { "name": "Partner pricelist search", - "version": "12.0.1.0.0", - "author": "Tecnativa," "Odoo Community Association (OCA)", + "version": "13.0.1.0.0", + "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", - "depends": ["product",], - "data": ["views/product_pricelist_views.xml",], + "depends": ["product"], + "data": ["views/product_pricelist_views.xml"], "installable": True, "license": "AGPL-3", } diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 93250fc2546e..2431efb69418 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * partner_pricelist_search +# * partner_pricelist_search # 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" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,7 +31,7 @@ msgid "Pricelist" msgstr "" #. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#: code:addons/partner_pricelist_search/models/res_partner.py:0 #, python-format msgid "Pricelist field do not support search with the operator '%s'." msgstr "" @@ -39,6 +39,7 @@ msgstr "" #. module: partner_pricelist_search #: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist #: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist -msgid "This pricelist will be used, instead of the default one, for sales to the current partner" +msgid "" +"This pricelist will be used, instead of the default one, for sales to the " +"current partner" msgstr "" - diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index 13590990be19..1744bb361e8d 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -367,7 +367,7 @@

Partner pricelist search

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

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

+

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

This module adds search by pricelist field option in partners.

Also add a new smart button called “Customers” in pricelist form view to show partners with that pricelist.

@@ -395,7 +395,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

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/partner-contact project on GitHub.

+

This module is part of the OCA/partner-contact project on GitHub.

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

diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index 435f96ff92b5..d33287d817c3 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -10,16 +10,16 @@ class TestPartnerPricelistSearch(common.SavepointCase): def setUpClass(cls): super().setUpClass() cls.pricelist_1 = cls.env["product.pricelist"].create( - {"name": "Test pricelist 1",} + {"name": "Test pricelist 1"} ) cls.pricelist_2 = cls.env["product.pricelist"].create( - {"name": "Test pricelist 2",} + {"name": "Test pricelist 2"} ) cls.customer_1 = cls.env["res.partner"].create( - {"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1,} + {"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1} ) cls.customer_2 = cls.env["res.partner"].create( - {"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2,} + {"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2} ) cls.partner_obj = cls.env["res.partner"] diff --git a/partner_pricelist_search/views/product_pricelist_views.xml b/partner_pricelist_search/views/product_pricelist_views.xml index 0bf277111b95..09e7c9dedeee 100644 --- a/partner_pricelist_search/views/product_pricelist_views.xml +++ b/partner_pricelist_search/views/product_pricelist_views.xml @@ -4,15 +4,17 @@ product.pricelist - + +
+
+
From 448c092f20c0c1b2e8e22e6353b328eae034199d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 23 Sep 2021 17:33:11 +0200 Subject: [PATCH 04/17] [MIG] partner_pricelist_search: Migration to 14.0 [UPD] Update partner_pricelist_search.pot [UPD] README.rst Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: partner-contact-14.0/partner-contact-14.0-partner_pricelist_search Translate-URL: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search/ --- partner_pricelist_search/README.rst | 11 +++++----- partner_pricelist_search/__manifest__.py | 2 +- partner_pricelist_search/i18n/es.po | 20 ++++++++++++++++++- .../i18n/partner_pricelist_search.pot | 20 ++++++++++++++++++- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 7 ++++--- 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index ed332bf000e3..c4985710ca44 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -14,13 +14,13 @@ Partner pricelist search :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github - :target: https://github.com/OCA/partner-contact/tree/13.0/partner_pricelist_search + :target: https://github.com/OCA/partner-contact/tree/14.0/partner_pricelist_search :alt: OCA/partner-contact .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/partner-contact-13-0/partner-contact-13-0-partner_pricelist_search + :target: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/13.0 + :target: https://runbot.odoo-community.org/runbot/134/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,7 +49,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. @@ -67,6 +67,7 @@ Contributors * `Tecnativa `_: * Carlos Dauden + * Víctor Martínez Maintainers ~~~~~~~~~~~ @@ -81,6 +82,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/partner-contact `_ project on GitHub. +This module is part of the `OCA/partner-contact `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index 9dfd9553ee9b..b9f16ecb271a 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po index 2daa17e34a84..ef44fbd70ee5 100644 --- a/partner_pricelist_search/i18n/es.po +++ b/partner_pricelist_search/i18n/es.po @@ -27,6 +27,24 @@ msgstr "Contacto" msgid "Customers" msgstr "Clientes" +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__display_name +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__display_name +msgid "Display Name" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__id +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__id +msgid "ID" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist____last_update +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner____last_update +msgid "Last Modified on" +msgstr "" + #. module: partner_pricelist_search #: model:ir.model,name:partner_pricelist_search.model_product_pricelist #: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist @@ -35,7 +53,7 @@ msgid "Pricelist" msgstr "Tarifa" #. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#: code:addons/partner_pricelist_search/models/res_partner.py:0 #, python-format msgid "Pricelist field do not support search with the operator '%s'." msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 2431efb69418..3549ea12954f 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -23,6 +23,24 @@ msgstr "" msgid "Customers" msgstr "" +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__display_name +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__display_name +msgid "Display Name" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__id +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__id +msgid "ID" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist____last_update +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner____last_update +msgid "Last Modified on" +msgstr "" + #. module: partner_pricelist_search #: model:ir.model,name:partner_pricelist_search.model_product_pricelist #: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist diff --git a/partner_pricelist_search/readme/CONTRIBUTORS.rst b/partner_pricelist_search/readme/CONTRIBUTORS.rst index af740da8f3ff..0bd598fcf7d9 100644 --- a/partner_pricelist_search/readme/CONTRIBUTORS.rst +++ b/partner_pricelist_search/readme/CONTRIBUTORS.rst @@ -1,3 +1,4 @@ * `Tecnativa `_: * Carlos Dauden + * Víctor Martínez diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index 1744bb361e8d..c6198f876ad7 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -367,7 +367,7 @@

Partner pricelist search

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

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

+

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

This module adds search by pricelist field option in partners.

Also add a new smart button called “Customers” in pricelist form view to show partners with that pricelist.

@@ -395,7 +395,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.

@@ -411,6 +411,7 @@

Contributors

  • Tecnativa:
    • Carlos Dauden
    • +
    • Víctor Martínez
@@ -422,7 +423,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/partner-contact project on GitHub.

+

This module is part of the OCA/partner-contact project on GitHub.

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

From a1941e9143d0274de744bff8dc59dec7b64e0523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Alix?= Date: Mon, 31 Jan 2022 10:43:42 +0100 Subject: [PATCH 05/17] [FIX] Fix access right issues when using actions partner_pricelist_search 14.0.1.0.1 [IMP] update dotfiles [ci skip] --- partner_pricelist_search/__manifest__.py | 2 +- partner_pricelist_search/models/product_pricelist.py | 8 ++++---- .../tests/test_partner_pricelist_search.py | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index b9f16ecb271a..c5e96a854b33 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py index ed2ea12c6e1d..dbb2f267dfca 100644 --- a/partner_pricelist_search/models/product_pricelist.py +++ b/partner_pricelist_search/models/product_pricelist.py @@ -13,9 +13,9 @@ def show_pricelist_partners(self): else: domain = [("property_product_pricelist", "in", self.ids)] partners = self.env["res.partner"].search(domain) - action = self.env.ref("base.action_partner_form") - res = action.read()[0] - res["domain"] = [ + xmlid = "base.action_partner_form" + action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) + action["domain"] = [ ("id", "in", partners.ids), ] - return res + return action diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index d33287d817c3..ac7b95a557e0 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -24,14 +24,14 @@ def setUpClass(cls): cls.partner_obj = cls.env["res.partner"] def test_partner_pricelist_search_equal(self): - """ Test search '=' """ + """Test search '='""" partners = self.partner_obj.search( [("property_product_pricelist", "=", self.pricelist_1.id)] ) self.assertEqual(partners, self.customer_1) def test_partner_pricelist_search_in(self): - """ Test search 'in' """ + """Test search 'in'""" partners = self.partner_obj.search( [ ( @@ -45,7 +45,7 @@ def test_partner_pricelist_search_in(self): self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_equal(self): - """ Test search 'not equal' """ + """Test search 'not equal'""" partners = self.partner_obj.search( [("property_product_pricelist", "!=", self.pricelist_1.id)] ) @@ -53,7 +53,7 @@ def test_partner_pricelist_search_not_equal(self): self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_in(self): - """ Test search 'not in' """ + """Test search 'not in'""" partners = self.partner_obj.search( [ ( @@ -67,7 +67,7 @@ def test_partner_pricelist_search_not_in(self): self.assertNotIn(self.customer_2, partners) def test_partner_pricelist_search_not_implemented(self): - """ Test search not implemented """ + """Test search not implemented""" with self.assertRaises(UserError): self.partner_obj.search( [("property_product_pricelist", "ilike", "pricelist xx")] From 9e2887751f35ef78de9328f7ce1d3fba30a5b644 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 3 Oct 2022 08:53:20 +0200 Subject: [PATCH 06/17] [FIX] partner_pricelist_search: speedup search TT39742 --- .../models/res_partner.py | 53 +++++++++---------- .../tests/test_partner_pricelist_search.py | 14 ++--- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index aa5066030092..713421fbe93a 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -1,8 +1,7 @@ # Copyright 2021 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import _, api, fields, models -from odoo.exceptions import UserError +from odoo import api, fields, models class Pricelist(models.Model): @@ -13,31 +12,27 @@ class Pricelist(models.Model): ) @api.model - def _search_property_product_pricelist(self, operator, value): - if operator == "=": - - def filter_func(partner): - return partner.property_product_pricelist.id == value - - elif operator == "!=": - - def filter_func(partner): - return partner.property_product_pricelist.id != value - - elif operator == "in": + def search(self, args, offset=0, limit=None, order=None, count=False): + # Substitute pricelist tuple + partner_domain = [ + (1, "=", 1) + if (isinstance(x, tuple) and x[0] == "property_product_pricelist") + else x + for x in args + ] + return super( + Pricelist, self.with_context(search_partner_domain=partner_domain) + ).search( + args, + offset=offset, + limit=limit, + order=order, + count=count, + ) - def filter_func(partner): - return partner.property_product_pricelist.id in value - - elif operator == "not in": - - def filter_func(partner): - return partner.property_product_pricelist.id not in value - - else: - raise UserError( - _("Pricelist field do not support search with the operator '%s'.") - % operator - ) - partners = self.with_context(prefetch_fields=False).search([]) - return [("id", "in", partners.filtered(filter_func).ids)] + @api.model + def _search_property_product_pricelist(self, operator, value): + domain = self.env.context.get("search_partner_domain", []) + partners = self.with_context(prefetch_fields=False).search(domain) + key = "property_product_pricelist" + return [("id", "in", partners.filtered_domain([(key, operator, value)]).ids)] diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index ac7b95a557e0..051ae10c44a2 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -1,7 +1,6 @@ # Copyright 2021 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) -from odoo.exceptions import UserError from odoo.tests import common @@ -66,12 +65,13 @@ def test_partner_pricelist_search_not_in(self): self.assertNotIn(self.customer_1, partners) self.assertNotIn(self.customer_2, partners) - def test_partner_pricelist_search_not_implemented(self): - """Test search not implemented""" - with self.assertRaises(UserError): - self.partner_obj.search( - [("property_product_pricelist", "ilike", "pricelist xx")] - ) + def test_partner_pricelist_search_ilike(self): + """Test search 'ilike'""" + partners = self.partner_obj.search( + [("property_product_pricelist", "ilike", "Test pricelist 1")] + ) + self.assertIn(self.customer_1, partners) + self.assertNotIn(self.customer_2, partners) def test_show_pricelist_partners(self): res = self.pricelist_1.show_pricelist_partners() From 6480f90fcad3b16813c11178f73579d1b1a082d5 Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Fri, 14 Oct 2022 10:27:00 +0200 Subject: [PATCH 07/17] [FIX] partner_pricelist_search: Remove list type also from search arguments [UPD] Update partner_pricelist_search.pot partner_pricelist_search 14.0.1.0.2 --- partner_pricelist_search/__manifest__.py | 2 +- .../i18n/partner_pricelist_search.pot | 6 ------ partner_pricelist_search/models/res_partner.py | 8 ++++---- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index c5e96a854b33..b5e191a3b1d4 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "14.0.1.0.1", + "version": "14.0.1.0.2", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 3549ea12954f..10fa093ef4aa 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -48,12 +48,6 @@ msgstr "" msgid "Pricelist" msgstr "" -#. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:0 -#, python-format -msgid "Pricelist field do not support search with the operator '%s'." -msgstr "" - #. module: partner_pricelist_search #: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist #: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index 713421fbe93a..2c383010290e 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -1,10 +1,10 @@ # Copyright 2021 Tecnativa - Carlos Dauden -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import api, fields, models -class Pricelist(models.Model): +class ResPartner(models.Model): _inherit = "res.partner" property_product_pricelist = fields.Many2one( @@ -16,12 +16,12 @@ def search(self, args, offset=0, limit=None, order=None, count=False): # Substitute pricelist tuple partner_domain = [ (1, "=", 1) - if (isinstance(x, tuple) and x[0] == "property_product_pricelist") + if (isinstance(x, (list, tuple)) and x[0] == "property_product_pricelist") else x for x in args ] return super( - Pricelist, self.with_context(search_partner_domain=partner_domain) + ResPartner, self.with_context(search_partner_domain=partner_domain) ).search( args, offset=offset, From ad204ea164ad5f565b3ec0fbed12d64f352f6919 Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 17 Oct 2022 10:11:47 +0000 Subject: [PATCH 08/17] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: partner-contact-14.0/partner-contact-14.0-partner_pricelist_search Translate-URL: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search/ --- partner_pricelist_search/i18n/es.po | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po index ef44fbd70ee5..6f736449aa5c 100644 --- a/partner_pricelist_search/i18n/es.po +++ b/partner_pricelist_search/i18n/es.po @@ -52,12 +52,6 @@ msgstr "" msgid "Pricelist" msgstr "Tarifa" -#. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:0 -#, python-format -msgid "Pricelist field do not support search with the operator '%s'." -msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." - #. module: partner_pricelist_search #: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist #: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist @@ -67,3 +61,7 @@ msgid "" msgstr "" "Esta tarifa se utilizará, en lugar de la por defecto, para las ventas de la " "empresa actual" + +#, python-format +#~ msgid "Pricelist field do not support search with the operator '%s'." +#~ msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." From f15305b242346e90f0697b7f486d3c9f1f051e58 Mon Sep 17 00:00:00 2001 From: Vince Lieckens Date: Fri, 15 Apr 2022 09:33:58 +0200 Subject: [PATCH 09/17] [MIG] partner_pricelist_search: Migration to 15.0 TT37297 --- partner_pricelist_search/README.rst | 10 +++++----- partner_pricelist_search/__manifest__.py | 2 +- partner_pricelist_search/i18n/es.po | 4 ---- .../i18n/partner_pricelist_search.pot | 20 +------------------ .../models/product_pricelist.py | 9 +-------- .../models/res_partner.py | 2 +- .../static/description/index.html | 6 +++--- .../tests/test_partner_pricelist_search.py | 3 ++- 8 files changed, 14 insertions(+), 42 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index c4985710ca44..f7cf3c2a36cf 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -14,13 +14,13 @@ Partner pricelist search :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github - :target: https://github.com/OCA/partner-contact/tree/14.0/partner_pricelist_search + :target: https://github.com/OCA/partner-contact/tree/15.0/partner_pricelist_search :alt: OCA/partner-contact .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search + :target: https://translation.odoo-community.org/projects/partner-contact-15-0/partner-contact-15-0-partner_pricelist_search :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/14.0 + :target: https://runbot.odoo-community.org/runbot/134/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,7 +49,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. @@ -82,6 +82,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/partner-contact `_ project on GitHub. +This module is part of the `OCA/partner-contact `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index b5e191a3b1d4..da2e23e6c285 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "14.0.1.0.2", + "version": "15.0.1.0.0", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po index 6f736449aa5c..83c0ce259eae 100644 --- a/partner_pricelist_search/i18n/es.po +++ b/partner_pricelist_search/i18n/es.po @@ -61,7 +61,3 @@ msgid "" msgstr "" "Esta tarifa se utilizará, en lugar de la por defecto, para las ventas de la " "empresa actual" - -#, python-format -#~ msgid "Pricelist field do not support search with the operator '%s'." -#~ msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 10fa093ef4aa..96b4570532ff 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -23,24 +23,6 @@ msgstr "" msgid "Customers" msgstr "" -#. module: partner_pricelist_search -#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__display_name -#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__display_name -msgid "Display Name" -msgstr "" - -#. module: partner_pricelist_search -#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__id -#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__id -msgid "ID" -msgstr "" - -#. module: partner_pricelist_search -#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist____last_update -#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner____last_update -msgid "Last Modified on" -msgstr "" - #. module: partner_pricelist_search #: model:ir.model,name:partner_pricelist_search.model_product_pricelist #: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py index dbb2f267dfca..d0fbde9ff4f1 100644 --- a/partner_pricelist_search/models/product_pricelist.py +++ b/partner_pricelist_search/models/product_pricelist.py @@ -8,14 +8,7 @@ class Pricelist(models.Model): _inherit = "product.pricelist" def show_pricelist_partners(self): - if len(self) == 1: - domain = [("property_product_pricelist", "=", self.id)] - else: - domain = [("property_product_pricelist", "in", self.ids)] - partners = self.env["res.partner"].search(domain) xmlid = "base.action_partner_form" action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) - action["domain"] = [ - ("id", "in", partners.ids), - ] + action["domain"] = [("property_product_pricelist", "in", self.ids)] return action diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index 2c383010290e..052f66a65cb6 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -1,5 +1,5 @@ # Copyright 2021 Tecnativa - Carlos Dauden -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index c6198f876ad7..f82b4b409c73 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -367,7 +367,7 @@

Partner pricelist search

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

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

+

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

This module adds search by pricelist field option in partners.

Also add a new smart button called “Customers” in pricelist form view to show partners with that pricelist.

@@ -395,7 +395,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.

@@ -423,7 +423,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/partner-contact project on GitHub.

+

This module is part of the OCA/partner-contact project on GitHub.

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

diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index 051ae10c44a2..7762fa52e352 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -1,10 +1,11 @@ # Copyright 2021 Tecnativa - Carlos Dauden +# Copyright 2022 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) from odoo.tests import common -class TestPartnerPricelistSearch(common.SavepointCase): +class TestPartnerPricelistSearch(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() From 09a8527e7feb748972d5604854e25a94c95be205 Mon Sep 17 00:00:00 2001 From: "A. Hochuli" Date: Wed, 3 May 2023 19:17:43 +0200 Subject: [PATCH 10/17] [MIG] partner_pricelist_search: Migration to 16.0 --- partner_pricelist_search/README.rst | 10 +++++----- partner_pricelist_search/__manifest__.py | 2 +- .../i18n/partner_pricelist_search.pot | 2 +- partner_pricelist_search/static/description/index.html | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index f7cf3c2a36cf..ee3dffeecfc7 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -14,13 +14,13 @@ Partner pricelist search :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github - :target: https://github.com/OCA/partner-contact/tree/15.0/partner_pricelist_search + :target: https://github.com/OCA/partner-contact/tree/16.0/partner_pricelist_search :alt: OCA/partner-contact .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/partner-contact-15-0/partner-contact-15-0-partner_pricelist_search + :target: https://translation.odoo-community.org/projects/partner-contact-16-0/partner-contact-16-0-partner_pricelist_search :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/15.0 + :target: https://runbot.odoo-community.org/runbot/134/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,7 +49,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. @@ -82,6 +82,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/partner-contact `_ project on GitHub. +This module is part of the `OCA/partner-contact `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index da2e23e6c285..226dd6551423 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 96b4570532ff..f52d0c2cf1be 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index f82b4b409c73..5a3b9c7fe325 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -367,7 +367,7 @@

Partner pricelist search

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

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

+

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

This module adds search by pricelist field option in partners.

Also add a new smart button called “Customers” in pricelist form view to show partners with that pricelist.

@@ -395,7 +395,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.

@@ -423,7 +423,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/partner-contact project on GitHub.

+

This module is part of the OCA/partner-contact project on GitHub.

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

From 78aab2ed16abb9d2ad530a7a062d5bfa82b573bf Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 15 Jun 2023 11:13:31 +0000 Subject: [PATCH 11/17] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: partner-contact-16.0/partner-contact-16.0-partner_pricelist_search Translate-URL: https://translation.odoo-community.org/projects/partner-contact-16-0/partner-contact-16-0-partner_pricelist_search/ --- partner_pricelist_search/README.rst | 15 +++++--- partner_pricelist_search/i18n/es.po | 18 --------- .../static/description/index.html | 38 ++++++++++--------- 3 files changed, 29 insertions(+), 42 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index ee3dffeecfc7..0199ee415649 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -2,10 +2,13 @@ Partner pricelist search ======================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e888211f2ee3a4ccb2f5e86b11bed3aa3f19159f9c2188933d743ee5337d26fd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Partner pricelist search .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/partner-contact-16-0/partner-contact-16-0-partner_pricelist_search :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/16.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/partner-contact&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds search by pricelist field option in partners. @@ -48,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 +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/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po index 83c0ce259eae..f7501b60bc94 100644 --- a/partner_pricelist_search/i18n/es.po +++ b/partner_pricelist_search/i18n/es.po @@ -27,24 +27,6 @@ msgstr "Contacto" msgid "Customers" msgstr "Clientes" -#. module: partner_pricelist_search -#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__display_name -#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__display_name -msgid "Display Name" -msgstr "" - -#. module: partner_pricelist_search -#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__id -#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__id -msgid "ID" -msgstr "" - -#. module: partner_pricelist_search -#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist____last_update -#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner____last_update -msgid "Last Modified on" -msgstr "" - #. module: partner_pricelist_search #: model:ir.model,name:partner_pricelist_search.model_product_pricelist #: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index 5a3b9c7fe325..dc78264e01a8 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -1,20 +1,20 @@ - + - + Partner pricelist search