Source code for satcfdi.create.cfd.spei

"""spei http://www.sat.gob.mx/spei"""
from decimal import Decimal
from datetime import datetime, date, time
from collections.abc import Sequence
from ...cfdi import CFDI
from ...xelement import XElement
from ...utils import ScalarMap


[docs] class Beneficiario(ScalarMap): """ Elemento para describir los datos del beneficiario del SPEI :param banco_receptor: Atributo requerido para expresar el nombre del Banco o Institución Financiera Receptora del SPEI :param nombre: Nombre de la persona física o moral receptora del pago. :param tipo_cuenta: Categoría de la cuenta a la que se efectuará el abono por la transferencia electrónica de fondos. Consultar Catálogo de Tipos de Cuenta. :param cuenta: Esta cuenta deberá estar ligada al campo Tipo de Cuenta del Beneficiario, donde son abonados los fondos. :param rfc: Atributo requerido para la expresión del registro federal de contribuyentes del beneficiario. Se pondrá ND en caso de no estar disponible :param concepto: Descripción del motivo por el que el ordenante hace el pago al beneficiario. :param monto_pago: Atributo obligatorio para la expresión del monto de la operación. Se trata de un entero positivo :param iva: Importes de IVA correspondientes al pago. El monto debe ser mayor a cero y menor o igual a 9,999,999,999,999,999.99 """ def __init__( self, banco_receptor: str, nombre: str, tipo_cuenta: Decimal | int, cuenta: Decimal | int, rfc: str, concepto: str, monto_pago: Decimal | int, iva: Decimal | int = None, ): super().__init__({ 'BancoReceptor': banco_receptor, 'Nombre': nombre, 'TipoCuenta': tipo_cuenta, 'Cuenta': cuenta, 'RFC': rfc, 'Concepto': concepto, 'MontoPago': monto_pago, 'IVA': iva, })
[docs] class Ordenante(ScalarMap): """ Elemento para describir los datos del ordenante del SPEI :param banco_emisor: Atributo requerido para expresar el nombre del Banco o Institución Financiera emisora del SPEI :param nombre: Nombre de la persona física o moral que ordena el envío del pago. :param tipo_cuenta: Categoría de la Cuenta a la que se efectuará el cargo por la transferencia electrónica de fondos. :param cuenta: Cuenta que deberá estar ligada al Tipo de Cuenta del Ordenante, donde serán cargados los fondos. :param rfc: Corresponde al registro federal de contribuyentes o clave única de registro de población del ordenante. Se pondrá ND en caso de no tenerlo disponible """ def __init__( self, banco_emisor: str, nombre: str, tipo_cuenta: Decimal | int, cuenta: Decimal | int, rfc: str, ): super().__init__({ 'BancoEmisor': banco_emisor, 'Nombre': nombre, 'TipoCuenta': tipo_cuenta, 'Cuenta': cuenta, 'RFC': rfc, })
[docs] class SPEI_Tercero(ScalarMap): """ Estándar aplicable a operaciones de SPEI a terceros :param fecha_operacion: Fecha de operación con formato. Debe ser la misma que la fecha de operación del sistema. :param hora: hora del acreditamiento :param clave_spei: Clave SPEI del Participante Emisor. :param sello: Atributo requerido para contener el sello digital del comprobante de pago. El sello deberá ser expresado cómo una cadena de texto en formato Base 64. :param numero_certificado: Atributo requerido para la identificación del certificado de seguridad utilizado para el sello digital. :param cadena_cda: Atributo que contiene la información del CDA fidedigna que la institución ha enviado a Banco de México. :param ordenante: Elemento para describir los datos del ordenante del SPEI :param beneficiario: Elemento para describir los datos del beneficiario del SPEI """ def __init__( self, fecha_operacion: date, hora: time, clave_spei: int, sello: str, numero_certificado: str, cadena_cda: str, ordenante: Ordenante | dict, beneficiario: Beneficiario | dict, ): super().__init__({ 'FechaOperacion': fecha_operacion, 'Hora': hora, 'ClaveSPEI': clave_spei, 'Sello': sello, 'NumeroCertificado': numero_certificado, 'CadenaCDA': cadena_cda, 'Ordenante': ordenante, 'Beneficiario': beneficiario, })
[docs] class ComplementoSPEI(CFDI): """ Complemento para el uso de SPEI Tercero a Tercero :param spei_tercero: Estándar aplicable a operaciones de SPEI a terceros """ tag = '{http://www.sat.gob.mx/spei}Complemento_SPEI' def __init__( self, spei_tercero: SPEI_Tercero | dict | Sequence[SPEI_Tercero | dict], ): super().__init__({ 'SPEI_Tercero': spei_tercero, })