43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import api, fields, models
|
||
|
|
||
|
|
||
|
class AccountMove(models.Model):
|
||
|
_inherit = 'account.move'
|
||
|
|
||
|
l10n_es_edi_is_required = fields.Boolean(
|
||
|
string="Is the Spanish EDI needed",
|
||
|
compute='_compute_l10n_es_edi_is_required'
|
||
|
)
|
||
|
l10n_es_edi_csv = fields.Char(string="CSV return code", copy=False)
|
||
|
# Technical field to keep the date the invoice was sent the first time as
|
||
|
# the date the invoice was registered into the system.
|
||
|
l10n_es_registration_date = fields.Date(
|
||
|
string="Registration Date", copy=False,
|
||
|
)
|
||
|
|
||
|
# -------------------------------------------------------------------------
|
||
|
# COMPUTE METHODS
|
||
|
# -------------------------------------------------------------------------
|
||
|
|
||
|
@api.depends('move_type', 'company_id', 'invoice_line_ids.tax_ids')
|
||
|
def _compute_l10n_es_edi_is_required(self):
|
||
|
for move in self:
|
||
|
has_tax = True
|
||
|
# Check it is not an importation invoice (which will be report through the DUA invoice)
|
||
|
if move.is_purchase_document():
|
||
|
taxes = move.invoice_line_ids.tax_ids
|
||
|
has_tax = any(t.l10n_es_type and t.l10n_es_type != 'ignore' for t in taxes)
|
||
|
move.l10n_es_edi_is_required = move.is_invoice() \
|
||
|
and move.country_code == 'ES' \
|
||
|
and move.company_id.l10n_es_sii_tax_agency \
|
||
|
and has_tax
|
||
|
|
||
|
@api.depends('l10n_es_edi_is_required')
|
||
|
def _compute_edi_show_cancel_button(self):
|
||
|
super()._compute_edi_show_cancel_button()
|
||
|
for move in self.filtered('l10n_es_edi_is_required'):
|
||
|
move.edi_show_cancel_button = False
|