Odoo18-Base/addons/l10n_es_edi_sii/models/account_move.py

43 lines
1.8 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# -*- 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