[FIX] not being able to change analytic account and tags
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user