1
|
|
|
"""ventavehiculos http://www.sat.gob.mx/ventavehiculos""" |
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 TInformacionAduanera(ScalarMap): |
11
|
|
|
""" |
12
|
|
|
Tipo definido para expresar información aduanera |
13
|
|
|
|
14
|
|
|
:param numero: Atributo requerido para expresar el número del documento aduanero que ampara la importación del bien. |
15
|
|
|
:param fecha: Atributo requerido para expresar la fecha de expedición del documento aduanero que ampara la importación del bien. |
16
|
|
|
:param aduana: Atributo opcional para precisar la aduana por la que se efectuó la importación del bien. |
17
|
|
|
""" |
18
|
|
|
|
19
|
|
|
def __init__( |
20
|
|
|
self, |
21
|
|
|
numero: str, |
22
|
|
|
fecha: date, |
23
|
|
|
aduana: str = None, |
24
|
|
|
): |
25
|
|
|
super().__init__({ |
26
|
|
|
'Numero': numero, |
27
|
|
|
'Fecha': fecha, |
28
|
|
|
'Aduana': aduana, |
29
|
|
|
}) |
30
|
|
|
|
31
|
|
|
|
32
|
|
View Code Duplication |
class Parte(ScalarMap): |
|
|
|
|
33
|
|
|
""" |
34
|
|
|
Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el CFDI. |
35
|
|
|
|
36
|
|
|
:param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte. |
37
|
|
|
:param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte. |
38
|
|
|
:param unidad: Atributo opcional para precisar la unidad de medida aplicable para la cantidad expresada en la parte. |
39
|
|
|
:param no_identificacion: Atributo opcional para expresar el número de serie del bien o identificador del servicio amparado por la presente parte. |
40
|
|
|
:param valor_unitario: Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la presente parte. |
41
|
|
|
:param importe: Atributo opcional para precisar el importe total de los bienes o servicios de la presente parte. Debe ser equivalente al resultado de multiplicar la cantidad por el valor unitario expresado en la parte. |
42
|
|
|
:param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de partes o componentes importados vendidos de primera mano. |
43
|
|
|
""" |
44
|
|
|
|
45
|
|
|
def __init__( |
46
|
|
|
self, |
47
|
|
|
cantidad: Decimal | int, |
48
|
|
|
descripcion: str, |
49
|
|
|
unidad: str = None, |
50
|
|
|
no_identificacion: str = None, |
51
|
|
|
valor_unitario: Decimal | int = None, |
52
|
|
|
importe: Decimal | int = None, |
53
|
|
|
informacion_aduanera: TInformacionAduanera | dict | Sequence[TInformacionAduanera | dict] = None, |
54
|
|
|
): |
55
|
|
|
super().__init__({ |
56
|
|
|
'Cantidad': cantidad, |
57
|
|
|
'Descripcion': descripcion, |
58
|
|
|
'Unidad': unidad, |
59
|
|
|
'NoIdentificacion': no_identificacion, |
60
|
|
|
'ValorUnitario': valor_unitario, |
61
|
|
|
'Importe': importe, |
62
|
|
|
'InformacionAduanera': informacion_aduanera, |
63
|
|
|
}) |
64
|
|
|
|
65
|
|
|
|
66
|
|
|
class VentaVehiculos(CFDI): |
67
|
|
|
""" |
68
|
|
|
Complemento concepto que permite incorporar a los fabricantes, ensambladores o distribuidores autorizados de automóviles nuevos, así como aquéllos que importen automóviles para permanecer en forma definitiva en la franja fronteriza norte del país y en los Estados de Baja California, Baja California Sur y la región parcial del Estado de Sonora, a un Comprobante Fiscal Digital a través de Internet (CFDI) la clave vehicular que corresponda a la versión enajenada y el número de identificación vehicular que corresponda al vehículo enajenado. |
69
|
|
|
|
70
|
|
|
:param clave_vehicular: Atributo requerido para precisar Clave vehicular que corresponda a la versión del vehículo enajenado. |
71
|
|
|
:param niv: Atributo requerido para precisar el número de identificación vehicular que corresponda al vehículo enajenado. |
72
|
|
|
:param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de mercancías importadas. |
73
|
|
|
:param parte: Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el CFDI. |
74
|
|
|
""" |
75
|
|
|
|
76
|
|
|
tag = '{http://www.sat.gob.mx/ventavehiculos}VentaVehiculos' |
77
|
|
|
version = '1.1' |
78
|
|
|
|
79
|
|
|
def __init__( |
80
|
|
|
self, |
81
|
|
|
clave_vehicular: str, |
82
|
|
|
niv: str, |
83
|
|
|
informacion_aduanera: TInformacionAduanera | dict | Sequence[TInformacionAduanera | dict] = None, |
84
|
|
|
parte: Parte | dict | Sequence[Parte | dict] = None, |
85
|
|
|
): |
86
|
|
|
super().__init__({ |
87
|
|
|
'Version': self.version, |
88
|
|
|
'ClaveVehicular': clave_vehicular, |
89
|
|
|
'Niv': niv, |
90
|
|
|
'InformacionAduanera': informacion_aduanera, |
91
|
|
|
'Parte': parte, |
92
|
|
|
}) |
93
|
|
|
|
94
|
|
|
|
95
|
|
|
|