diff --git a/br_account/models/br_account.py b/br_account/models/br_account.py index 1022bfb17..0923adaaa 100644 --- a/br_account/models/br_account.py +++ b/br_account/models/br_account.py @@ -176,8 +176,10 @@ class ImportDeclaration(models.Model): _name = 'br_account.import.declaration' invoice_line_id = fields.Many2one( - 'account.invoice.line', u'Linha de Documento Fiscal', + 'account.invoice.line', + string='Linha de Documento Fiscal', ondelete='cascade', index=True) + name = fields.Char(u'Número da DI', size=10, required=True) date_registration = fields.Date(u'Data de Registro', required=True) state_id = fields.Many2one( diff --git a/br_account/views/account_invoice_view.xml b/br_account/views/account_invoice_view.xml index c6d39e705..bf2e399a0 100644 --- a/br_account/views/account_invoice_view.xml +++ b/br_account/views/account_invoice_view.xml @@ -399,7 +399,7 @@ - + diff --git a/br_nfe/models/account_invoice.py b/br_nfe/models/account_invoice.py index 5396d0919..30700372d 100644 --- a/br_nfe/models/account_invoice.py +++ b/br_nfe/models/account_invoice.py @@ -34,6 +34,8 @@ def _compute_nfe_number(self): string=u"Número NFe", compute="_compute_nfe_number") nfe_exception_number = fields.Integer( string=u"Número NFe", compute="_compute_nfe_number") + import_declaration_ids = fields.One2many( + 'br_account.import.declaration', 'invoice_id') @api.multi def action_invoice_draft(self): @@ -203,15 +205,19 @@ def _prepare_edoc_item_vals(self, invoice_line): invoice_line.icms_aliquota_inter_part or 0.0 di_importacao = [] - for di in invoice_line.import_declaration_ids: + for di in invoice_line.invoice_id.import_declaration_ids: adicoes = [] - for di_line in di.line_ids: + adicoes_linhas = invoice_line.declaration_line_ids.filtered( + lambda adicao: adicao.import_declaration_id == di) + if not adicoes_linhas: + continue + for adicao in adicoes_linhas: adicoes.append((0, None, { - 'sequence': di_line.sequence, - 'name': di_line.name, - 'manufacturer_code': di_line.manufacturer_code, - 'amount_discount': di_line.amount_discount, - 'drawback_number': di_line.drawback_number, + 'sequence': adicao.sequence, + 'name': adicao.name, + 'manufacturer_code': adicao.manufacturer_code, + 'amount_discount': adicao.amount_discount, + 'drawback_number': adicao.drawback_number, })) di_importacao.append((0, None, { @@ -231,3 +237,11 @@ def _prepare_edoc_item_vals(self, invoice_line): vals['import_declaration_ids'] = di_importacao vals['informacao_adicional'] = invoice_line.informacao_adicional return vals + + +class AccountInvoiceLine(models.Model): + _inherit = 'account.invoice.line' + + declaration_line_ids = fields.One2many( + 'br_account.import.declaration.line', + 'invoice_line_id', string='Adições da DI') diff --git a/br_nfe/models/invoice_eletronic_item.py b/br_nfe/models/invoice_eletronic_item.py index d9c8c6ec5..de81bb642 100644 --- a/br_nfe/models/invoice_eletronic_item.py +++ b/br_nfe/models/invoice_eletronic_item.py @@ -27,7 +27,7 @@ def _compute_cst_danfe(self): import_declaration_ids = fields.One2many( 'br_account.import.declaration', - 'invoice_eletronic_line_id', u'Declaração de Importação') + 'invoice_eletronic_line_id', string=u'Declaração de Importação') # ----------- ICMS INTERESTADUAL ----------- tem_difal = fields.Boolean(string=u'Difal?', readonly=True, states=STATE) diff --git a/br_nfe/models/nfe.py b/br_nfe/models/nfe.py index fda1b4789..d6809883d 100644 --- a/br_nfe/models/nfe.py +++ b/br_nfe/models/nfe.py @@ -11,6 +11,18 @@ class ImportDeclaration(models.Model): 'invoice.eletronic.item', u'Linha de Documento Eletrônico', ondelete='cascade', index=True) + invoice_id = fields.Many2one( + 'account.invoice', 'Fatura', + ondelete='cascade', index=True) + + +class ImportDeclarationLine(models.Model): + _inherit = 'br_account.import.declaration.line' + + invoice_line_id = fields.Many2one( + 'account.invoice.line', + string="Linhas da fatura") + class AccountDocumentRelated(models.Model): _inherit = 'br_account.document.related' diff --git a/br_nfe/views/account_invoice.xml b/br_nfe/views/account_invoice.xml index 5095d5d74..8a74bb2ec 100644 --- a/br_nfe/views/account_invoice.xml +++ b/br_nfe/views/account_invoice.xml @@ -1,11 +1,16 @@ - + br_account_einvoice_invoice_form account.invoice + +
+ +
+
@@ -37,12 +42,31 @@ + + br_nfe_invoice_line_form + account.invoice.line + + + + + + + + + + + br_nfe_supplier_invoice_form account.invoice + +
+ +
+
diff --git a/br_nfe/views/br_nfe.xml b/br_nfe/views/br_nfe.xml index b36a825ec..6c5b3f072 100644 --- a/br_nfe/views/br_nfe.xml +++ b/br_nfe/views/br_nfe.xml @@ -35,12 +35,47 @@ nfe.duplicata - + + + br_account.import.declaration.form + br_account.import.declaration + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + br_nfe.import.declaration.line + br_account.import.declaration.line + + + + + + + diff --git a/br_stock_account/models/account_invoice.py b/br_stock_account/models/account_invoice.py index 4920dba90..e3cfa96cb 100644 --- a/br_stock_account/models/account_invoice.py +++ b/br_stock_account/models/account_invoice.py @@ -15,10 +15,12 @@ class AccountInvoice(models.Model): @api.multi def copy(self, default=None): + self.ensure_one() new_acc_inv = super(AccountInvoice, self).copy(default) + new_acc_inv.import_declaration_ids = self.import_declaration_ids for i in range(len(new_acc_inv.invoice_line_ids)): - new_acc_inv.invoice_line_ids[i].import_declaration_ids = \ - self.invoice_line_ids[i].import_declaration_ids + new_acc_inv.invoice_line_ids[i].declaration_line_ids = \ + self.invoice_line_ids[i].declaration_line_ids return new_acc_inv @api.one