Support None as search value of composite rec_name

This commit is contained in:
Cédric Krier committed 2023-01-12 11:36:41 +01:00
1 parent cad8cad4ef
commit 704aaf01de
3 files changed
+40 -18

No files matched your search

+12 -5
View File
@@ -690,11 +690,18 @@ class Asset(Workflow, ModelSQL, ModelView):
@classmethod
def search_rec_name(cls, name, clause):
names = clause[2].split(' - ', 1)
res = [('number', clause[1], names[0])]
if len(names) != 1 and names[1]:
res.append(('product', clause[1], names[1]))
return res
domain = []
_, operator, value = clause
if value is not None:
names = value.split(' - ', 1)
domain.append(('number', operator, value))
if len(names) != 1 and names[1]:
domain.append(('product', operator, value))
if operator.startswith('!') or operator.startswith('not'):
domain.insert(0, 'OR')
elif not operator.startswith('!') and not operator.startswith('not'):
domain.append(('id', '<', 0))
return domain
@classmethod
def copy(cls, assets, default=None):
+16 -8
View File
@@ -200,14 +200,22 @@ class PurchaseRequest(ModelSQL, ModelView):
@classmethod
def search_rec_name(cls, name, clause):
res = []
names = clause[2].split('@', 1)
res.append(('product.template.name', clause[1], names[0]))
if len(names) != 1 and names[1]:
res.append(('warehouse', clause[1], names[1]))
return ['OR', res,
('description',) + tuple(clause[1:]),
]
_, operator, value = clause
if operator.startswith('!') or operator.startswith('not'):
bool_op = 'AND'
else:
bool_op = 'OR'
domain = [bool_op]
if value is not None:
names = value.split('@', 1)
sub_domain = [('product.template.name', operator, names[0])]
if len(names) != 1 and names[1]:
sub_domain.append(('warehouse', operator, names[1]))
if bool_op == 'AND':
sub_domain.insert(0, 'OR')
domain.append(sub_domain)
domain.append(('description', *clause[1:]))
return domain
@staticmethod
def default_company():
+12 -5
View File
@@ -388,11 +388,18 @@ class QuotationLine(ModelSQL, ModelView):
@classmethod
def search_rec_name(cls, name, clause):
names = clause[2].split(' - ', 1)
res = [('quotation', clause[1], names[0])]
if len(names) != 1 and names[1]:
res.append(('supplier', clause[1], names[1]))
return res
domain = []
_, operator, value = clause
if value is not None:
names = clause[2].split(' - ', 1)
domain.append(('quotation', operator, names[0]))
if len(names) != 1 and names[1]:
domain.append(('supplier', operator, names[1]))
if operator.startswith('!') or operator.startswith('not'):
domain.insert(0, 'OR')
elif not operator.startswith('!') and not operator.startswith('not'):
domain.append(('id', '<', 0))
return domain
@classmethod
def delete(cls, quotationlines):