diff --git a/l10n_es_aeat_sii_oca/models/account_move.py b/l10n_es_aeat_sii_oca/models/account_move.py index 6d80a5aa5ea..debfc306c96 100644 --- a/l10n_es_aeat_sii_oca/models/account_move.py +++ b/l10n_es_aeat_sii_oca/models/account_move.py @@ -500,6 +500,7 @@ def _get_sii_invoice_dict_in(self, cancel=False): """Build dict with data to send to AEAT WS for invoice types: in_invoice and in_refund. + :param cancel: It indicates if the dictionary if for sending a :param cancel: It indicates if the dictionary if for sending a cancellation of the invoice. :return: invoices (dict) : Dict XML with data for this invoice. @@ -508,7 +509,7 @@ def _get_sii_invoice_dict_in(self, cancel=False): invoice_date = self._change_date_format(self.invoice_date) reg_date = self._change_date_format(self._get_account_registration_date()) ejercicio = fields.Date.to_date(self.date).year - periodo = "%02d" % fields.Date.to_date(self.date).month + periodo = self._get_document_period() partner = self._sii_get_partner() desglose_factura, tax_amount, not_in_amount_total = self._get_sii_in_taxes() inv_dict = { diff --git a/l10n_es_aeat_sii_oca/models/res_company.py b/l10n_es_aeat_sii_oca/models/res_company.py index 606ba1e711b..49f6340069e 100644 --- a/l10n_es_aeat_sii_oca/models/res_company.py +++ b/l10n_es_aeat_sii_oca/models/res_company.py @@ -69,6 +69,13 @@ class ResCompany(models.Model): ) sent_time = fields.Float() delay_time = fields.Float() + sii_period = fields.Selection( + selection=[ + ("monthly", "Monthly"), + ("quarterly", "Quarterly"), + ], + default="monthly", + ) def _get_sii_eta(self): if self.send_mode == "fixed": diff --git a/l10n_es_aeat_sii_oca/models/sii_mixin.py b/l10n_es_aeat_sii_oca/models/sii_mixin.py index 6e3540066cc..809c1ec6aff 100644 --- a/l10n_es_aeat_sii_oca/models/sii_mixin.py +++ b/l10n_es_aeat_sii_oca/models/sii_mixin.py @@ -426,7 +426,12 @@ def _get_document_fiscal_year(self): return fields.Date.to_date(self._get_document_fiscal_date()).year def _get_document_period(self): - return "%02d" % fields.Date.to_date(self._get_document_fiscal_date()).month + month = fields.Date.to_date(self._get_document_fiscal_date()).month + if self.company_id.sii_period == "monthly": + period = "%02d" % month + else: + period = str(int(((month - 1) / 3) + 1)) + "T" + return period def _get_document_serial_number(self): raise NotImplementedError() diff --git a/l10n_es_aeat_sii_oca/views/res_company_view.xml b/l10n_es_aeat_sii_oca/views/res_company_view.xml index 52862bd1e97..49e7d58eaf2 100644 --- a/l10n_es_aeat_sii_oca/views/res_company_view.xml +++ b/l10n_es_aeat_sii_oca/views/res_company_view.xml @@ -17,6 +17,7 @@ +