From bad368a1db09e3c0d77140525da120bafd8482c4 Mon Sep 17 00:00:00 2001 From: Carolina Fernandez Date: Thu, 30 May 2024 17:15:54 +0200 Subject: [PATCH 1/7] [16.0][ADD] product_supplierinfo_purchase_contact: Add Purchase contact in product supplier info [UPD] Update product_supplierinfo_purchase_contact.pot [BOT] post-merge updates Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: purchase-workflow-16.0/purchase-workflow-16.0-product_supplierinfo_purchase_contact Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-product_supplierinfo_purchase_contact/ --- .../README.rst | 87 ++++ .../__init__.py | 1 + .../__manifest__.py | 18 + .../i18n/es.po | 32 ++ .../product_supplierinfo_purchase_contact.pot | 29 ++ .../models/__init__.py | 2 + .../models/product_supplierinfo.py | 11 + .../models/stock_rule.py | 19 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 2 + .../readme/USAGE.rst | 3 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 437 ++++++++++++++++++ .../tests/__init__.py | 1 + .../tests/test_stock_rule.py | 94 ++++ .../views/product_supplierinfo_view.xml | 27 ++ 16 files changed, 767 insertions(+) create mode 100644 product_supplierinfo_purchase_contact/README.rst create mode 100644 product_supplierinfo_purchase_contact/__init__.py create mode 100644 product_supplierinfo_purchase_contact/__manifest__.py create mode 100644 product_supplierinfo_purchase_contact/i18n/es.po create mode 100644 product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot create mode 100644 product_supplierinfo_purchase_contact/models/__init__.py create mode 100644 product_supplierinfo_purchase_contact/models/product_supplierinfo.py create mode 100644 product_supplierinfo_purchase_contact/models/stock_rule.py create mode 100644 product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst create mode 100644 product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst create mode 100644 product_supplierinfo_purchase_contact/readme/USAGE.rst create mode 100644 product_supplierinfo_purchase_contact/static/description/icon.png create mode 100644 product_supplierinfo_purchase_contact/static/description/index.html create mode 100644 product_supplierinfo_purchase_contact/tests/__init__.py create mode 100644 product_supplierinfo_purchase_contact/tests/test_stock_rule.py create mode 100644 product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml diff --git a/product_supplierinfo_purchase_contact/README.rst b/product_supplierinfo_purchase_contact/README.rst new file mode 100644 index 00000000000..820b509dbcd --- /dev/null +++ b/product_supplierinfo_purchase_contact/README.rst @@ -0,0 +1,87 @@ +================================= +Product Supplier Purchase Contact +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d1598d26a4766084ce5484761197815fadc9fbd2f45764a9dfdc3ef360c3df6b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/16.0/product_supplierinfo_purchase_contact + :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-16-0/purchase-workflow-16-0-product_supplierinfo_purchase_contact + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds Purchase contact field on supplier rates (product.supplierinfo) +and allows you to use this contact when creating the purchase order from supplies (replacement or to order). + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +* Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact. +* Go to Inventory > Operations > Replenishment and create a new replenishment for product with Vendor pricelist created before. +* Press button "Order once" and will create a new purchase order for Purchase contact instead of Vendor from Vendor Pricelist. + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Carolina Fernandez + * 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. + +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/product_supplierinfo_purchase_contact/__init__.py b/product_supplierinfo_purchase_contact/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/product_supplierinfo_purchase_contact/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_supplierinfo_purchase_contact/__manifest__.py b/product_supplierinfo_purchase_contact/__manifest__.py new file mode 100644 index 00000000000..c186b76f3b7 --- /dev/null +++ b/product_supplierinfo_purchase_contact/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Product Supplier Purchase Contact", + "version": "16.0.1.0.0", + "category": "Purchase Management", + "author": "Tecnativa,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/purchase-workflow", + "license": "AGPL-3", + "summary": "Add Purchase Contact in product supplier info", + "depends": [ + "purchase_stock", + ], + "data": [ + "views/product_supplierinfo_view.xml", + ], + "installable": True, +} diff --git a/product_supplierinfo_purchase_contact/i18n/es.po b/product_supplierinfo_purchase_contact/i18n/es.po new file mode 100644 index 00000000000..bf2e068882c --- /dev/null +++ b/product_supplierinfo_purchase_contact/i18n/es.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_supplierinfo_purchase_contact +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-21 14:32+0000\n" +"PO-Revision-Date: 2024-05-21 14:32+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_supplierinfo_purchase_contact +#: model:ir.model.fields,field_description:product_supplierinfo_purchase_contact.field_product_supplierinfo__purchase_partner_id +msgid "Purchase contact" +msgstr "Contacto de compra" + +#. module: product_supplierinfo_purchase_contact +#: model:ir.model,name:product_supplierinfo_purchase_contact.model_stock_rule +msgid "Stock Rule" +msgstr "Regla de Inventario" + +#. module: product_supplierinfo_purchase_contact +#: model:ir.model,name:product_supplierinfo_purchase_contact.model_product_supplierinfo +msgid "Supplier Pricelist" +msgstr "Tarifa de proveedor" diff --git a/product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot b/product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot new file mode 100644 index 00000000000..4fbd6859f76 --- /dev/null +++ b/product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_supplierinfo_purchase_contact +# +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: product_supplierinfo_purchase_contact +#: model:ir.model.fields,field_description:product_supplierinfo_purchase_contact.field_product_supplierinfo__purchase_partner_id +msgid "Purchase contact" +msgstr "" + +#. module: product_supplierinfo_purchase_contact +#: model:ir.model,name:product_supplierinfo_purchase_contact.model_stock_rule +msgid "Stock Rule" +msgstr "" + +#. module: product_supplierinfo_purchase_contact +#: model:ir.model,name:product_supplierinfo_purchase_contact.model_product_supplierinfo +msgid "Supplier Pricelist" +msgstr "" diff --git a/product_supplierinfo_purchase_contact/models/__init__.py b/product_supplierinfo_purchase_contact/models/__init__.py new file mode 100644 index 00000000000..0fb42bc1623 --- /dev/null +++ b/product_supplierinfo_purchase_contact/models/__init__.py @@ -0,0 +1,2 @@ +from . import product_supplierinfo +from . import stock_rule diff --git a/product_supplierinfo_purchase_contact/models/product_supplierinfo.py b/product_supplierinfo_purchase_contact/models/product_supplierinfo.py new file mode 100644 index 00000000000..aa21cfdc554 --- /dev/null +++ b/product_supplierinfo_purchase_contact/models/product_supplierinfo.py @@ -0,0 +1,11 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class ProductSupplierInfo(models.Model): + _inherit = "product.supplierinfo" + + purchase_partner_id = fields.Many2one( + comodel_name="res.partner", string="Purchase contact" + ) diff --git a/product_supplierinfo_purchase_contact/models/stock_rule.py b/product_supplierinfo_purchase_contact/models/stock_rule.py new file mode 100644 index 00000000000..c940d12615f --- /dev/null +++ b/product_supplierinfo_purchase_contact/models/stock_rule.py @@ -0,0 +1,19 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import models + + +class StockRule(models.Model): + _inherit = "stock.rule" + + def _make_po_get_domain(self, company_id, values, partner): + if values.get("supplier") and values["supplier"].purchase_partner_id: + partner = values["supplier"].purchase_partner_id + return super()._make_po_get_domain(company_id, values, partner) + + def _prepare_purchase_order(self, company_id, origins, values): + res = super()._prepare_purchase_order(company_id, origins, values) + values = values[0] + if "supplier" in values and values["supplier"].purchase_partner_id: + res["partner_id"] = values["supplier"].purchase_partner_id.id + return res diff --git a/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst b/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..7d431b589ad --- /dev/null +++ b/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Carolina Fernandez + * Pedro M. Baeza diff --git a/product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst b/product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..bf8de8f3d6a --- /dev/null +++ b/product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module adds Purchase contact field on supplier rates (product.supplierinfo) +and allows you to use this contact when creating the purchase order from supplies (replacement or to order). diff --git a/product_supplierinfo_purchase_contact/readme/USAGE.rst b/product_supplierinfo_purchase_contact/readme/USAGE.rst new file mode 100644 index 00000000000..f150dfe2d45 --- /dev/null +++ b/product_supplierinfo_purchase_contact/readme/USAGE.rst @@ -0,0 +1,3 @@ +* Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact. +* Go to Inventory > Operations > Replenishment and create a new replenishment for product with Vendor pricelist created before. +* Press button "Order once" and will create a new purchase order for Purchase contact instead of Vendor from Vendor Pricelist. diff --git a/product_supplierinfo_purchase_contact/static/description/icon.png b/product_supplierinfo_purchase_contact/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/product_supplierinfo_purchase_contact/static/description/index.html b/product_supplierinfo_purchase_contact/static/description/index.html new file mode 100644 index 00000000000..6a281c8a7d3 --- /dev/null +++ b/product_supplierinfo_purchase_contact/static/description/index.html @@ -0,0 +1,437 @@ + + + + + +Product Supplier Purchase Contact + + + +
+

Product Supplier Purchase Contact

+ + +

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

+

This module adds Purchase contact field on supplier rates (product.supplierinfo) +and allows you to use this contact when creating the purchase order from supplies (replacement or to order).

+

Table of contents

+ +
+

Usage

+
    +
  • Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact.
  • +
  • Go to Inventory > Operations > Replenishment and create a new replenishment for product with Vendor pricelist created before.
  • +
  • Press button “Order once” and will create a new purchase order for Purchase contact instead of Vendor from Vendor Pricelist.
  • +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:

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

+

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/product_supplierinfo_purchase_contact/tests/__init__.py b/product_supplierinfo_purchase_contact/tests/__init__.py new file mode 100644 index 00000000000..892a4c70ec7 --- /dev/null +++ b/product_supplierinfo_purchase_contact/tests/__init__.py @@ -0,0 +1 @@ +from . import test_stock_rule diff --git a/product_supplierinfo_purchase_contact/tests/test_stock_rule.py b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py new file mode 100644 index 00000000000..72d8d55a508 --- /dev/null +++ b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py @@ -0,0 +1,94 @@ +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests import common + + +class TestStockRule(common.TransactionCase): + @classmethod + def setUpClass(cls): + super(TestStockRule, cls).setUpClass() + cls.supplierinfo_obj = cls.env["product.supplierinfo"] + cls.partner = cls.env["res.partner"].create( + { + "name": "Mr. Odoo", + } + ) + cls.partner2 = cls.env["res.partner"].create( + { + "name": "Mrs. Odoo 2", + } + ) + cls.product1 = cls.env["product.product"].create( + { + "name": "Test Product 1", + "purchase_method": "purchase", + } + ) + cls.product2 = cls.env["product.product"].create( + { + "name": "Test Product 2", + "purchase_method": "purchase", + } + ) + cls.supplierinfo = cls.supplierinfo_obj.create( + { + "partner_id": cls.partner2.id, + "purchase_partner_id": cls.partner.id, + "product_tmpl_id": cls.product1.product_tmpl_id.id, + "price": 100, + } + ) + cls.supplierinfo2 = cls.supplierinfo_obj.create( + { + "partner_id": cls.partner2.id, + "product_tmpl_id": cls.product2.product_tmpl_id.id, + "price": 50, + } + ) + cls.warehouse = cls.env["stock.warehouse"].search( + [("company_id", "=", cls.env.company.id)], limit=1 + ) + cls.stock_location_id = cls.warehouse.lot_stock_id.id + + def test_replenishment_with_vendor_purchase(self): + op = self.env["stock.warehouse.orderpoint"].create( + { + "name": self.product1.name, + "location_id": self.stock_location_id, + "product_id": self.product1.id, + "product_min_qty": 1, + "product_max_qty": 8, + "trigger": "manual", + } + ) + op.action_replenish() + purchase = self.env["purchase.order"].search( + [("partner_id", "=", self.partner.id)], order="id desc", limit=1 + ) + self.assertEqual(purchase.partner_id, self.supplierinfo.purchase_partner_id) + self.assertEqual(purchase.order_line.product_id, self.product1) + self.assertEqual(purchase.order_line.price_unit, self.supplierinfo.price) + self.assertEqual(purchase.order_line.product_qty, 8) + self.assertEqual(purchase.currency_id, self.supplierinfo.currency_id) + + def test_replenishment_without_vendor_purchase(self): + op = self.env["stock.warehouse.orderpoint"].create( + { + "name": self.product2.name, + "location_id": self.stock_location_id, + "product_id": self.product2.id, + "product_min_qty": 1, + "product_max_qty": 10, + "trigger": "manual", + } + ) + op.action_replenish() + purchase = self.env["purchase.order"].search( + [("partner_id", "=", self.partner2.id)], order="id desc", limit=1 + ) + self.assertEqual(purchase.partner_id, self.supplierinfo2.partner_id) + self.assertEqual(purchase.order_line.product_id, self.product2) + self.assertEqual(purchase.order_line.price_unit, self.supplierinfo2.price) + self.assertEqual(purchase.order_line.product_qty, 10) + self.assertEqual(purchase.currency_id, self.supplierinfo2.currency_id) diff --git a/product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml b/product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml new file mode 100644 index 00000000000..45e8301570a --- /dev/null +++ b/product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml @@ -0,0 +1,27 @@ + + + product.supplierinfo + + + + + + + + + product.supplierinfo + + + + + + + + + From 0fa1caf38b39165a83fcfc1965d72b3fbca16913 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 4 Jun 2024 12:41:11 +0000 Subject: [PATCH 2/7] Added translation using Weblate (Italian) Translated using Weblate (Italian) Currently translated at 100.0% (3 of 3 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-product_supplierinfo_purchase_contact Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-product_supplierinfo_purchase_contact/it/ --- .../i18n/it.po | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 product_supplierinfo_purchase_contact/i18n/it.po diff --git a/product_supplierinfo_purchase_contact/i18n/it.po b/product_supplierinfo_purchase_contact/i18n/it.po new file mode 100644 index 00000000000..d8b8a01aaba --- /dev/null +++ b/product_supplierinfo_purchase_contact/i18n/it.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_supplierinfo_purchase_contact +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-06-04 15: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: product_supplierinfo_purchase_contact +#: model:ir.model.fields,field_description:product_supplierinfo_purchase_contact.field_product_supplierinfo__purchase_partner_id +msgid "Purchase contact" +msgstr "Contratto di acquisto" + +#. module: product_supplierinfo_purchase_contact +#: model:ir.model,name:product_supplierinfo_purchase_contact.model_stock_rule +msgid "Stock Rule" +msgstr "Regola di giacenza" + +#. module: product_supplierinfo_purchase_contact +#: model:ir.model,name:product_supplierinfo_purchase_contact.model_product_supplierinfo +msgid "Supplier Pricelist" +msgstr "Listino prezzi fornitore" From 04af901cd9f5a23c0d55e15b11f0e418e6cc56bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Tue, 8 Jul 2025 16:48:11 +0200 Subject: [PATCH 3/7] [IMP] product_supplierinfo_purchase_contact: pre-commit auto fixes --- .../README.rst | 36 ++++++++++--------- .../pyproject.toml | 3 ++ .../readme/CONTRIBUTORS.md | 4 +++ .../readme/CONTRIBUTORS.rst | 4 --- .../readme/DESCRIPTION.md | 3 ++ .../readme/DESCRIPTION.rst | 2 -- .../readme/USAGE.md | 6 ++++ .../readme/USAGE.rst | 3 -- .../static/description/index.html | 31 +++++++++------- .../tests/test_stock_rule.py | 2 +- .../views/product_supplierinfo_view.xml | 31 ++++++++-------- 11 files changed, 71 insertions(+), 54 deletions(-) create mode 100644 product_supplierinfo_purchase_contact/pyproject.toml create mode 100644 product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md delete mode 100644 product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst create mode 100644 product_supplierinfo_purchase_contact/readme/DESCRIPTION.md delete mode 100644 product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst create mode 100644 product_supplierinfo_purchase_contact/readme/USAGE.md delete mode 100644 product_supplierinfo_purchase_contact/readme/USAGE.rst diff --git a/product_supplierinfo_purchase_contact/README.rst b/product_supplierinfo_purchase_contact/README.rst index 820b509dbcd..d19b35e5dc8 100644 --- a/product_supplierinfo_purchase_contact/README.rst +++ b/product_supplierinfo_purchase_contact/README.rst @@ -17,19 +17,20 @@ Product Supplier Purchase Contact :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/16.0/product_supplierinfo_purchase_contact + :target: https://github.com/OCA/purchase-workflow/tree/18.0/product_supplierinfo_purchase_contact :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-16-0/purchase-workflow-16-0-product_supplierinfo_purchase_contact + :target: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-product_supplierinfo_purchase_contact :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module adds Purchase contact field on supplier rates (product.supplierinfo) -and allows you to use this contact when creating the purchase order from supplies (replacement or to order). +This module adds Purchase contact field on supplier rates +(product.supplierinfo) and allows you to use this contact when creating +the purchase order from supplies (replacement or to order). **Table of contents** @@ -39,9 +40,12 @@ and allows you to use this contact when creating the purchase order from supplie Usage ===== -* Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact. -* Go to Inventory > Operations > Replenishment and create a new replenishment for product with Vendor pricelist created before. -* Press button "Order once" and will create a new purchase order for Purchase contact instead of Vendor from Vendor Pricelist. +- Go to Purchase > Configuration > Vendor pricelist and create new + Vendor pricelist and complete Purchase contact. +- Go to Inventory > Operations > Replenishment and create a new + replenishment for product with Vendor pricelist created before. +- Press button "Order once" and will create a new purchase order for + Purchase contact instead of Vendor from Vendor Pricelist. Bug Tracker =========== @@ -49,7 +53,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -57,20 +61,20 @@ Credits ======= Authors -~~~~~~~ +------- * Tecnativa Contributors -~~~~~~~~~~~~ +------------ -* `Tecnativa `_: +- `Tecnativa `__: - * Carolina Fernandez - * Pedro M. Baeza + - Carolina Fernandez + - Pedro M. Baeza Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -82,6 +86,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/product_supplierinfo_purchase_contact/pyproject.toml b/product_supplierinfo_purchase_contact/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/product_supplierinfo_purchase_contact/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md b/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..b77eec92834 --- /dev/null +++ b/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +- [Tecnativa](https://www.tecnativa.com): + + > - Carolina Fernandez + > - Pedro M. Baeza diff --git a/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst b/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst deleted file mode 100644 index 7d431b589ad..00000000000 --- a/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,4 +0,0 @@ -* `Tecnativa `_: - - * Carolina Fernandez - * Pedro M. Baeza diff --git a/product_supplierinfo_purchase_contact/readme/DESCRIPTION.md b/product_supplierinfo_purchase_contact/readme/DESCRIPTION.md new file mode 100644 index 00000000000..2851bc39204 --- /dev/null +++ b/product_supplierinfo_purchase_contact/readme/DESCRIPTION.md @@ -0,0 +1,3 @@ +This module adds Purchase contact field on supplier rates +(product.supplierinfo) and allows you to use this contact when creating +the purchase order from supplies (replacement or to order). diff --git a/product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst b/product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst deleted file mode 100644 index bf8de8f3d6a..00000000000 --- a/product_supplierinfo_purchase_contact/readme/DESCRIPTION.rst +++ /dev/null @@ -1,2 +0,0 @@ -This module adds Purchase contact field on supplier rates (product.supplierinfo) -and allows you to use this contact when creating the purchase order from supplies (replacement or to order). diff --git a/product_supplierinfo_purchase_contact/readme/USAGE.md b/product_supplierinfo_purchase_contact/readme/USAGE.md new file mode 100644 index 00000000000..dff14c5a718 --- /dev/null +++ b/product_supplierinfo_purchase_contact/readme/USAGE.md @@ -0,0 +1,6 @@ +- Go to Purchase \> Configuration \> Vendor pricelist and create new + Vendor pricelist and complete Purchase contact. +- Go to Inventory \> Operations \> Replenishment and create a new + replenishment for product with Vendor pricelist created before. +- Press button "Order once" and will create a new purchase order for + Purchase contact instead of Vendor from Vendor Pricelist. diff --git a/product_supplierinfo_purchase_contact/readme/USAGE.rst b/product_supplierinfo_purchase_contact/readme/USAGE.rst deleted file mode 100644 index f150dfe2d45..00000000000 --- a/product_supplierinfo_purchase_contact/readme/USAGE.rst +++ /dev/null @@ -1,3 +0,0 @@ -* Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact. -* Go to Inventory > Operations > Replenishment and create a new replenishment for product with Vendor pricelist created before. -* Press button "Order once" and will create a new purchase order for Purchase contact instead of Vendor from Vendor Pricelist. diff --git a/product_supplierinfo_purchase_contact/static/description/index.html b/product_supplierinfo_purchase_contact/static/description/index.html index 6a281c8a7d3..68272e14cd8 100644 --- a/product_supplierinfo_purchase_contact/static/description/index.html +++ b/product_supplierinfo_purchase_contact/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -368,9 +369,10 @@

Product Supplier Purchase Contact

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:d1598d26a4766084ce5484761197815fadc9fbd2f45764a9dfdc3ef360c3df6b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

This module adds Purchase contact field on supplier rates (product.supplierinfo) -and allows you to use this contact when creating the purchase order from supplies (replacement or to order).

+

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

+

This module adds Purchase contact field on supplier rates +(product.supplierinfo) and allows you to use this contact when creating +the purchase order from supplies (replacement or to order).

Table of contents

    @@ -387,9 +389,12 @@

    Product Supplier Purchase Contact

    Usage

      -
    • Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact.
    • -
    • Go to Inventory > Operations > Replenishment and create a new replenishment for product with Vendor pricelist created before.
    • -
    • Press button “Order once” and will create a new purchase order for Purchase contact instead of Vendor from Vendor Pricelist.
    • +
    • Go to Purchase > Configuration > Vendor pricelist and create new +Vendor pricelist and complete Purchase contact.
    • +
    • Go to Inventory > Operations > Replenishment and create a new +replenishment for product with Vendor pricelist created before.
    • +
    • Press button “Order once” and will create a new purchase order for +Purchase contact instead of Vendor from Vendor Pricelist.
    @@ -397,7 +402,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 to smash it by providing a detailed and welcomed -feedback.

    +feedback.

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

    @@ -424,11 +429,13 @@

    Contributors

    Maintainers

    This module is maintained by the OCA.

    -Odoo Community Association + +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.

    +

    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/product_supplierinfo_purchase_contact/tests/test_stock_rule.py b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py index 72d8d55a508..30340b6c1a1 100644 --- a/product_supplierinfo_purchase_contact/tests/test_stock_rule.py +++ b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py @@ -7,7 +7,7 @@ class TestStockRule(common.TransactionCase): @classmethod def setUpClass(cls): - super(TestStockRule, cls).setUpClass() + super().setUpClass() cls.supplierinfo_obj = cls.env["product.supplierinfo"] cls.partner = cls.env["res.partner"].create( { diff --git a/product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml b/product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml index 45e8301570a..edcfc45277f 100644 --- a/product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml +++ b/product_supplierinfo_purchase_contact/views/product_supplierinfo_view.xml @@ -1,27 +1,26 @@ - product.supplierinfo - - - - product.supplierinfo + + + + - - - + + + - product.supplierinfo - - - + product.supplierinfo + + + - - - - + + + From 63fe5253132ca8c23c1e3b70279eb940910a2182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Tue, 8 Jul 2025 16:50:53 +0200 Subject: [PATCH 4/7] [MIG] product_supplierinfo_purchase_contact: Migration to 18.0 TT54472 --- .../README.rst | 24 +++++ .../__manifest__.py | 7 +- .../models/product_supplierinfo.py | 4 +- .../readme/CONTEXT.md | 6 ++ .../readme/CONTRIBUTORS.md | 1 + .../static/description/index.html | 42 +++++--- .../tests/test_stock_rule.py | 96 ++++++++----------- 7 files changed, 107 insertions(+), 73 deletions(-) create mode 100644 product_supplierinfo_purchase_contact/readme/CONTEXT.md diff --git a/product_supplierinfo_purchase_contact/README.rst b/product_supplierinfo_purchase_contact/README.rst index d19b35e5dc8..61968011715 100644 --- a/product_supplierinfo_purchase_contact/README.rst +++ b/product_supplierinfo_purchase_contact/README.rst @@ -37,6 +37,21 @@ the purchase order from supplies (replacement or to order). .. contents:: :local: +Use Cases / Context +=================== + +This module had 2 purposes: + +- To specify which contact the purchase orders generated from + procurements associated to this supplierinfo have to be put. +- That the auto-created supplierinfo from the purchase order has the + main partner associated, not the specific contact one. + +The 'Purchase contact' (purchase_partner_id) field is required if for +example you use sales pricelist based on supplierinfo +(product_pricelist_supplierinfo), you want to use as supplier filter the +'Supplier' (partner_id) field. + Usage ===== @@ -72,6 +87,7 @@ Contributors - Carolina Fernandez - Pedro M. Baeza + - Víctor Martínez Maintainers ----------- @@ -86,6 +102,14 @@ 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/product_supplierinfo_purchase_contact/__manifest__.py b/product_supplierinfo_purchase_contact/__manifest__.py index c186b76f3b7..b6a48cb61f5 100644 --- a/product_supplierinfo_purchase_contact/__manifest__.py +++ b/product_supplierinfo_purchase_contact/__manifest__.py @@ -2,17 +2,16 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Product Supplier Purchase Contact", - "version": "16.0.1.0.0", + "version": "18.0.1.0.0", "category": "Purchase Management", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/purchase-workflow", "license": "AGPL-3", "summary": "Add Purchase Contact in product supplier info", - "depends": [ - "purchase_stock", - ], + "depends": ["purchase_stock"], "data": [ "views/product_supplierinfo_view.xml", ], "installable": True, + "maintainers": ["victoralmau"], } diff --git a/product_supplierinfo_purchase_contact/models/product_supplierinfo.py b/product_supplierinfo_purchase_contact/models/product_supplierinfo.py index aa21cfdc554..1bde44049cd 100644 --- a/product_supplierinfo_purchase_contact/models/product_supplierinfo.py +++ b/product_supplierinfo_purchase_contact/models/product_supplierinfo.py @@ -7,5 +7,7 @@ class ProductSupplierInfo(models.Model): _inherit = "product.supplierinfo" purchase_partner_id = fields.Many2one( - comodel_name="res.partner", string="Purchase contact" + comodel_name="res.partner", + string="Purchase contact", + domain="[('parent_id', '=', partner_id)]", ) diff --git a/product_supplierinfo_purchase_contact/readme/CONTEXT.md b/product_supplierinfo_purchase_contact/readme/CONTEXT.md new file mode 100644 index 00000000000..7c7a2b65c00 --- /dev/null +++ b/product_supplierinfo_purchase_contact/readme/CONTEXT.md @@ -0,0 +1,6 @@ +This module had 2 purposes: +- To specify which contact the purchase orders generated from procurements associated to this supplierinfo have to be put. +- That the auto-created supplierinfo from the purchase order has the main partner associated, not the specific contact one. + +The 'Purchase contact' (purchase_partner_id) field is required if for example you use sales pricelist based on supplierinfo +(product_pricelist_supplierinfo), you want to use as supplier filter the 'Supplier' (partner_id) field. \ No newline at end of file diff --git a/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md b/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md index b77eec92834..2655c1de1c1 100644 --- a/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md +++ b/product_supplierinfo_purchase_contact/readme/CONTRIBUTORS.md @@ -2,3 +2,4 @@ > - Carolina Fernandez > - Pedro M. Baeza + > - Víctor Martínez diff --git a/product_supplierinfo_purchase_contact/static/description/index.html b/product_supplierinfo_purchase_contact/static/description/index.html index 68272e14cd8..b0d4447a805 100644 --- a/product_supplierinfo_purchase_contact/static/description/index.html +++ b/product_supplierinfo_purchase_contact/static/description/index.html @@ -376,18 +376,33 @@

    Product Supplier Purchase Contact

    Table of contents

    +
    +

    Use Cases / Context

    +

    This module had 2 purposes:

    +
      +
    • To specify which contact the purchase orders generated from +procurements associated to this supplierinfo have to be put.
    • +
    • That the auto-created supplierinfo from the purchase order has the +main partner associated, not the specific contact one.
    • +
    +

    The ‘Purchase contact’ (purchase_partner_id) field is required if for +example you use sales pricelist based on supplierinfo +(product_pricelist_supplierinfo), you want to use as supplier filter the +‘Supplier’ (partner_id) field.

    +
    -

    Usage

    +

    Usage

    • Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact.
    • @@ -398,7 +413,7 @@

      Usage

    -

    Bug Tracker

    +

    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 @@ -406,28 +421,29 @@

    Bug Tracker

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

    -

    Credits

    +

    Credits

    -

    Authors

    +

    Authors

    • Tecnativa
    -

    Contributors

    +

    Contributors

    • Tecnativa:

      • Carolina Fernandez
      • Pedro M. Baeza
      • +
      • Víctor Martínez
    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association @@ -435,6 +451,8 @@

    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.

    +

    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/product_supplierinfo_purchase_contact/tests/test_stock_rule.py b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py index 30340b6c1a1..a0d4e6e201c 100644 --- a/product_supplierinfo_purchase_contact/tests/test_stock_rule.py +++ b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py @@ -1,94 +1,78 @@ # Copyright 2024 Tecnativa - Carolina Fernandez +# Copyright 2025 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import Command +from odoo.tools import mute_logger -from odoo.tests import common +from odoo.addons.base.tests.common import BaseCommon -class TestStockRule(common.TransactionCase): +class TestStockRule(BaseCommon): @classmethod def setUpClass(cls): super().setUpClass() cls.supplierinfo_obj = cls.env["product.supplierinfo"] - cls.partner = cls.env["res.partner"].create( - { - "name": "Mr. Odoo", - } - ) - cls.partner2 = cls.env["res.partner"].create( - { - "name": "Mrs. Odoo 2", - } - ) + cls.partner = cls.env["res.partner"].create({"name": "Mr. Odoo"}) + cls.partner2 = cls.env["res.partner"].create({"name": "Mrs. Odoo 2"}) cls.product1 = cls.env["product.product"].create( { "name": "Test Product 1", - "purchase_method": "purchase", + "seller_ids": [ + Command.create( + { + "partner_id": cls.partner2.id, + "purchase_partner_id": cls.partner.id, + "price": 100, + } + ) + ], } ) cls.product2 = cls.env["product.product"].create( { "name": "Test Product 2", - "purchase_method": "purchase", - } - ) - cls.supplierinfo = cls.supplierinfo_obj.create( - { - "partner_id": cls.partner2.id, - "purchase_partner_id": cls.partner.id, - "product_tmpl_id": cls.product1.product_tmpl_id.id, - "price": 100, - } - ) - cls.supplierinfo2 = cls.supplierinfo_obj.create( - { - "partner_id": cls.partner2.id, - "product_tmpl_id": cls.product2.product_tmpl_id.id, - "price": 50, + "seller_ids": [ + Command.create( + { + "partner_id": cls.partner2.id, + "price": 50, + } + ) + ], } ) - cls.warehouse = cls.env["stock.warehouse"].search( - [("company_id", "=", cls.env.company.id)], limit=1 - ) - cls.stock_location_id = cls.warehouse.lot_stock_id.id - def test_replenishment_with_vendor_purchase(self): - op = self.env["stock.warehouse.orderpoint"].create( + def _create_orderpoint(self, product): + return self.env["stock.warehouse.orderpoint"].create( { - "name": self.product1.name, - "location_id": self.stock_location_id, - "product_id": self.product1.id, + "name": product.name, + "product_id": product.id, "product_min_qty": 1, - "product_max_qty": 8, + "product_max_qty": 10, "trigger": "manual", } ) + + @mute_logger("odoo.models.unlink") + def test_replenishment_with_vendor_purchase(self): + op = self._create_orderpoint(self.product1) op.action_replenish() purchase = self.env["purchase.order"].search( [("partner_id", "=", self.partner.id)], order="id desc", limit=1 ) - self.assertEqual(purchase.partner_id, self.supplierinfo.purchase_partner_id) + self.assertEqual(purchase.partner_id, self.partner) self.assertEqual(purchase.order_line.product_id, self.product1) - self.assertEqual(purchase.order_line.price_unit, self.supplierinfo.price) - self.assertEqual(purchase.order_line.product_qty, 8) - self.assertEqual(purchase.currency_id, self.supplierinfo.currency_id) + self.assertEqual(purchase.order_line.price_unit, 100) + self.assertEqual(purchase.order_line.product_qty, 10) + @mute_logger("odoo.models.unlink") def test_replenishment_without_vendor_purchase(self): - op = self.env["stock.warehouse.orderpoint"].create( - { - "name": self.product2.name, - "location_id": self.stock_location_id, - "product_id": self.product2.id, - "product_min_qty": 1, - "product_max_qty": 10, - "trigger": "manual", - } - ) + op = self._create_orderpoint(self.product2) op.action_replenish() purchase = self.env["purchase.order"].search( [("partner_id", "=", self.partner2.id)], order="id desc", limit=1 ) - self.assertEqual(purchase.partner_id, self.supplierinfo2.partner_id) + self.assertEqual(purchase.partner_id, self.partner2) self.assertEqual(purchase.order_line.product_id, self.product2) - self.assertEqual(purchase.order_line.price_unit, self.supplierinfo2.price) + self.assertEqual(purchase.order_line.price_unit, 50) self.assertEqual(purchase.order_line.product_qty, 10) - self.assertEqual(purchase.currency_id, self.supplierinfo2.currency_id) From a7522ca3470f8fe8819ccf7431c70c3ab0608c90 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 17 Jul 2025 06:47:47 +0000 Subject: [PATCH 5/7] [UPD] Update product_supplierinfo_purchase_contact.pot --- .../i18n/product_supplierinfo_purchase_contact.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot b/product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot index 4fbd6859f76..54b191bddb3 100644 --- a/product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot +++ b/product_supplierinfo_purchase_contact/i18n/product_supplierinfo_purchase_contact.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 3e86388176336f368c15db31f7c12ba13cc6d667 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 17 Jul 2025 06:53:07 +0000 Subject: [PATCH 6/7] [BOT] post-merge updates --- .../README.rst | 36 ++++++++++--------- .../static/description/index.html | 30 +++++++++------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/product_supplierinfo_purchase_contact/README.rst b/product_supplierinfo_purchase_contact/README.rst index 61968011715..1408cc0d9d5 100644 --- a/product_supplierinfo_purchase_contact/README.rst +++ b/product_supplierinfo_purchase_contact/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ================================= Product Supplier Purchase Contact ================================= @@ -7,13 +11,13 @@ Product Supplier Purchase Contact !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:d1598d26a4766084ce5484761197815fadc9fbd2f45764a9dfdc3ef360c3df6b + !! source digest: sha256:4e40ad1a5516889c80e7723b017b02fb0e2f0cb7b4ec51d6f0f897ac01ff093f !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github @@ -42,10 +46,10 @@ Use Cases / Context This module had 2 purposes: -- To specify which contact the purchase orders generated from - procurements associated to this supplierinfo have to be put. -- That the auto-created supplierinfo from the purchase order has the - main partner associated, not the specific contact one. +- To specify which contact the purchase orders generated from + procurements associated to this supplierinfo have to be put. +- That the auto-created supplierinfo from the purchase order has the + main partner associated, not the specific contact one. The 'Purchase contact' (purchase_partner_id) field is required if for example you use sales pricelist based on supplierinfo @@ -55,12 +59,12 @@ example you use sales pricelist based on supplierinfo Usage ===== -- Go to Purchase > Configuration > Vendor pricelist and create new - Vendor pricelist and complete Purchase contact. -- Go to Inventory > Operations > Replenishment and create a new - replenishment for product with Vendor pricelist created before. -- Press button "Order once" and will create a new purchase order for - Purchase contact instead of Vendor from Vendor Pricelist. +- Go to Purchase > Configuration > Vendor pricelist and create new + Vendor pricelist and complete Purchase contact. +- Go to Inventory > Operations > Replenishment and create a new + replenishment for product with Vendor pricelist created before. +- Press button "Order once" and will create a new purchase order for + Purchase contact instead of Vendor from Vendor Pricelist. Bug Tracker =========== @@ -83,11 +87,11 @@ Authors Contributors ------------ -- `Tecnativa `__: +- `Tecnativa `__: - - Carolina Fernandez - - Pedro M. Baeza - - Víctor Martínez + - Carolina Fernandez + - Pedro M. Baeza + - Víctor Martínez Maintainers ----------- diff --git a/product_supplierinfo_purchase_contact/static/description/index.html b/product_supplierinfo_purchase_contact/static/description/index.html index b0d4447a805..3920af9226c 100644 --- a/product_supplierinfo_purchase_contact/static/description/index.html +++ b/product_supplierinfo_purchase_contact/static/description/index.html @@ -3,7 +3,7 @@ -Product Supplier Purchase Contact +README.rst -
    -

    Product Supplier Purchase Contact

    +
    + + +Odoo Community Association + +
    +

    Product Supplier Purchase Contact

    -

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

    +

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

    This module adds Purchase contact field on supplier rates (product.supplierinfo) and allows you to use this contact when creating the purchase order from supplies (replacement or to order).

    @@ -388,7 +393,7 @@

    Product Supplier Purchase Contact

-

Use Cases / Context

+

Use Cases / Context

This module had 2 purposes:

  • To specify which contact the purchase orders generated from @@ -402,7 +407,7 @@

    Use Cases / Context

    ‘Supplier’ (partner_id) field.

-

Usage

+

Usage

  • Go to Purchase > Configuration > Vendor pricelist and create new Vendor pricelist and complete Purchase contact.
  • @@ -413,7 +418,7 @@

    Usage

-

Bug Tracker

+

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 @@ -421,15 +426,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Tecnativa
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -458,5 +463,6 @@

Maintainers

+ From ff535f8dbde0d25ab00e5b8ad3a74576d2ea96ce Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Thu, 23 Apr 2026 17:45:34 +0530 Subject: [PATCH 7/7] [MIG] product_supplierinfo_purchase_contact: Migration to 19.0 --- product_supplierinfo_purchase_contact/README.rst | 10 +++++----- product_supplierinfo_purchase_contact/__manifest__.py | 2 +- .../static/description/index.html | 6 +++--- .../tests/test_stock_rule.py | 1 - 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/product_supplierinfo_purchase_contact/README.rst b/product_supplierinfo_purchase_contact/README.rst index 1408cc0d9d5..45c0ecdea00 100644 --- a/product_supplierinfo_purchase_contact/README.rst +++ b/product_supplierinfo_purchase_contact/README.rst @@ -21,13 +21,13 @@ Product Supplier Purchase Contact :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/18.0/product_supplierinfo_purchase_contact + :target: https://github.com/OCA/purchase-workflow/tree/19.0/product_supplierinfo_purchase_contact :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-18-0/purchase-workflow-18-0-product_supplierinfo_purchase_contact + :target: https://translation.odoo-community.org/projects/purchase-workflow-19-0/purchase-workflow-19-0-product_supplierinfo_purchase_contact :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -72,7 +72,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -114,6 +114,6 @@ Current `maintainer `__: |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. diff --git a/product_supplierinfo_purchase_contact/__manifest__.py b/product_supplierinfo_purchase_contact/__manifest__.py index b6a48cb61f5..b4eda7e0e91 100644 --- a/product_supplierinfo_purchase_contact/__manifest__.py +++ b/product_supplierinfo_purchase_contact/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Product Supplier Purchase Contact", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "category": "Purchase Management", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/purchase-workflow", diff --git a/product_supplierinfo_purchase_contact/static/description/index.html b/product_supplierinfo_purchase_contact/static/description/index.html index 3920af9226c..278f150bce8 100644 --- a/product_supplierinfo_purchase_contact/static/description/index.html +++ b/product_supplierinfo_purchase_contact/static/description/index.html @@ -374,7 +374,7 @@

Product Supplier Purchase Contact

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:4e40ad1a5516889c80e7723b017b02fb0e2f0cb7b4ec51d6f0f897ac01ff093f !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module adds Purchase contact field on supplier rates (product.supplierinfo) and allows you to use this contact when creating the purchase order from supplies (replacement or to order).

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

+feedback.

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

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

diff --git a/product_supplierinfo_purchase_contact/tests/test_stock_rule.py b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py index a0d4e6e201c..b7655a18734 100644 --- a/product_supplierinfo_purchase_contact/tests/test_stock_rule.py +++ b/product_supplierinfo_purchase_contact/tests/test_stock_rule.py @@ -12,7 +12,6 @@ class TestStockRule(BaseCommon): def setUpClass(cls): super().setUpClass() cls.supplierinfo_obj = cls.env["product.supplierinfo"] - cls.partner = cls.env["res.partner"].create({"name": "Mr. Odoo"}) cls.partner2 = cls.env["res.partner"].create({"name": "Mrs. Odoo 2"}) cls.product1 = cls.env["product.product"].create( {