Code Duplication    Length = 35-39 lines in 5 locations

satcfdi/create/cfd/cfdi32.py 1 location

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

satcfdi/create/cfd/terceros11.py 1 location

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

satcfdi/create/cfd/ventavehiculos11.py 1 location

@@ 32-66 (lines=35) @@
29
        })
30
        
31
32
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
    

satcfdi/create/cfd/cfdi33.py 1 location

@@ 30-68 (lines=39) @@
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 comprobante fiscal digital por Internet.
33
34
    :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.
35
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
36
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
37
    :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.
38
    :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.
39
    :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.
40
    :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.
41
    :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.
42
    """
43
44
    def __init__(
45
            self,
46
            clave_prod_serv: str,
47
            cantidad: Decimal | int,
48
            descripcion: str,
49
            no_identificacion: str = None,
50
            unidad: str = None,
51
            valor_unitario: Decimal | int = None,
52
            importe: Decimal | int = None,
53
            informacion_aduanera: str | Sequence[str] = None,
54
    ):
55
        super().__init__({
56
            'ClaveProdServ': clave_prod_serv,
57
            'Cantidad': cantidad,
58
            'Descripcion': descripcion,
59
            'NoIdentificacion': no_identificacion,
60
            'Unidad': unidad,
61
            'ValorUnitario': valor_unitario,
62
            'Importe': importe,
63
            'InformacionAduanera': informacion_aduanera,
64
        })
65
66
67
def _find_impuesto(impuesto):
68
    try:
69
        return CatImpuesto[impuesto]
70
    except KeyError:
71
        return impuesto

satcfdi/create/cfd/cfdi40.py 1 location

@@ 58-96 (lines=39) @@
55
        })
56
57
58
class Parte(ScalarMap):
59
    """
60
    Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el comprobante fiscal digital por Internet.
61
62
    :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.
63
    :param cantidad: Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por la presente parte.
64
    :param descripcion: Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente parte.
65
    :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.
66
    :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.
67
    :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.
68
    :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.
69
    :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.
70
    """
71
72
    def __init__(
73
            self,
74
            clave_prod_serv: str,
75
            cantidad: Decimal | int,
76
            descripcion: str,
77
            no_identificacion: str = None,
78
            unidad: str = None,
79
            valor_unitario: Decimal | int = None,
80
            importe: Decimal | int = None,
81
            informacion_aduanera: str | Sequence[str] = None,
82
    ):
83
        super().__init__({
84
            'ClaveProdServ': clave_prod_serv,
85
            'Cantidad': cantidad,
86
            'Descripcion': descripcion,
87
            'NoIdentificacion': no_identificacion,
88
            'Unidad': unidad,
89
            'ValorUnitario': valor_unitario,
90
            'Importe': importe,
91
            'InformacionAduanera': informacion_aduanera,
92
        })
93
94
95
class ACuentaTerceros(ScalarMap):
96
    """
97
    Nodo opcional para registrar información del contribuyente Tercero, a cuenta del que se realiza la operación.
98
99
    :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.