diff --git a/modules/account_invoice/invoice.py b/modules/account_invoice/invoice.py index ffa70d76f6..c6abbe53a4 100644 --- a/modules/account_invoice/invoice.py +++ b/modules/account_invoice/invoice.py @@ -3054,19 +3054,27 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): def get_rec_name(self, name): pool = Pool() Lang = pool.get('ir.lang') - if self.product: + name = self.product.rec_name if self.product else self.summary + if not name and self.account: + name = self.account.rec_name + + if self.type == 'line': lang = Lang.get() - prefix = (lang.format_number_symbol( - self.quantity or 0, self.unit, digits=self.unit.digits) - + ' %s' % self.product.rec_name) - elif self.account: - prefix = self.account.rec_name - else: - prefix = '(%s)' % self.id + if self.unit: + quantity = lang.format_number_symbol( + self.quantity or 0, self.unit, digits=self.unit.digits) + else: + quantity = lang.format_number(self.quantity or 0) + if name: + name = f'{quantity} {name}' + else: + name = quantity + elif not name: + name = f'({self.id})' + if self.invoice: - return '%s @ %s' % (prefix, self.invoice.rec_name) - else: - return prefix + name = f'{name} @ {self.invoice.rec_name}' + return name @classmethod def search_rec_name(cls, name, clause): @@ -3079,6 +3087,7 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): ('invoice.rec_name', *clause[1:]), ('product.rec_name', *clause[1:]), ('account.rec_name', *clause[1:]), + ('summary', *clause[1:]), ] @classmethod diff --git a/modules/purchase/purchase.py b/modules/purchase/purchase.py index d0d0c49ed4..d8e1553047 100644 --- a/modules/purchase/purchase.py +++ b/modules/purchase/purchase.py @@ -2135,13 +2135,22 @@ class Line(sequence_ordered(), ModelSQL, ModelView): def get_rec_name(self, name): pool = Pool() Lang = pool.get('ir.lang') - if self.product: + name = self.product.rec_name if self.product else self.summary + if self.type == 'line': lang = Lang.get() - return (lang.format_number_symbol( + if self.unit: + quantity = lang.format_number_symbol( self.quantity or 0, self.unit, digits=self.unit.digits) - + ' %s @ %s' % (self.product.rec_name, self.purchase.rec_name)) - else: - return self.purchase.rec_name + else: + quantity = lang.format_number(self.quantity or 0) + if name: + name = f'{quantity} {name}' + else: + name = quantity + elif not name: + name = f'({self.id})' + + return f'{name} @ {self.purchase.rec_name}' @classmethod def search_rec_name(cls, name, clause): @@ -2153,6 +2162,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): return [bool_op, ('purchase.rec_name', *clause[1:]), ('product.rec_name', *clause[1:]), + ('summary', *clause[1:]), ] @classmethod diff --git a/modules/sale/sale.py b/modules/sale/sale.py index e15c594630..c03fdb42d2 100644 --- a/modules/sale/sale.py +++ b/modules/sale/sale.py @@ -2287,13 +2287,22 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView): def get_rec_name(self, name): pool = Pool() Lang = pool.get('ir.lang') - if self.product: + name = self.product.rec_name if self.product else self.summary + if self.type == 'line': lang = Lang.get() - return (lang.format_number_symbol( + if self.unit: + quantity = lang.format_number_symbol( self.quantity or 0, self.unit, digits=self.unit.digits) - + ' %s @ %s' % (self.product.rec_name, self.sale.rec_name)) - else: - return self.sale.rec_name + else: + quantity = lang.format_number(self.quantity or 0) + if name: + name = f'{quantity} {name}' + else: + name = quantity + elif not name: + name = f'({self.id})' + + return f'{name} @ {self.sale.rec_name}' @classmethod def search_rec_name(cls, name, clause): @@ -2305,6 +2314,7 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView): return [bool_op, ('sale.rec_name', *clause[1:]), ('product.rec_name', *clause[1:]), + ('summary', *clause[1:]), ] @classmethod