From caae9325ce043cb73b63cccbfb17ca36f6f2f147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 12 Apr 2020 23:06:02 +0200 Subject: [PATCH] Allow entering origin before customer issue9202 review301321002 --- CHANGELOG | 2 ++ complaint.py | 33 +++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 926340107d..9944591749 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Allow entering origin before customer + Version 5.4.0 - 2019-11-04 * Bug fixes (see mercurial logs for details) * Use processing delay to process approved complaint diff --git a/complaint.py b/complaint.py index e6c44965da..7275efece4 100644 --- a/complaint.py +++ b/complaint.py @@ -149,23 +149,31 @@ class Complaint(Workflow, ModelSQL, ModelView): def _origin_domains(cls): return { 'sale.sale': [ - ('party', '=', Eval('customer')), + If(Eval('customer'), + ('party', '=', Eval('customer')), + ()), ('company', '=', Eval('company')), ('state', 'in', ['confirmed', 'processing', 'done']), ], 'sale.line': [ - ('sale.party', '=', Eval('customer')), + If(Eval('customer'), + ('sale.party', '=', Eval('customer')), + ()), ('sale.company', '=', Eval('company')), ('sale.state', 'in', ['confirmed', 'processing', 'done']), ], 'account.invoice': [ - ('party', '=', Eval('customer')), + If(Eval('customer'), + ('party', '=', Eval('customer')), + ()), ('company', '=', Eval('company')), ('type', '=', 'out'), ('state', 'in', ['posted', 'paid']), ], 'account.invoice.line': [ - ('invoice.party', '=', Eval('customer')), + If(Eval('customer'), + ('invoice.party', '=', Eval('customer')), + ()), ('invoice.company', '=', Eval('company')), ('invoice.type', '=', 'out'), ('invoice.state', 'in', ['posted', 'paid']), @@ -204,6 +212,23 @@ class Complaint(Workflow, ModelSQL, ModelView): else: return [] + @fields.depends('origin', 'customer') + def on_change_origin(self): + pool = Pool() + Sale = pool.get('sale.sale') + SaleLine = pool.get('sale.line') + Invoice = pool.get('account.invoice') + InvoiceLine = pool.get('account.invoice.line') + if not self.customer and self.origin and self.origin.id >= 0: + if isinstance(self.origin, Sale): + self.customer = self.origin.party + elif isinstance(self.origin, SaleLine): + self.customer = self.origin.sale.party + elif isinstance(self.origin, Invoice): + self.customer = self.origin.party + elif isinstance(self.origin, InvoiceLine) and self.origin.invoice: + self.customer = self.origin.invoice.party + @fields.depends('origin') def on_change_with_origin_id(self, name=None): if self.origin: