1 | """ecc12 http://www.sat.gob.mx/EstadoDeCuentaCombustible12""" |
||
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 tasa_o_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 | tasa_o_cuota: Decimal | int, |
||
23 | importe: Decimal | int, |
||
24 | ): |
||
25 | super().__init__({ |
||
26 | 'Impuesto': impuesto, |
||
27 | 'TasaOCuota': tasa_o_cuota, |
||
28 | 'Importe': importe, |
||
29 | }) |
||
30 | |||
31 | |||
32 | View Code Duplication | class ConceptoEstadoDeCuentaCombustible(ScalarMap): |
|
0 ignored issues
–
show
Duplication
introduced
by
![]() |
|||
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 tipo_combustible: Atributo requerido para indicar la clave del tipo de 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 unidad: Atributo condicional para precisar la unidad de medida. |
||
48 | """ |
||
49 | |||
50 | def __init__( |
||
51 | self, |
||
52 | identificador: str, |
||
53 | fecha: datetime, |
||
54 | rfc: str, |
||
55 | clave_estacion: str, |
||
56 | cantidad: Decimal | int, |
||
57 | tipo_combustible: str, |
||
58 | nombre_combustible: str, |
||
59 | folio_operacion: str, |
||
60 | valor_unitario: Decimal | int, |
||
61 | importe: Decimal | int, |
||
62 | traslados: Traslado | dict | Sequence[Traslado | dict], |
||
63 | unidad: str = None, |
||
64 | ): |
||
65 | super().__init__({ |
||
66 | 'Identificador': identificador, |
||
67 | 'Fecha': fecha, |
||
68 | 'Rfc': rfc, |
||
69 | 'ClaveEstacion': clave_estacion, |
||
70 | 'Cantidad': cantidad, |
||
71 | 'TipoCombustible': tipo_combustible, |
||
72 | 'NombreCombustible': nombre_combustible, |
||
73 | 'FolioOperacion': folio_operacion, |
||
74 | 'ValorUnitario': valor_unitario, |
||
75 | 'Importe': importe, |
||
76 | 'Traslados': traslados, |
||
77 | 'Unidad': unidad, |
||
78 | }) |
||
79 | |||
80 | |||
81 | View Code Duplication | class EstadoDeCuentaCombustible(CFDI): |
|
0 ignored issues
–
show
|
|||
82 | """ |
||
83 | 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 |
||
84 | |||
85 | :param numero_de_cuenta: Atributo requerido para expresar el número de cuenta del adquirente del monedero electrónico |
||
86 | :param sub_total: Atributo requerido para representar la suma de todos los importes tipo ConceptoEstadoDeCuentaCombustible. |
||
87 | :param total: Atributo requerido para expresar el monto total de consumo de combustible. |
||
88 | :param conceptos: Nodo requerido para enlistar los conceptos cubiertos por Estado de Cuenta de Combustible. |
||
89 | """ |
||
90 | |||
91 | tag = '{http://www.sat.gob.mx/EstadoDeCuentaCombustible12}EstadoDeCuentaCombustible' |
||
92 | version = '1.2' |
||
93 | tipo_operacion = 'Tarjeta' |
||
94 | |||
95 | def __init__( |
||
96 | self, |
||
97 | numero_de_cuenta: str, |
||
98 | sub_total: Decimal | int, |
||
99 | total: Decimal | int, |
||
100 | conceptos: ConceptoEstadoDeCuentaCombustible | dict | Sequence[ConceptoEstadoDeCuentaCombustible | dict], |
||
101 | ): |
||
102 | super().__init__({ |
||
103 | 'Version': self.version, |
||
104 | 'TipoOperacion': self.tipo_operacion, |
||
105 | 'NumeroDeCuenta': numero_de_cuenta, |
||
106 | 'SubTotal': sub_total, |
||
107 | 'Total': total, |
||
108 | 'Conceptos': conceptos, |
||
109 | }) |
||
110 | |||
111 | |||
112 |