Skip to main content

CFDI's expedidos por el SAT (México) de XML a objetos python

Project description

CFDI a JSON (json_cfdi)

Empezando

Desde PYPI

❯ pipenv install json_cfdi

Desde el código fuente

❯  git clone https://gitlab.com/workyhr/json_cfdi
❯  cd json_cfdi
❯  python3 setup.py install

Testing (Instalar y lanzar ambiente)

# instalar virtualenv python -m pip install virtualenv

# crear ambiente virtualenv .env

# activar ambiente source .env/bin/activate

# instalar requerimientos python -m pip install -r requirements.txt

# levantar cd json_cfdi

# lanzar tests pytest tests/

Descripción

Una forma consistente dev-friendly de procesar archivos xml y consultarlos en modelos python manejables y consistentes.

  • Sin validaciones.
  • Sin descarga adicional de catálogos del SAT (lo cual lo hace muy lento).
  • Rápido.
  • Fácil de usar.

Basado en la lista de CFDI y complementos del sat:

Se hicieron tests haciendo uso de estos recursos, muchas gracias :)

Versiones de CFDI

Uso

Instalación

pip install json_cfdi

Uso

cfdi.to_model()

Util para procesar los xmls como objetos python.

from json_cfdi import CFDI

with open("nomina-john.xml") as file:
    cfdi = CFDI(file)
    model = cfdi.to_model()  # acceder al contenido en forma de objeto python
    model.version  # '4.0'
    model.receptor.nombre  # John Doe    
    model.emisor.nombre  # Company SA de CV

cfdi.to_json()

from json_cfdi import CFDI

with open("nomina-john.xml") as file:
    cfdi = CFDI(file)
    json_obj = cfdi.to_json()  # acceder al contenido en forma de objeto python
    type(json_obj)  # <str>

cfdi.to_dict()

Espacialmente útil para microservicios.

from json_cfdi import CFDI

with open("nomina-john.xml") as file:
    cfdi = CFDI(file)
    dict_obj = cfdi.to_dict()  # acceder al contenido en forma de objeto python
    dict_obj.get("version")  # '4.0'
    dict_obj.get("receptor").get("nombre")  # John Doe    
    dict_obj.get("emisor").get("nombre")  # Company SA de CV

cfdi.to_raw()

Util para extraer la información tal cual se obtiene de la interpretación de los XSD's.

from json_cfdi import CFDI

with open("nomina-john.xml") as file:
    cfdi = CFDI(file)
    raw_obj = cfdi.to_raw()  # acceder al contenido en forma de objeto python
    raw_obj.get("attributes").get("Version")  # '4.0'
    raw_obj.get("children")[0].get("Receptor").get("Nombre")  # John Doe    

Personalización

Para leer correctamente el archivo es necesario cargar los XSD adecuados al tipo de complementos que contenga el CFDI.

from json_cfdi import CFDI
from json_cfdi.wrappers.locations import nomina12b
from json_cfdi.wrappers.schemas import get_context

context = get_context()
context["locations"] += [nomina12b]  # cargar el contexto de nomina1.2

# version 3.3
with open("cfdi33-nomina-john.xml") as file:
    cfdi33 = CFDI(file, context=context)

# version 4.0
with open("cfdi40-nomina-john.xml") as file:
    cfdi40 = CFDI(file, version=4, context=context)

Si necesitar cargar XSDs que no tengan soporte por json_cfdi siempre puedes cargar tus propios archivos:

from json_cfdi import CFDI
from json_cfdi.wrappers.schemas import get_context

context = get_context()
context["locations"] += [
  ("http://www.sat.gob.mx/nomina12", "path/a/nomina12.xsd"),
  ...
]

with open("nomina-john.xml") as file:
    cfdi = CFDI(file, context=context)

Addendas

No hay soporte para addendas ya que requiere que se den de alta locations que no son parte de estandar de CFDI o complementos del SAT.

Aún así deberías poder cargar tus propios contextos y acceder a ellos usando obj.addenda. La información que obtegas será en formato JSON.

from json_cfdi import CFDI
from json_cfdi.wrappers.schemas import get_context

context = get_context()
context["locations"] += [
  ("http://www.tuempresa.com/addenda", "path/a/addenda.xsd"),
  ...
]

with open("nomina-con-addenda-john.xml") as file:
    cfdi = CFDI(file, context=context)
    model = cfdi.to_model()
    
    model.addenda  # {...} en formato json

Complementos

se pueden cargar complementos de forma personalizada (ver sección de uso arriba).

Tabla de complementos
Complemento version soporte cfdi url
Recibo de pago de nómina 1.2 Revisión C 3.3 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd
Recibo de pago de nómina 1.2 3.3 http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/nomina12_.xsd
Recibo de pago de nómina 1.1 3.2 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina11.xsd
Timbre Fiscal Digital 1.1 3.3 https://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd
Timbre Fiscal Digital 1.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigital.xsd
Acreditamiento IEPS 1.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/acreditamiento/AcreditamientoIEPS10.xsd
Aerolíneas 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/aerolineas/aerolineas.xsd
Certificado de Destrucción 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/certificadodestruccion/certificadodedestruccion.xsd
Comercio Exterior 1.1 Revisión D 3.3 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xsd
Comercio Exterior 1.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior/ComercioExterior10.xsd
Complemento Carta Porte 2.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsd
Complemento Carta Porte 1.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte.xsd
Compra venta de divisas 1.0 2.0 2.2 3.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/divisas/divisas.xsd
Consumo de combustibles 1.1 3.3 http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles11.xsd
Consumo de combustibles 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles.xsd
Donatarias 1.1 2.2 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/donat/donat11.xsd
Donatarias 1.0 2.0 3.0 http://www.sat.gob.mx/sitio_internet/cfd/donat/donat.xsd
Estado de cuenta de combustibles de monederos electrónicos 1.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc12.xsd
Estado de cuenta de combustibles de monederos electrónicos 1.1 3.2 http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc11.xsd
Estado de cuenta de combustibles de monederos electrónicos 1.0 2.0 2.2 3.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/ecc/ecc.xsd
Complemento de Hidrocarburos (ingresos) 1.0 3.3 http://www.sat.gob.mx/sitio_internet/cfd/IngresosHidrocarburos10/IngresosHidrocarburos.xsd
Complemento de Hidrocarburos (gastos) 1.0 3.3 http://www.sat.gob.mx/sitio_internet/cfd/GastosHidrocarburos10/GastosHidrocarburos10.xsd
INE 1.1 3.3 http://www.sat.gob.mx/sitio_internet/cfd/ine/ine11.xsd
INE 1.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/ine/ine10.xsd
Instituciones educativas privadas 1.0 2.0 2.2 3.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/iedu/iedu.xsd
Leyendas fiscales 1.0 2.2 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd
Notarios Públicos 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/notariospublicos/notariospublicos.xsd
Obras de arte plásticas y antigüedades 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/arteantiguedades/obrasarteantiguedades.xsd
Otros derechos e impuestos 1.0 2.0 2.2 3.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd
Pago en especie 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/pagoenespecie/pagoenespecie.xsd
Persona física integrante de coordinado 1.0 2.2 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/pfic/pfic.xsd
Recepción de pagos 2.0 3.3 4.0 http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos20.xsd
Recepción de pagos 1.0 3.3 4.0 http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsd
Comercio Exterior 1.1 revisión D 3.3 4.0 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xsd
Comercio Exterior 1.0' 3.2 http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior/ComercioExterior10.xsd
Complemento Carta Porte 2.0 - http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsd
Complemento Carta Porte 1.0 - http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte.xsd
Compra venta de divisas 1.0 2.0 2.2 3.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/divisas/divisas.xsd
Consumo de combustibles 1.1 3.3 http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles11.xsd
Consumo de combustibles 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles.xsd
Donatarias 1.1 2.2 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/donat/donat11.xsd
Donatarias 1.0 2.0 3.0 http://www.sat.gob.mx/sitio_internet/cfd/donat/donat.xsd
Estado de cuenta de combustibles de monederos electrónicos 1.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc12.xsd
Estado de cuenta de combustibles de monederos electrónicos 1.1 3.2 http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc11.xsd
Estado de cuenta de combustibles de monederos electrónicos 1.0 2.0 2.2 3.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/ecc/ecc.xsd
Complemento de Hidrocarburos (gastos) 1.0 3.3 http://www.sat.gob.mx/sitio_internet/cfd/GastosHidrocarburos10/GastosHidrocarburos10.xsd
Complemento de Hidrocarburos (ingresos) 1.0 3.3 http://www.sat.gob.mx/sitio_internet/cfd/IngresosHidrocarburos10/IngresosHidrocarburos.xsd
INE 1.1 3.3 http://www.sat.gob.mx/sitio_internet/cfd/ine/ine11.xsd
INE 1.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/ine/ine10.xsd
Instituciones educativas privadas 1.0 2.0 2.2 3.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/iedu/iedu.xsd
Leyendas fiscales 1.0 2.2 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd
Notarios Públicos 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/notariospublicos/notariospublicos.xsd
Obras de arte plásticas y antigüedades 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/arteantiguedades/obrasarteantiguedades.xsd
Otros derechos e impuestos 1.0 2.0 2.2 3.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd
Pago en especie 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/pagoenespecie/pagoenespecie.xsd
Persona física integrante de coordinado 1.0 2.2 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/pfic/pfic.xsd
Renovación y sustitución de vehículos 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/renovacionysustitucionvehiculos/renovacionysustitucionvehiculos.xsd
Sector de ventas al detalle (Detallista) 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/detallista/detallista.xsd
Servicios parciales de construcción 1.0 - http://www.sat.gob.mx/sitio_internet/cfd/servicioparcialconstruccion/servicioparcialconstruccion.xsd
SPEI de tercero a tercero 1.0 3.2 http://www.sat.gob.mx/sitio_internet/cfd/spei/spei.xsd
Teceros 1.1 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros11.xsd
Turista pasajero extranjero 1.0 2.2 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/TuristaPasajeroExtranjero/TuristaPasajeroExtranjero.xsd
Vales de despensa 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/valesdedespensa/valesdedespensa.xsd
Vehículo usado 1.0 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/vehiculousado/vehiculousado.xsd
Venta de vehículos 1.1 3.2 3.3 http://www.sat.gob.mx/sitio_internet/cfd/ventavehiculos/ventavehiculos11.xsd
Venta de vehículos 1.0 2.2 3.2 http://www.sat.gob.mx/sitio_internet/cfd/ventavehiculos/ventavehiculos.xsd

Otros

CFDI (factura) de retenciones Es un comprobante que ampara las retenciones efectuadas y los pagos realizados a residentes nacionales y en el extranjero. Cuando en el desarrollo de tu actividad económica estés obligado a incluir en un CFDI las retenciones de impuestos que efectúas, o por los pagos realizados, incluye los complementos:

Tabla de complementos
Complemento version soporte cfdi url
Enajenación de acciones 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/enajenaciondeacciones/enajenaciondeacciones.xsd
Dividendos 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/dividendos/dividendos.xsd
Intereses 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/intereses/intereses.xsd
Arrendamiento 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/arrendamientoenfideicomiso/arrendamientoenfideicomiso.xsd
Pagos a extranjeros 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/pagosaextranjeros/pagosaextranjeros.xsd
Premios 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/premios/premios.xsd
Fideicomisos no empresariales 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/fideicomisonoempresarial/fideicomisonoempresarial.xsd
Planes de retiro 1.1 * https://www.sat.gob.mx/esquemas/retencionpago/1/planesderetiro11/planesderetiro11.xsd
Intereses Hipotecarios 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/intereseshipotecarios/intereseshipotecarios.xsd
Operaciones con derivados 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/operacionesconderivados/operacionesconderivados.xsd
Sector financiero 1.0 * http://www.sat.gob.mx/esquemas/retencionpago/1/sectorfinanciero/sectorfinanciero.xsd
Plataformas Tecnológicas - - -

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

json_cfdi-0.2.tar.gz (84.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

json_cfdi-0.2-py3-none-any.whl (110.3 kB view details)

Uploaded Python 3

File details

Details for the file json_cfdi-0.2.tar.gz.

File metadata

  • Download URL: json_cfdi-0.2.tar.gz
  • Upload date:
  • Size: 84.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for json_cfdi-0.2.tar.gz
Algorithm Hash digest
SHA256 156b193ba8fb67118713b22ff9b3c096c4b013a46c7754e90060812042dae351
MD5 de887c8439bfe8c269e81b11e95f0b35
BLAKE2b-256 10a125f632e6fdc32d988600530f33aeb144a0f7a86986fb9488ded63b0d1ff9

See more details on using hashes here.

File details

Details for the file json_cfdi-0.2-py3-none-any.whl.

File metadata

  • Download URL: json_cfdi-0.2-py3-none-any.whl
  • Upload date:
  • Size: 110.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for json_cfdi-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8d5909f014cd8ec2e2b7f5752627be68ccd430fae7aaf530ab3bf9ec6fb77833
MD5 628fae4d245ff5f110916283ef5ffe7d
BLAKE2b-256 87f29d37e1d5cbecb6f7336ee7c01f5b7951aa4eb451998664b88ea2120f7d3e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page