diff --git a/invoice.py b/invoice.py index 0b185fac48..1339a6882f 100644 --- a/invoice.py +++ b/invoice.py @@ -67,7 +67,8 @@ class Invoice: @classmethod def search_sales(cls, name, clause): - return [('lines.origin.sale',) + tuple(clause[1:]) + ('sale.line',)] + return [('lines.origin.sale' + clause[0].lstrip(name),) + + tuple(clause[1:3]) + ('sale.line',) + tuple(clause[3:])] @classmethod def copy(cls, invoices, default=None): diff --git a/sale.py b/sale.py index 4d61e8514e..eea107065d 100644 --- a/sale.py +++ b/sale.py @@ -537,7 +537,8 @@ class Sale(Workflow, ModelSQL, ModelView, TaxableMixin): @classmethod def search_invoices(cls, name, clause): - return [('lines.invoice_lines.invoice',) + tuple(clause[1:])] + return [('lines.invoice_lines.invoice' + clause[0].lstrip(name),) + + tuple(clause[1:])] def get_invoice_state(self): ''' @@ -585,12 +586,12 @@ class Sale(Workflow, ModelSQL, ModelView, TaxableMixin): Search on shipments or returns ''' def method(self, name, clause): - if isinstance(clause[2], basestring): - target = 'rec_name' + nested = clause[0].lstrip(name) + if nested: + return [('lines.moves.shipment' + nested,) + + tuple(clause[1:3]) + (model_name,) + tuple(clause[3:])] else: - target = 'id' - return [('lines.moves.shipment.' + target,) + tuple(clause[1:]) - + (model_name,)] + return [('lines.moves.shipment',) + tuple(clause[1:3])] return classmethod(method) search_shipments = search_shipments_returns('stock.shipment.out') diff --git a/stock.py b/stock.py index ecd628e2e8..f60be8836a 100644 --- a/stock.py +++ b/stock.py @@ -165,7 +165,8 @@ class Move: @classmethod def search_sale(cls, name, clause): - return [('origin.' + name,) + tuple(clause[1:]) + ('sale.line',)] + return [('origin.' + clause[0],) + tuple(clause[1:3]) + + ('sale.line',) + tuple(clause[3:])] def get_sale_exception_state(self, name): SaleLine = Pool().get('sale.line')