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
66 changes: 66 additions & 0 deletions sale_line_partner_variant_description/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
================================================
Sale line product variant description by partner
================================================

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

.. |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/sale_line_partner_variant_description
:alt: NuoBiT/odoo-addons

|badge1| |badge2| |badge3|

This module replaces the default product description on sale order lines
with the product’s sales description. As a result, no product
description will appear on a sale order line unless the product has a
customer-specific sales description.

**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:%20sale_line_partner_variant_description%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 [email protected]
- Deniz Gallo [email protected]

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

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

You are welcome to contribute.
1 change: 1 addition & 0 deletions sale_line_partner_variant_description/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
21 changes: 21 additions & 0 deletions sale_line_partner_variant_description/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright NuoBiT Solutions SL - Eric Antones <[email protected]>
# Copyright 2026 NuoBit Solutions SL - Deniz Gallo <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

{
"name": "Sale line product variant description by partner",
"summary": "This module replaces the default product description "
"on sale order lines with the product’s sales description. "
"As a result, no product description will appear on a sale "
"order line unless the product has a customer-specific sales "
"description.",
"version": "18.0.1.0.0",
"category": "Sales",
"author": "NuoBiT Solutions SL",
"website": "https://github.com/NuoBiT/odoo-addons",
"license": "AGPL-3",
"depends": [
"sale_order_line_variant_description_extension",
"sale_line_partner_description",
],
}
1 change: 1 addition & 0 deletions sale_line_partner_variant_description/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import product_product
80 changes: 80 additions & 0 deletions sale_line_partner_variant_description/models/product_product.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Copyright 2025 NuoBiT Solutions SL - Eric Antones <[email protected]>
# Copyright 2026 NuoBit Solutions SL - Deniz Gallo <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

import re

from odoo import _, api, models
from odoo.exceptions import ValidationError


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

@api.model
def _extract_part(self, part, name):
m = re.match(
rf"^(.*)\n({re.escape(part)})(.*)$",
name,
re.DOTALL,
)
if m:
desc = m.group(2)
rest = m.group(1) + m.group(3)
else:
raise ValidationError(_("Unexpected format in product name: %s") % name)
return desc, rest

def get_product_multiline_description_sale(self):
name = super().get_product_multiline_description_sale()
if name:
# extract description parts
m = re.match(r"^(\[[^]]+\]) ([^\n]+)(\n.*)?$", name, re.DOTALL)
if m:
code, desc, rest = m.groups()
else:
m = re.match(r"^([^\n]+)(\n.*)?$", name, re.DOTALL)
if m:
code, desc, rest = (None, *m.groups())
else:
raise ValidationError(
_("Unexpected format in product name: %s") % name
)

# build the new description line
name_l = []
ref_part_l = []
if code:
ref_part_l.append(code)

cand_desc = None
if rest:
if self.variant_description_sale:
cand_desc, rest = self._extract_part(
self.variant_description_sale, rest
)
else:
if self.description_sale:
cand_desc, rest = self._extract_part(
self.description_sale, rest
)

buyer = self._get_buyer_for_partner(self.env.context.get("partner_id"))
if not buyer or not buyer.name:
if cand_desc:
ref_part_l.append(cand_desc)
else:
ref_part_l.append(desc)
else:
ref_part_l.append(desc)

if ref_part_l:
name_l.append(" ".join(ref_part_l))

if rest:
name_l.append(rest)

if name_l:
name = "".join(name_l)

return name
3 changes: 3 additions & 0 deletions sale_line_partner_variant_description/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 sale_line_partner_variant_description/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- [NuoBiT](https://www.nuobit.com):
- Eric Antones <[email protected]>
- Deniz Gallo <[email protected]>
4 changes: 4 additions & 0 deletions sale_line_partner_variant_description/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
This module replaces the default product description on sale order lines
with the product’s sales description. As a result, no product
description will appear on a sale order line unless the product has a
customer-specific sales description.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading