"""tdr http://www.uif.shcp.gob.mx/recepcion/tdr"""
from decimal import Decimal
from datetime import datetime, date, time
from collections.abc import Sequence
from ... import CFDI, XElement, ScalarMap
[docs]class DatosLiquidacionType(ScalarMap):
"""
:param moneda:
:param monto_operacion:
"""
def __init__(
self,
moneda: str,
monto_operacion: str,
):
super().__init__({
'Moneda': moneda,
'MontoOperacion': monto_operacion,
})
[docs]class DatosOperacionType(ScalarMap):
"""
:param fecha_operacion:
:param codigo_postal:
:param tipo_operacion:
:param cantidad:
:param datos_liquidacion:
"""
def __init__(
self,
fecha_operacion: date,
codigo_postal: str,
tipo_operacion: str,
cantidad: str,
datos_liquidacion: DatosLiquidacionType | dict | Sequence[DatosLiquidacionType | dict],
):
super().__init__({
'FechaOperacion': fecha_operacion,
'CodigoPostal': codigo_postal,
'TipoOperacion': tipo_operacion,
'Cantidad': cantidad,
'DatosLiquidacion': datos_liquidacion,
})
[docs]class DetalleOperacionesType(ScalarMap):
"""
:param datos_operacion:
"""
def __init__(
self,
datos_operacion: DatosOperacionType | dict | Sequence[DatosOperacionType | dict],
):
super().__init__({
'DatosOperacion': datos_operacion,
})
[docs]class FideicomisoSimpleType(ScalarMap):
"""
:param denominacion_razon:
:param rfc:
:param identificador_fideicomiso:
"""
def __init__(
self,
denominacion_razon: str,
rfc: str = None,
identificador_fideicomiso: str = None,
):
super().__init__({
'DenominacionRazon': denominacion_razon,
'Rfc': rfc,
'IdentificadorFideicomiso': identificador_fideicomiso,
})
[docs]class PersonaMoralSimpleType(ScalarMap):
"""
:param denominacion_razon:
:param fecha_constitucion:
:param rfc:
:param pais_nacionalidad:
"""
def __init__(
self,
denominacion_razon: str,
fecha_constitucion: date = None,
rfc: str = None,
pais_nacionalidad: str = None,
):
super().__init__({
'DenominacionRazon': denominacion_razon,
'FechaConstitucion': fecha_constitucion,
'Rfc': rfc,
'PaisNacionalidad': pais_nacionalidad,
})
[docs]class PersonaFisicaSimpleType(ScalarMap):
"""
:param nombre:
:param apellido_paterno:
:param apellido_materno:
:param fecha_nacimiento:
:param rfc:
:param curp:
:param pais_nacionalidad:
"""
def __init__(
self,
nombre: str,
apellido_paterno: str,
apellido_materno: str,
fecha_nacimiento: date = None,
rfc: str = None,
curp: str = None,
pais_nacionalidad: str = None,
):
super().__init__({
'Nombre': nombre,
'ApellidoPaterno': apellido_paterno,
'ApellidoMaterno': apellido_materno,
'FechaNacimiento': fecha_nacimiento,
'Rfc': rfc,
'Curp': curp,
'PaisNacionalidad': pais_nacionalidad,
})
[docs]class TipoPersonaSimpleType(ScalarMap):
"""
:param persona_fisica:
:param persona_moral:
:param fideicomiso:
"""
def __init__(
self,
persona_fisica: PersonaFisicaSimpleType | dict = None,
persona_moral: PersonaMoralSimpleType | dict = None,
fideicomiso: FideicomisoSimpleType | dict = None,
):
super().__init__({
'PersonaFisica': persona_fisica,
'PersonaMoral': persona_moral,
'Fideicomiso': fideicomiso,
})
[docs]class DuenoBeneficiarioType(ScalarMap):
"""
:param tipo_persona:
"""
def __init__(
self,
tipo_persona: TipoPersonaSimpleType | dict,
):
super().__init__({
'TipoPersona': tipo_persona,
})
[docs]class TelefonoType(ScalarMap):
"""
:param clave_pais:
:param numero_telefono:
:param correo_electronico:
"""
def __init__(
self,
clave_pais: str = None,
numero_telefono: str = None,
correo_electronico: str = None,
):
super().__init__({
'ClavePais': clave_pais,
'NumeroTelefono': numero_telefono,
'CorreoElectronico': correo_electronico,
})
[docs]class NacionalType(ScalarMap):
"""
:param colonia:
:param calle:
:param numero_exterior:
:param codigo_postal:
:param numero_interior:
"""
def __init__(
self,
colonia: str,
calle: str,
numero_exterior: str,
codigo_postal: str,
numero_interior: str = None,
):
super().__init__({
'Colonia': colonia,
'Calle': calle,
'NumeroExterior': numero_exterior,
'CodigoPostal': codigo_postal,
'NumeroInterior': numero_interior,
})
[docs]class TipoDomicilioType(ScalarMap):
"""
:param nacional:
:param extranjero:
"""
def __init__(
self,
nacional: NacionalType | dict = None,
extranjero: ExtranjeroType | dict = None,
):
super().__init__({
'Nacional': nacional,
'Extranjero': extranjero,
})
[docs]class RepresentanteApoderadoType(ScalarMap):
"""
:param nombre:
:param apellido_paterno:
:param apellido_materno:
:param fecha_nacimiento:
:param rfc:
:param curp:
"""
def __init__(
self,
nombre: str,
apellido_paterno: str,
apellido_materno: str,
fecha_nacimiento: date = None,
rfc: str = None,
curp: str = None,
):
super().__init__({
'Nombre': nombre,
'ApellidoPaterno': apellido_paterno,
'ApellidoMaterno': apellido_materno,
'FechaNacimiento': fecha_nacimiento,
'Rfc': rfc,
'Curp': curp,
})
[docs]class FideicomisoType(ScalarMap):
"""
:param denominacion_razon:
:param apoderado_delegado:
:param rfc:
:param identificador_fideicomiso:
"""
def __init__(
self,
denominacion_razon: str,
apoderado_delegado: RepresentanteApoderadoType | dict,
rfc: str = None,
identificador_fideicomiso: str = None,
):
super().__init__({
'DenominacionRazon': denominacion_razon,
'ApoderadoDelegado': apoderado_delegado,
'Rfc': rfc,
'IdentificadorFideicomiso': identificador_fideicomiso,
})
[docs]class PersonaMoralType(ScalarMap):
"""
:param denominacion_razon:
:param pais_nacionalidad:
:param giro_mercantil:
:param representante_apoderado:
:param fecha_constitucion:
:param rfc:
"""
def __init__(
self,
denominacion_razon: str,
pais_nacionalidad: str,
giro_mercantil: str,
representante_apoderado: RepresentanteApoderadoType | dict,
fecha_constitucion: date = None,
rfc: str = None,
):
super().__init__({
'DenominacionRazon': denominacion_razon,
'PaisNacionalidad': pais_nacionalidad,
'GiroMercantil': giro_mercantil,
'RepresentanteApoderado': representante_apoderado,
'FechaConstitucion': fecha_constitucion,
'Rfc': rfc,
})
[docs]class PersonaFisicaType(ScalarMap):
"""
:param nombre:
:param apellido_paterno:
:param apellido_materno:
:param pais_nacionalidad:
:param actividad_economica:
:param fecha_nacimiento:
:param rfc:
:param curp:
"""
def __init__(
self,
nombre: str,
apellido_paterno: str,
apellido_materno: str,
pais_nacionalidad: str,
actividad_economica: str,
fecha_nacimiento: date = None,
rfc: str = None,
curp: str = None,
):
super().__init__({
'Nombre': nombre,
'ApellidoPaterno': apellido_paterno,
'ApellidoMaterno': apellido_materno,
'PaisNacionalidad': pais_nacionalidad,
'ActividadEconomica': actividad_economica,
'FechaNacimiento': fecha_nacimiento,
'Rfc': rfc,
'Curp': curp,
})
[docs]class TipoPersonaType(ScalarMap):
"""
:param persona_fisica:
:param persona_moral:
:param fideicomiso:
"""
def __init__(
self,
persona_fisica: PersonaFisicaType | dict = None,
persona_moral: PersonaMoralType | dict = None,
fideicomiso: FideicomisoType | dict = None,
):
super().__init__({
'PersonaFisica': persona_fisica,
'PersonaMoral': persona_moral,
'Fideicomiso': fideicomiso,
})
[docs]class PersonaAvisoType(ScalarMap):
"""
:param tipo_persona:
:param tipo_domicilio:
:param telefono:
"""
def __init__(
self,
tipo_persona: TipoPersonaType | dict,
tipo_domicilio: TipoDomicilioType | dict = None,
telefono: TelefonoType | dict = None,
):
super().__init__({
'TipoPersona': tipo_persona,
'TipoDomicilio': tipo_domicilio,
'Telefono': telefono,
})
[docs]class AlertaType(ScalarMap):
"""
:param tipo_alerta:
:param descripcion_alerta:
"""
def __init__(
self,
tipo_alerta: str,
descripcion_alerta: str = None,
):
super().__init__({
'TipoAlerta': tipo_alerta,
'DescripcionAlerta': descripcion_alerta,
})
[docs]class ModificatorioType(ScalarMap):
"""
:param folio_modificacion:
:param descripcion_modificacion:
"""
def __init__(
self,
folio_modificacion: str,
descripcion_modificacion: str,
):
super().__init__({
'FolioModificacion': folio_modificacion,
'DescripcionModificacion': descripcion_modificacion,
})
[docs]class AvisoType(ScalarMap):
"""
:param referencia_aviso:
:param prioridad:
:param alerta:
:param persona_aviso:
:param detalle_operaciones:
:param modificatorio:
:param dueno_beneficiario:
"""
def __init__(
self,
referencia_aviso: str,
prioridad: str,
alerta: AlertaType | dict,
persona_aviso: PersonaAvisoType | dict | Sequence[PersonaAvisoType | dict],
detalle_operaciones: DetalleOperacionesType | dict,
modificatorio: ModificatorioType | dict = None,
dueno_beneficiario: DuenoBeneficiarioType | dict | Sequence[DuenoBeneficiarioType | dict] = None,
):
super().__init__({
'ReferenciaAviso': referencia_aviso,
'Prioridad': prioridad,
'Alerta': alerta,
'PersonaAviso': persona_aviso,
'DetalleOperaciones': detalle_operaciones,
'Modificatorio': modificatorio,
'DuenoBeneficiario': dueno_beneficiario,
})
[docs]class SujetoObligadoType(ScalarMap):
"""
:param clave_sujeto_obligado:
:param clave_actividad:
:param clave_entidad_colegiada:
:param exento:
"""
def __init__(
self,
clave_sujeto_obligado: str,
clave_actividad: str,
clave_entidad_colegiada: str = None,
exento: str = None,
):
super().__init__({
'ClaveSujetoObligado': clave_sujeto_obligado,
'ClaveActividad': clave_actividad,
'ClaveEntidadColegiada': clave_entidad_colegiada,
'Exento': exento,
})
[docs]class ArchivoType(ScalarMap):
"""
:param informe:
"""
def __init__(
self,
informe: InformeType | dict | Sequence[InformeType | dict],
):
super().__init__({
'Informe': informe,
})
[docs]class Archivo(ArchivoType, XElement):
tag = '{http://www.uif.shcp.gob.mx/recepcion/tdr}archivo'