[FIX] not being able to change analytic account and tags

This commit is contained in:
mpanarin
2018-08-13 15:34:39 +03:00
parent 71ecc03001
commit d01820cd39

View File

@@ -98,11 +98,30 @@ class AccountInvoiceUpdate(models.TransientModel):
vals['date_due'] = max(line[0] for line in pterm_list) vals['date_due'] = max(line[0] for line in pterm_list)
return vals 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 @api.model
def _prepare_invoice_line(self, line): def _prepare_invoice_line(self, line):
vals = {} vals = {}
if line.name != line.invoice_line_id.name: for field in self._line_simple_fields2update():
vals['name'] = line.name 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 return vals
@api.multi @api.multi
@@ -229,7 +248,10 @@ class AccountInvoiceUpdate(models.TransientModel):
mvals = self._prepare_move() mvals = self._prepare_move()
if mvals: if mvals:
inv.move_id.write(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: if ml.credit == 0.0:
continue continue
inv_line = self._get_matching_inv_line(ml) inv_line = self._get_matching_inv_line(ml)