Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions product_supplier_ref/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
====================
Product Supplier Ref
====================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d9bb52e37e4ee3e0a1e833fe7259b0893a6973a214d86a9caf294dec398b2064
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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-NuoBiT%2Fodoo--addons-lightgray.png?logo=github
:target: https://github.com/NuoBiT/odoo-addons/tree/18.0/product_supplier_ref
:alt: NuoBiT/odoo-addons

|badge1| |badge2| |badge3|

Use the product name if the supplier product name is empty instead of
the product default_code.

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/NuoBiT/odoo-addons/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 <https://github.com/NuoBiT/odoo-addons/issues/new?body=module:%20product_supplier_ref%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
-------

* NuoBiT Solutions SL

Contributors
------------

- `NuoBiT <https://www.nuobit.com>`__:

- Eric Antones eantones@nuobit.com
- Deniz Gallo dgallo@nuobit.com

Maintainers
-----------

This module is part of the `NuoBiT/odoo-addons <https://github.com/NuoBiT/odoo-addons/tree/18.0/product_supplier_ref>`_ project on GitHub.

You are welcome to contribute.
1 change: 1 addition & 0 deletions product_supplier_ref/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
17 changes: 17 additions & 0 deletions product_supplier_ref/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright NuoBiT Solutions SL - Eric Antones <eantones@nuobit.com>
# Copyright 2025 NuoBiT Solutions SL - Deniz Gallo <dgallo@nuobit.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

{
"name": "Product Supplier Ref",
"summary": "Use the product name if the supplier product name is "
"empty instead of the product default_code.",
Comment thread
deeniiz marked this conversation as resolved.
"version": "18.0.1.0.0",
"category": "Purchase",
"author": "NuoBiT Solutions SL",
"website": "https://github.com/NuoBiT/odoo-addons",
"license": "AGPL-3",
"depends": [
"product",
],
}
1 change: 1 addition & 0 deletions product_supplier_ref/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import product
57 changes: 57 additions & 0 deletions product_supplier_ref/models/product.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Copyright NuoBiT Solutions SL - Eric Antones <eantones@nuobit.com>
# Copyright 2025 NuoBiT Solutions SL - Deniz Gallo <dgallo@nuobit.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

from odoo import api, models


class ProductProduct(models.Model):
_inherit = "product.product"

def _get_supplier_info(self, partner_id):
self.ensure_one()
seller_lines = self.seller_ids.filtered(
lambda x: x.name.id == partner_id
).sorted(lambda x: (x.sequence, x.id))
if seller_lines:
seller_lines_product = seller_lines.filtered(lambda x: x.product_id == self)
if seller_lines_product:
seller_lines = seller_lines_product[0]
else:
seller_lines_no_product = seller_lines.filtered(
lambda x: not x.product_id
)
if seller_lines_no_product:
seller_lines = seller_lines_no_product[0]
return seller_lines

@api.depends_context("partner_id")
def _compute_product_code(self):
res = super()._compute_product_code()
partner_id = self._context.get("partner_id")
if partner_id:
for product in self:
supplier_info = product._get_supplier_info(partner_id)
product.code = supplier_info.product_code or product.default_code
return res

@api.depends_context("partner_id")
def _compute_partner_ref(self):
res = super()._compute_partner_ref()
partner_id = self._context.get("partner_id")
if partner_id:
for product in self:
supplier_info = product._get_supplier_info(partner_id)
if supplier_info:
partner_ref_l = []
product_code = supplier_info.product_code or product.default_code
if product_code:
partner_ref_l.append(f"[{product_code}]")
product_name = supplier_info.product_name or product.name
if product_name:
partner_ref_l.append(product_name)
if partner_ref_l:
product.partner_ref = " ".join(partner_ref_l)
else:
product.partner_ref = product.display_name
return res
3 changes: 3 additions & 0 deletions product_supplier_ref/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
3 changes: 3 additions & 0 deletions product_supplier_ref/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- [NuoBiT](https://www.nuobit.com):
- Eric Antones <eantones@nuobit.com>
- Deniz Gallo <dgallo@nuobit.com>
1 change: 1 addition & 0 deletions product_supplier_ref/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Use the product name if the supplier product name is empty instead of the product default_code.
Binary file added product_supplier_ref/static/description/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading