From 1817671fbb8ee3dd2902c5aa020e39591c4bb479 Mon Sep 17 00:00:00 2001 From: marinaGD Date: Mon, 30 Jul 2018 18:06:47 -0300 Subject: [PATCH 1/3] fix eletronic document message disappearing when acconunt invoice is created --- br_account/models/account_invoice.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/br_account/models/account_invoice.py b/br_account/models/account_invoice.py index 5c9b5ca26..983d58b81 100644 --- a/br_account/models/account_invoice.py +++ b/br_account/models/account_invoice.py @@ -11,6 +11,23 @@ class AccountInvoice(models.Model): _inherit = 'account.invoice' + @api.multi + def write(self, vals): + if self.state == 'draft': + fis_obs_ids = ({'fiscal_observation_ids': [ + x.id for x in self.fiscal_position_id.fiscal_observation_ids]}) + vals.update({'fiscal_observation_ids': (6, None, fis_obs_ids)}) + return super(AccountInvoice, self).write(vals) + + @api.model + def create(self, vals): + if "fiscal_position_id" in vals: + fpos_id = self.env['account.fiscal.position'].browse( + vals["fiscal_position_id"]) + vals.update({'fiscal_observation_ids': [ + (4, x.id, None) for x in fpos_id.fiscal_observation_ids]}) + return super(AccountInvoice, self).create(vals) + @api.one @api.depends('invoice_line_ids.price_subtotal', 'invoice_line_ids.price_total', From 850d99665cc5ad07ba9a3be8350054977dada9d6 Mon Sep 17 00:00:00 2001 From: marinaGD Date: Tue, 31 Jul 2018 10:01:41 -0300 Subject: [PATCH 2/3] add handling to @api.multi in write --- br_account/models/account_invoice.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/br_account/models/account_invoice.py b/br_account/models/account_invoice.py index 983d58b81..e64a6e4db 100644 --- a/br_account/models/account_invoice.py +++ b/br_account/models/account_invoice.py @@ -13,10 +13,12 @@ class AccountInvoice(models.Model): @api.multi def write(self, vals): - if self.state == 'draft': - fis_obs_ids = ({'fiscal_observation_ids': [ - x.id for x in self.fiscal_position_id.fiscal_observation_ids]}) - vals.update({'fiscal_observation_ids': (6, None, fis_obs_ids)}) + for rec in self: + if rec.state == 'draft': + fis_obs_ids = ({'fiscal_observation_ids': [ + x.id for x in + rec.fiscal_position_id.fiscal_observation_ids]}) + vals.update({'fiscal_observation_ids': (6, None, fis_obs_ids)}) return super(AccountInvoice, self).write(vals) @api.model From de0363a08bda74512092286c3630ea21b95d6511 Mon Sep 17 00:00:00 2001 From: marinaGD Date: Tue, 31 Jul 2018 13:31:10 -0300 Subject: [PATCH 3/3] fix issue when changing fiscal position of existing account.invoice --- br_account/models/account_invoice.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/br_account/models/account_invoice.py b/br_account/models/account_invoice.py index e64a6e4db..e091b0e33 100644 --- a/br_account/models/account_invoice.py +++ b/br_account/models/account_invoice.py @@ -14,11 +14,12 @@ class AccountInvoice(models.Model): @api.multi def write(self, vals): for rec in self: - if rec.state == 'draft': - fis_obs_ids = ({'fiscal_observation_ids': [ - x.id for x in - rec.fiscal_position_id.fiscal_observation_ids]}) - vals.update({'fiscal_observation_ids': (6, None, fis_obs_ids)}) + fisc_pos = self.env[ + 'account.fiscal.position'].browse( + vals.get('fiscal_position_id')) + if rec.state == 'draft' and fisc_pos: + vals.update({'fiscal_observation_ids': [ + (6, None, fisc_pos.fiscal_observation_ids.ids)]}) return super(AccountInvoice, self).write(vals) @api.model