Issues (158)

satcfdi/create/cfd/ecc11.py (2 issues)

1
"""ecc11 http://www.sat.gob.mx/EstadoDeCuentaCombustible"""
2
from decimal import Decimal
3
from datetime import datetime, date, time
4
from collections.abc import Sequence
5
from ...cfdi import CFDI
6
from ...xelement import XElement
7
from ...utils import ScalarMap
8
9
10
class Traslado(ScalarMap):
11
    """
12
    Nodo para la definición de información detallada de un traslado de impuesto específico
13
    
14
    :param impuesto: Atributo requerido para definir el tipo de impuesto trasladado.
15
    :param tasao_cuota: Atributo requerido para señalar la tasa o la cuota del impuesto que se traslada por cada concepto amparado en el comprobante. Cuando se registre un porcentaje, por ejemplo 16%, debe expresarse como 0.16 y no como 16.00
16
    :param importe: Atributo requerido para definir el importe o monto del impuesto trasladado.
17
    """
18
    
19
    def __init__(
20
            self,
21
            impuesto: str,
22
            tasao_cuota: Decimal | int,
23
            importe: Decimal | int,
24
    ): 
25
        super().__init__({
26
            'Impuesto': impuesto,
27
            'TasaoCuota': tasao_cuota,
28
            'Importe': importe,
29
        })
30
        
31
32 View Code Duplication
class ConceptoEstadoDeCuentaCombustible(ScalarMap):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
33
    """
34
    Nodo requerido para la expresión de una transacción a ser reportada en el estado de cuenta del proveedor de monedero electrónico para operaciones de compra de combustibles.
35
    
36
    :param identificador: Atributo requerido para la expresión del identificador o número del monedero electrónico.
37
    :param fecha: Atributo requerido para la expresión de la Fecha y hora de expedición de la operación reportada. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la especificación ISO 8601.
38
    :param rfc: Atributo requerido del RFC del enajenante del combustible.
39
    :param clave_estacion: Atributo requerido para expresar la clave de cliente de la estación de servicio, a 10 caracteres.
40
    :param cantidad: Atributo requerido para definir el volumen de combustible adquirido.
41
    :param no_identificacion: Atributo requerido para indicar la clave del producto del combustible.
42
    :param nombre_combustible: Atributo requerido para expresar el nombre del combustible adquirido.
43
    :param folio_operacion: Atributo requerido para referir el número de folio de cada operación realizada por cada monedero electrónico.
44
    :param valor_unitario: Atributo requerido para definir el precio unitario del combustible adquirido.
45
    :param importe: Atributo requerido para definir el monto total de consumo de combustible. Debe ser equivalente al resultado de multiplicar la cantidad por el valor unitario, redondeado a centésimas.
46
    :param traslados: Nodo requerido para enlistar los impuestos trasladados aplicables de combustibles.
47
    :param tar: Atributo condicional para expresar la clave de la Terminal de Almacenamiento y Reparto (CVE TAR), conforme al catálogo publicado en la página de Internet del SAT, mismo que servirá para identificar la cuota por litro conforme a las tablas que publique la Secretaría de Hacienda y Crédito Público para determinar el monto del estímulo fiscal.
48
    :param unidad: Atributo condicional para precisar la unidad de medida.
49
    """
50
    
51
    def __init__(
52
            self,
53
            identificador: str,
54
            fecha: datetime,
55
            rfc: str,
56
            clave_estacion: str,
57
            cantidad: Decimal | int,
58
            no_identificacion: str,
59
            nombre_combustible: str,
60
            folio_operacion: str,
61
            valor_unitario: Decimal | int,
62
            importe: Decimal | int,
63
            traslados: Traslado | dict | Sequence[Traslado | dict],
64
            tar: str = None,
65
            unidad: str = None,
66
    ): 
67
        super().__init__({
68
            'Identificador': identificador,
69
            'Fecha': fecha,
70
            'Rfc': rfc,
71
            'ClaveEstacion': clave_estacion,
72
            'Cantidad': cantidad,
73
            'NoIdentificacion': no_identificacion,
74
            'NombreCombustible': nombre_combustible,
75
            'FolioOperacion': folio_operacion,
76
            'ValorUnitario': valor_unitario,
77
            'Importe': importe,
78
            'Traslados': traslados,
79
            'TAR': tar,
80
            'Unidad': unidad,
81
        })
82
        
83
84 View Code Duplication
class EstadoDeCuentaCombustible(CFDI):
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
85
    """
86
    Complemento para el Comprobante Fiscal Digital por Internet (CFDI) para integrar la información aplicable al estado de cuenta emitido por un prestador de servicios de monedero electrónico
87
    
88
    :param numero_de_cuenta: Atributo requerido para expresar el número de cuenta del adquirente del monedero electrónico
89
    :param sub_total: Atributo requerido para representar la suma de todos los importes tipo ConceptoEstadoDeCuentaCombustible.
90
    :param total: Atributo requerido para expresar el monto total de consumo de combustible.
91
    :param conceptos: Nodo requerido para enlistar los conceptos cubiertos por Estado de Cuenta de Combustible.
92
    """
93
    
94
    tag = '{http://www.sat.gob.mx/EstadoDeCuentaCombustible}EstadoDeCuentaCombustible'
95
    version = '1.1'
96
    tipo_operacion = 'Tarjeta'
97
    
98
    def __init__(
99
            self,
100
            numero_de_cuenta: str,
101
            sub_total: Decimal | int,
102
            total: Decimal | int,
103
            conceptos: ConceptoEstadoDeCuentaCombustible | dict | Sequence[ConceptoEstadoDeCuentaCombustible | dict],
104
    ): 
105
        super().__init__({
106
            'Version': self.version,
107
            'TipoOperacion': self.tipo_operacion,
108
            'NumeroDeCuenta': numero_de_cuenta,
109
            'SubTotal': sub_total,
110
            'Total': total,
111
            'Conceptos': conceptos,
112
        })
113
        
114
115