from __future__ import annotations

"""DSCons Enterprise E-Invoice Processing Engine & Production Sync Connectors.
Compliant with Decree 123/2020/NĐ-CP, Circular 78/2021/TT-BTC & MISA meInvoice XML Standard.
Zero Mocking - Real Production Security & Single Source of Truth.
"""


import logging

from app.core.postgres.base import BasePostgresClient

from .analytics import InvoiceAnalyticsMixin
from .common import (
    clean_signer_info,
)
from .email_sync import InvoiceEmailSyncMixin
from .gdt_auth import InvoiceGdtAuthMixin
from .gdt_sync import InvoiceGdtSyncMixin
from .metadata_classifier import InvoiceMetadataMixin
from .misa_exporter import InvoiceMisaExportMixin
from .query_repository import InvoiceQueryMixin
from .storage_repository import InvoiceStorageMixin
from .vat_schedule import InvoiceVatScheduleMixin
from .xml_parser import InvoiceXmlParserMixin
from .analytics_3way_matching import Invoice3WayMatchingMixin

logger = logging.getLogger(__name__)


class InvoiceProcessingService(
    BasePostgresClient,
    InvoiceMetadataMixin,
    InvoiceXmlParserMixin,
    InvoiceStorageMixin,
    InvoiceQueryMixin,
    InvoiceGdtAuthMixin,
    InvoiceGdtSyncMixin,
    InvoiceEmailSyncMixin,
    InvoiceAnalyticsMixin,
    Invoice3WayMatchingMixin,
    InvoiceVatScheduleMixin,
    InvoiceMisaExportMixin,
):
    """Core Service for E-Invoice Parsing, Verification, Deduplication, and Real Production Connectors."""

    @staticmethod
    def _clean_signer_info(
        signed_by: str | None, signed_at: str | None, seller_name: str | None
    ) -> tuple[str, str]:
        return clean_signer_info(signed_by, signed_at, seller_name)
