Code Duplication    Length = 35-39 lines in 5 locations

satcfdi/create/cfd/cfdi40.py 1 location

@@ 101-139 (lines=39) @@
98
        })
99
100
101
class Parte(ScalarMap):
102
    """
103
    Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el comprobante fiscal digital por Internet.
104
105
    :param clave_prod_serv: Atributo requerido para expresar la clave del producto o del servicio amparado por la presente parte. Es requerido y deben utilizar las claves del catálogo de productos y servicios, cuando los conceptos que registren por sus actividades correspondan con dichos conceptos.
106
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
107
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
108
    :param no_identificacion: Atributo opcional para expresar el número de serie, número de parte del bien o identificador del producto o del servicio amparado por la presente parte. Opcionalmente se puede utilizar claves del estándar GTIN.
109
    :param unidad: Atributo opcional para precisar la unidad de medida propia de la operación del emisor, aplicable para la cantidad expresada en la parte. La unidad debe corresponder con la descripción de la parte.
110
    :param valor_unitario: Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la presente parte. No se permiten valores negativos.
111
    :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. No se permiten valores negativos.
112
    :param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de mercancías importadas o se trate de operaciones de comercio exterior con bienes o servicios.
113
    """
114
115
    def __init__(
116
            self,
117
            clave_prod_serv: str,
118
            cantidad: Decimal | int,
119
            descripcion: str,
120
            no_identificacion: str = None,
121
            unidad: str = None,
122
            valor_unitario: Decimal | int = None,
123
            importe: Decimal | int = None,
124
            informacion_aduanera: str | Sequence[str] = None,
125
    ):
126
        super().__init__({
127
            'ClaveProdServ': clave_prod_serv,
128
            'Cantidad': cantidad,
129
            'Descripcion': descripcion,
130
            'NoIdentificacion': no_identificacion,
131
            'Unidad': unidad,
132
            'ValorUnitario': valor_unitario,
133
            'Importe': importe,
134
            'InformacionAduanera': informacion_aduanera,
135
        })
136
137
138
class ACuentaTerceros(ScalarMap):
139
    """
140
    Nodo opcional para registrar información del contribuyente Tercero, a cuenta del que se realiza la operación.
141
142
    :param rfc_a_cuenta_terceros: Atributo requerido para registrar la Clave del Registro Federal de Contribuyentes del contribuyente Tercero, a cuenta del que se realiza la operación.

satcfdi/create/cfd/cfdi33.py 1 location

@@ 36-74 (lines=39) @@
33
        })
34
35
36
class Parte(ScalarMap):
37
    """
38
    Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el comprobante fiscal digital por Internet.
39
40
    :param clave_prod_serv: Atributo requerido para expresar la clave del producto o del servicio amparado por la presente parte. Es requerido y deben utilizar las claves del catálogo de productos y servicios, cuando los conceptos que registren por sus actividades correspondan con dichos conceptos.
41
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
42
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
43
    :param no_identificacion: Atributo opcional para expresar el número de serie, número de parte del bien o identificador del producto o del servicio amparado por la presente parte. Opcionalmente se puede utilizar claves del estándar GTIN.
44
    :param unidad: Atributo opcional para precisar la unidad de medida propia de la operación del emisor, aplicable para la cantidad expresada en la parte. La unidad debe corresponder con la descripción de la parte.
45
    :param valor_unitario: Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la presente parte. No se permiten valores negativos.
46
    :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. No se permiten valores negativos.
47
    :param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de mercancías importadas o se trate de operaciones de comercio exterior con bienes o servicios.
48
    """
49
50
    def __init__(
51
            self,
52
            clave_prod_serv: str,
53
            cantidad: Decimal | int,
54
            descripcion: str,
55
            no_identificacion: str = None,
56
            unidad: str = None,
57
            valor_unitario: Decimal | int = None,
58
            importe: Decimal | int = None,
59
            informacion_aduanera: str | Sequence[str] = None,
60
    ):
61
        super().__init__({
62
            'ClaveProdServ': clave_prod_serv,
63
            'Cantidad': cantidad,
64
            'Descripcion': descripcion,
65
            'NoIdentificacion': no_identificacion,
66
            'Unidad': unidad,
67
            'ValorUnitario': valor_unitario,
68
            'Importe': importe,
69
            'InformacionAduanera': informacion_aduanera,
70
        })
71
72
73
class Traslado(ScalarMap):
74
    """
75
    Nodo requerido para la información detallada de un traslado de impuesto específico.
76
77
    :param base: Atributo requerido para señalar la suma de los atributos Base de los conceptos del impuesto trasladado. No se permiten valores negativos.

satcfdi/create/cfd/cfdi32.py 1 location

@@ 182-216 (lines=35) @@
179
        })
180
        
181
182
class Parte(ScalarMap):
183
    """
184
    Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el comprobante fiscal digital a través de Internet
185
    
186
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
187
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
188
    :param unidad: Atributo opcional para precisar la unidad de medida aplicable para la cantidad expresada en la parte.
189
    :param no_identificacion: Atributo opcional para expresar el número de serie del bien o identificador del servicio amparado por la presente parte.
190
    :param valor_unitario: Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la presente parte.
191
    :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.
192
    :param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de partes o componentes importados vendidos de primera mano.
193
    """
194
    
195
    def __init__(
196
            self,
197
            cantidad: Decimal | int,
198
            descripcion: str,
199
            unidad: str = None,
200
            no_identificacion: str = None,
201
            valor_unitario: Decimal | int = None,
202
            importe: Decimal | int = None,
203
            informacion_aduanera: TInformacionAduanera | dict | Sequence[TInformacionAduanera | dict] = None,
204
    ): 
205
        super().__init__({
206
            'Cantidad': cantidad,
207
            'Descripcion': descripcion,
208
            'Unidad': unidad,
209
            'NoIdentificacion': no_identificacion,
210
            'ValorUnitario': valor_unitario,
211
            'Importe': importe,
212
            'InformacionAduanera': informacion_aduanera,
213
        })
214
        
215
216
class Concepto(ScalarMap):
217
    """
218
    Nodo para introducir la información detallada de un bien o servicio amparado en el comprobante.
219
    

satcfdi/create/cfd/terceros11.py 1 location

@@ 73-107 (lines=35) @@
70
        })
71
        
72
73
class Parte(ScalarMap):
74
    """
75
    Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el CFD o CFDI
76
    
77
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
78
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
79
    :param unidad: Atributo opcional para precisar la unidad de medida aplicable para la cantidad expresada en la parte.
80
    :param no_identificacion: Atributo opcional para expresar el número de serie del bien o identificador del servicio amparado por la presente parte.
81
    :param valor_unitario: Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la presente parte.
82
    :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.
83
    :param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de partes o componentes importados vendidos de primera mano.
84
    """
85
    
86
    def __init__(
87
            self,
88
            cantidad: Decimal | int,
89
            descripcion: str,
90
            unidad: str = None,
91
            no_identificacion: str = None,
92
            valor_unitario: Decimal | int = None,
93
            importe: Decimal | int = None,
94
            informacion_aduanera: TInformacionAduanera | dict | Sequence[TInformacionAduanera | dict] = None,
95
    ): 
96
        super().__init__({
97
            'Cantidad': cantidad,
98
            'Descripcion': descripcion,
99
            'Unidad': unidad,
100
            'NoIdentificacion': no_identificacion,
101
            'ValorUnitario': valor_unitario,
102
            'Importe': importe,
103
            'InformacionAduanera': informacion_aduanera,
104
        })
105
        
106
107
class InformacionAduanera(ScalarMap):
108
    """
109
    Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de mercancías importadas.
110
    

satcfdi/create/cfd/ventavehiculos11.py 1 location

@@ 30-64 (lines=35) @@
27
        })
28
        
29
30
class Parte(ScalarMap):
31
    """
32
    Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el CFDI.
33
    
34
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
35
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
36
    :param unidad: Atributo opcional para precisar la unidad de medida aplicable para la cantidad expresada en la parte.
37
    :param no_identificacion: Atributo opcional para expresar el número de serie del bien o identificador del servicio amparado por la presente parte.
38
    :param valor_unitario: Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la presente parte.
39
    :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.
40
    :param informacion_aduanera: Nodo opcional para introducir la información aduanera aplicable cuando se trate de partes o componentes importados vendidos de primera mano.
41
    """
42
    
43
    def __init__(
44
            self,
45
            cantidad: Decimal | int,
46
            descripcion: str,
47
            unidad: str = None,
48
            no_identificacion: str = None,
49
            valor_unitario: Decimal | int = None,
50
            importe: Decimal | int = None,
51
            informacion_aduanera: TInformacionAduanera | dict | Sequence[TInformacionAduanera | dict] = None,
52
    ): 
53
        super().__init__({
54
            'Cantidad': cantidad,
55
            'Descripcion': descripcion,
56
            'Unidad': unidad,
57
            'NoIdentificacion': no_identificacion,
58
            'ValorUnitario': valor_unitario,
59
            'Importe': importe,
60
            'InformacionAduanera': informacion_aduanera,
61
        })
62
        
63
64
class VentaVehiculos(CFDI):
65
    """
66
    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.
67