From 765be077cdd476076c7d605ef0630f3f7d61126a Mon Sep 17 00:00:00 2001 From: mpanarin Date: Mon, 13 Aug 2018 15:34:39 +0300 Subject: [PATCH] [FIX] not being able to change analytic account and tags --- .../wizard/account_invoice_update.py | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/account_invoice_update_wizard/wizard/account_invoice_update.py b/account_invoice_update_wizard/wizard/account_invoice_update.py index 3cca0ac..6e0022b 100644 --- a/account_invoice_update_wizard/wizard/account_invoice_update.py +++ b/account_invoice_update_wizard/wizard/account_invoice_update.py @@ -98,11 +98,30 @@ class AccountInvoiceUpdate(models.TransientModel): vals['date_due'] = max(line[0] for line in pterm_list) return vals + @api.model + def _line_simple_fields2update(self): + return ["name",] + + @api.model + def _line_m2o_fields2update(self): + return ["account_analytic_id",] + + @api.model + def _line_m2m_fields2update(self): + return ["analytic_tag_ids",] + @api.model def _prepare_invoice_line(self, line): vals = {} - if line.name != line.invoice_line_id.name: - vals['name'] = line.name + for field in self._line_simple_fields2update(): + if line[field] != line.invoice_line_id[field]: + vals[field] = line[field] + for field in self._line_m2o_fields2update(): + if line[field] != line.invoice_line_id[field]: + vals[field] = line[field].id + for field in self._line_m2m_fields2update(): + if line[field] != line.invoice_line_id[field]: + vals[field] = [(6, 0, line[field].ids)] return vals @api.multi @@ -229,7 +248,10 @@ class AccountInvoiceUpdate(models.TransientModel): mvals = self._prepare_move() if mvals: inv.move_id.write(mvals) - for ml in inv.move_id.line_ids: + for ml in inv.move_id.line_ids.filtered( + # we are only interested in invoice lines, not tax lines + lambda rec: bool(rec.product_id) + ): if ml.credit == 0.0: continue inv_line = self._get_matching_inv_line(ml)