From 4e3027c7a9bcf64d27cb8f57e9203bba0a5b45b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 23 Mar 2024 22:51:52 +0100 Subject: [PATCH] Add description and note to opportunity line --- modules/sale_opportunity/CHANGELOG | 1 + modules/sale_opportunity/opportunity.py | 10 ++++++- .../view/opportunity_line_form.xml | 27 ++++++++++++++----- .../view/opportunity_line_tree.xml | 1 + 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/modules/sale_opportunity/CHANGELOG b/modules/sale_opportunity/CHANGELOG index 63ccd543f2..f2cf05a091 100644 --- a/modules/sale_opportunity/CHANGELOG +++ b/modules/sale_opportunity/CHANGELOG @@ -1,3 +1,4 @@ +* Add description and note to opportunity line * Make product optional on opportunity line * Restrict convert button to sale group diff --git a/modules/sale_opportunity/opportunity.py b/modules/sale_opportunity/opportunity.py index c5ba10610f..982810a42d 100644 --- a/modules/sale_opportunity/opportunity.py +++ b/modules/sale_opportunity/opportunity.py @@ -16,6 +16,7 @@ from trytond.modules.company.model import employee_field, set_employee from trytond.modules.currency.fields import Monetary from trytond.pool import Pool from trytond.pyson import Bool, Eval, Get, If, In +from trytond.tools import firstline from trytond.transaction import Transaction @@ -569,6 +570,9 @@ class SaleOpportunityLine(sequence_ordered(), ModelSQL, ModelView): 'required': Bool(Eval('product')), 'readonly': _states['readonly'], }) + description = fields.Text("Description", states=_states) + summary = fields.Function(fields.Char("Summary"), 'on_change_with_summary') + note = fields.Text("Note") del _states @@ -609,6 +613,10 @@ class SaleOpportunityLine(sequence_ordered(), ModelSQL, ModelView): def on_change_with_product_uom_category(self, name=None): return self.product.default_uom_category if self.product else None + @fields.depends('description') + def on_change_with_summary(self, name=None): + return firstline(self.description or '') + def get_sale_line(self, sale): ''' Return sale line for opportunity line @@ -618,7 +626,7 @@ class SaleOpportunityLine(sequence_ordered(), ModelSQL, ModelView): type='line', product=self.product, sale=sale, - description=None, + description=self.description, ) sale_line.on_change_product() self._set_sale_line_quantity(sale_line) diff --git a/modules/sale_opportunity/view/opportunity_line_form.xml b/modules/sale_opportunity/view/opportunity_line_form.xml index 725d808946..39fee2b69d 100644 --- a/modules/sale_opportunity/view/opportunity_line_form.xml +++ b/modules/sale_opportunity/view/opportunity_line_form.xml @@ -3,13 +3,26 @@ this repository contains the full copyright notices and license terms. -->