Revert "[FIX] l10n_es_edi_tbai_reagyp_recibidas: fix chaining within same invoice series"

This reverts commit 8bf9779d98.
This commit is contained in:
GitHub Copilot 2026-07-31 19:11:49 +02:00
parent f14aab003a
commit 73660ee226
3 changed files with 0 additions and 86 deletions

View file

@ -1,3 +1 @@
from . import account_move # noqa: F401 from . import account_move # noqa: F401
from . import res_company # noqa: F401
from . import l10n_es_edi_tbai_document # noqa: F401

View file

@ -1,62 +0,0 @@
# Copyright 2026 - Today Criptomart
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import re
from odoo import models
class L10nEsEdiTbaiDocument(models.Model):
_inherit = "l10n_es_edi_tbai.document"
def _get_sale_values(self, values):
"""Override to ensure chain links only within the same invoice series."""
sale_values = super()._get_sale_values(values)
# Replace chain_prev_document with one from the same series
chain_prev_document = sale_values.get("chain_prev_document")
if chain_prev_document:
current_series = self._get_series_prefix(self.name)
prev_series = self._get_series_prefix(chain_prev_document.name)
# If series mismatch OR previous doc has no valid XML, find correct one
if (
current_series != prev_series
or not chain_prev_document.xml_attachment_id
):
same_series_doc = self._get_last_chained_document_by_series(
current_series
)
sale_values["chain_prev_document"] = same_series_doc
return sale_values
@staticmethod
def _get_series_prefix(doc_name):
"""Extract series prefix from document name (e.g., 'INV/2026/' from 'INV/2026/01248')."""
if not doc_name:
return ""
# Everything before the first digit
match = re.search(r"\d+", doc_name)
if match:
return doc_name[: match.start()].rstrip("/")
return doc_name
def _get_last_chained_document_by_series(self, series_prefix):
"""Find the last valid chained document matching a specific series prefix."""
domain = [
("chain_index", "!=", 0),
("company_id", "=", self.company_id.id),
("is_cancel", "=", False),
("state", "=", "accepted"), # Must be accepted in chain
]
docs = self.search(domain, order="chain_index desc")
# Return the first doc matching series that has valid XML
for doc in docs:
if (
self._get_series_prefix(doc.name) == series_prefix
and doc.xml_attachment_id
):
return doc
return self.env["l10n_es_edi_tbai.document"]

View file

@ -1,22 +0,0 @@
# Copyright 2026 - Today Criptomart
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class ResCompany(models.Model):
_inherit = "res.company"
def _get_l10n_es_tbai_last_chained_document(self):
"""
Returns the last tbai document posted to this company's chain.
Each invoice series has its own independent chain in TicketBAI.
Filters out cancellation documents to skip cancelled invoices.
"""
domain = [
("chain_index", "!=", 0),
("company_id", "=", self.id),
("is_cancel", "=", False),
]
return self.env["l10n_es_edi_tbai.document"].search(
domain, limit=1, order="chain_index desc"
)