from decimal import Decimal
from datetime import datetime, date, time
from collections.abc import Sequence
from ...cfdi import CFDI, XElement
[docs]class ComisionDelServicio(XElement):
"""
http://www.sat.gob.mx/esquemas/retencionpago/1/PlataformasTecnologicas10
Nodo condicional para detallar la información de la comisión pagada por el uso de plataformas tecnológicas por cada servicio prestado o enajenación relacionado.
"""
def __init__(
self,
importe: Decimal | int,
base: Decimal | int = None,
porcentaje: Decimal | int = None,
):
"""
Nodo condicional para detallar la información de la comisión pagada por el uso de plataformas tecnológicas por cada servicio prestado o enajenación relacionado.
:param importe: Atributo requerido para detallar el valor del importe cobrado por la comisión del uso del servicio de las plataformas tecnológicas.
:param base: Atributo opcional para registrar la base de la comisión del servicio de la plataforma, pagadas por personas físicas o personas morales utilizando plataformas tecnológicas.
:param porcentaje: Atributo opcional para detallar el valor del porcentaje cobrado por la comisión del uso del servicio de las plataformas tecnológicas.
"""
super().__init__({
'Importe': importe,
'Base': base,
'Porcentaje': porcentaje,
})
[docs]class ContribucionGubernamental(XElement):
"""
http://www.sat.gob.mx/esquemas/retencionpago/1/PlataformasTecnologicas10
Nodo opcional para detallar la información de las contribuciones gubernamentales pagadas por los servicios realizados por personas físicas utilizando plataformas tecnológicas; por ejemplo, impuesto sobre hospedaje.
"""
def __init__(
self,
imp_contrib: Decimal | int,
entidad_donde_paga_la_contribucion: str,
):
"""
Nodo opcional para detallar la información de las contribuciones gubernamentales pagadas por los servicios realizados por personas físicas utilizando plataformas tecnológicas; por ejemplo, impuesto sobre hospedaje.
:param imp_contrib: Atributo requerido para registrar el importe de la contribución gubernamental pagada por los servicios realizados por personas físicas utilizando plataformas tecnológicas.
:param entidad_donde_paga_la_contribucion: Atributo requerido para registrar la clave de la Entidad Federativa donde se efectúa el pago de la contribución gubernamental.
"""
super().__init__({
'ImpContrib': imp_contrib,
'EntidadDondePagaLaContribucion': entidad_donde_paga_la_contribucion,
})
[docs]class ImpuestosTrasladadosdelServicio(XElement):
"""
http://www.sat.gob.mx/esquemas/retencionpago/1/PlataformasTecnologicas10
Nodo condicional para detallar la información de los impuestos trasladados respecto de las operaciones realizadas por personas físicas o personas morales utilizando plataformas tecnológicas.
"""
tipo_factor = 'Tasa'
def __init__(
self,
base: Decimal | int,
impuesto: str,
tasa_cuota: Decimal | int,
importe: Decimal | int,
):
"""
Nodo condicional para detallar la información de los impuestos trasladados respecto de las operaciones realizadas por personas físicas o personas morales utilizando plataformas tecnológicas.
:param base: Atributo requerido para señalar la base para el cálculo del impuesto, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes. No se permiten valores negativos.
:param impuesto: Atributo requerido para señalar la clave del tipo de impuesto trasladado aplicable al bien o servicio.
:param tasa_cuota: Atributo requerido para señalar el valor de la tasa o cuota del impuesto que se traslada para el bien o servicio.
:param importe: Atributo requerido para señalar el importe del impuesto trasladado que aplica al bien o servicio. No se permiten valores negativos.
"""
super().__init__({
'Base': base,
'Impuesto': impuesto,
'TipoFactor': self.tipo_factor,
'TasaCuota': tasa_cuota,
'Importe': importe,
})
[docs]class DetallesDelServicio(XElement):
"""
http://www.sat.gob.mx/esquemas/retencionpago/1/PlataformasTecnologicas10
Nodo requerido para detallar la información de la enajenación de bienes y los tipos de servicios realizadas por personas físicas o personas morales utilizando plataformas tecnológicas.
"""
def __init__(
self,
forma_pago_serv: str,
tipo_de_serv: str,
fecha_serv: date,
precio_serv_sin_iva: Decimal | int,
sub_tip_serv: str = None,
rfc_tercero_autorizado: str = None,
impuestos_trasladadosdel_servicio: ImpuestosTrasladadosdelServicio | dict = None,
contribucion_gubernamental: ContribucionGubernamental | dict = None,
comision_del_servicio: ComisionDelServicio | dict = None,
):
"""
Nodo requerido para detallar la información de la enajenación de bienes y los tipos de servicios realizadas por personas físicas o personas morales utilizando plataformas tecnológicas.
:param forma_pago_serv: Atributo requerido para expresar la clave de la forma de pago con la que se liquida el servicio prestado o la enajenación de bienes.
:param tipo_de_serv: Atributo requerido para expresar la clave del tipo de servicio prestado o la enajenación de bienes, según corresponda.
:param fecha_serv: Atributo requerido para expresar la fecha en la que el cliente paga el servicio o el bien.
:param precio_serv_sin_iva: Atributo requerido para expresar el precio del bien o servicio (sin incluir IVA).
:param sub_tip_serv: Atributo condicional para identificar el subtipo del servicio prestado.
:param rfc_tercero_autorizado: Atributo opcional para registrar el RFC del tercero autorizado como personal de apoyo, por quien está registrado en la plataforma tecnológica para prestar servicios o en su caso, enajenar bienes.
:param impuestos_trasladadosdel_servicio: Nodo condicional para detallar la información de los impuestos trasladados respecto de las operaciones realizadas por personas físicas o personas morales utilizando plataformas tecnológicas.
:param contribucion_gubernamental: Nodo opcional para detallar la información de las contribuciones gubernamentales pagadas por los servicios realizados por personas físicas utilizando plataformas tecnológicas; por ejemplo, impuesto sobre hospedaje.
:param comision_del_servicio: Nodo condicional para detallar la información de la comisión pagada por el uso de plataformas tecnológicas por cada servicio prestado o enajenación relacionado.
"""
super().__init__({
'FormaPagoServ': forma_pago_serv,
'TipoDeServ': tipo_de_serv,
'FechaServ': fecha_serv,
'PrecioServSinIVA': precio_serv_sin_iva,
'SubTipServ': sub_tip_serv,
'RFCTerceroAutorizado': rfc_tercero_autorizado,
'ImpuestosTrasladadosdelServicio': impuestos_trasladadosdel_servicio,
'ContribucionGubernamental': contribucion_gubernamental,
'ComisionDelServicio': comision_del_servicio,
})