Package: json-cfdi
CFDI a JSON (json_cfdi)EmpezandoDesde PYPI❯ pipenv install json_cfdiDesde el código fuente❯  git clone https://gitlab.com/workyhr/json_cfdi
❯  cd json_cfdi
❯  python3 setup.py installTesting (Instalar y lanzar ambiente)# instalar virtualenv❯python-mpipinstallvirtualenv# crear ambiente❯virtualenv.env# activar ambiente❯source.env/bin/activate# instalar requerimientos❯python-mpipinstall-rrequirements.txt# levantar❯cdjson_cfdi# lanzar tests❯pytesttests/DescripciónUna 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:CFDI3.3y4.0http://omawww.sat.gob.mx/tramitesyservicios/Paginas/anexo_20_version3-3.htmcomplementos:http://omawww.sat.gob.mx/factura/Paginas/emite_complementosdefactura.htmSe hicieron tests haciendo uso de estos recursos, muchas gracias :)https://www.cryptosys.net/firmasat/cfdv40-examples.htmlhttps://www.cryptosys.net/firmasat/cfdv33-examples.htmlVersiones de CFDICFDI3.3http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd4.0http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsdUsoInstalaciónpipinstalljson_cfdiUsocfdi.to_model()Util para procesar los xmls como objetos python.fromjson_cfdiimportCFDIwithopen("nomina-john.xml")asfile:cfdi=CFDI(file)model=cfdi.to_model()# acceder al contenido en forma de objeto pythonmodel.version# '4.0'model.receptor.nombre# John Doemodel.emisor.nombre# Company SA de CVcfdi.to_json()fromjson_cfdiimportCFDIwithopen("nomina-john.xml")asfile:cfdi=CFDI(file)json_obj=cfdi.to_json()# acceder al contenido en forma de objeto pythontype(json_obj)# <str>cfdi.to_dict()Espacialmente útil para microservicios.fromjson_cfdiimportCFDIwithopen("nomina-john.xml")asfile:cfdi=CFDI(file)dict_obj=cfdi.to_dict()# acceder al contenido en forma de objeto pythondict_obj.get("version")# '4.0'dict_obj.get("receptor").get("nombre")# John Doedict_obj.get("emisor").get("nombre")# Company SA de CVcfdi.to_raw()Util para extraer la información tal cual se obtiene de la interpretación
de los XSD's.fromjson_cfdiimportCFDIwithopen("nomina-john.xml")asfile:cfdi=CFDI(file)raw_obj=cfdi.to_raw()# acceder al contenido en forma de objeto pythonraw_obj.get("attributes").get("Version")# '4.0'raw_obj.get("children")[0].get("Receptor").get("Nombre")# John DoePersonalizaciónPara leer correctamente el archivo es necesario cargar los XSD adecuados al
tipo de complementos que contenga el CFDI.fromjson_cfdiimportCFDIfromjson_cfdi.wrappers.locationsimportnomina12bfromjson_cfdi.wrappers.schemasimportget_contextcontext=get_context()context["locations"]+=[nomina12b]# cargar el contexto de nomina1.2# version 3.3withopen("cfdi33-nomina-john.xml")asfile:cfdi33=CFDI(file,context=context)# version 4.0withopen("cfdi40-nomina-john.xml")asfile:cfdi40=CFDI(file,version=4,context=context)Si necesitar cargar XSDs que no tengan soporte porjson_cfdisiempre
puedes cargar tus propios archivos:fromjson_cfdiimportCFDIfromjson_cfdi.wrappers.schemasimportget_contextcontext=get_context()context["locations"]+=[("http://www.sat.gob.mx/nomina12","path/a/nomina12.xsd"),...]withopen("nomina-john.xml")asfile:cfdi=CFDI(file,context=context)AddendasNo hay soporte para addendas ya que requiere que se den de altalocationsque 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
usandoobj.addenda. La información que obtegas será en formato JSON.fromjson_cfdiimportCFDIfromjson_cfdi.wrappers.schemasimportget_contextcontext=get_context()context["locations"]+=[("http://www.tuempresa.com/addenda","path/a/addenda.xsd"),...]withopen("nomina-con-addenda-john.xml")asfile:cfdi=CFDI(file,context=context)model=cfdi.to_model()model.addenda# {...} en formato jsonComplementosse pueden cargar complementos de forma personalizada (ver sección deusoarriba).Tabla de complementosComplementoversionsoportecfdiurlRecibo de pago de nómina1.2Revisión C✅3.3http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsdRecibo de pago de nómina1.2✅3.3http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/nomina12_.xsdRecibo de pago de nómina1.1❌3.2http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina11.xsdTimbre Fiscal Digital1.1✅3.3https://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsdTimbre Fiscal Digital1.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigital.xsdAcreditamiento IEPS1.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/acreditamiento/AcreditamientoIEPS10.xsdAerolíneas1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/aerolineas/aerolineas.xsdCertificado de Destrucción1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/certificadodestruccion/certificadodedestruccion.xsdComercio Exterior1.1Revisión D❌3.3http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xsdComercio Exterior1.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior/ComercioExterior10.xsdComplemento Carta Porte2.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsdComplemento Carta Porte1.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte.xsdCompra venta de divisas1.0❌2.02.23.03.23.3http://www.sat.gob.mx/sitio_internet/cfd/divisas/divisas.xsdConsumo de combustibles1.1❌3.3http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles11.xsdConsumo de combustibles1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles.xsdDonatarias1.1❌2.23.23.3http://www.sat.gob.mx/sitio_internet/cfd/donat/donat11.xsdDonatarias1.0❌2.03.0http://www.sat.gob.mx/sitio_internet/cfd/donat/donat.xsdEstado de cuenta de combustibles de monederos electrónicos1.2❌3.3http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc12.xsdEstado de cuenta de combustibles de monederos electrónicos1.1❌3.2http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc11.xsdEstado de cuenta de combustibles de monederos electrónicos1.0❌2.02.23.03.2http://www.sat.gob.mx/sitio_internet/cfd/ecc/ecc.xsdComplemento de Hidrocarburos (ingresos)1.0❌3.3http://www.sat.gob.mx/sitio_internet/cfd/IngresosHidrocarburos10/IngresosHidrocarburos.xsdComplemento de Hidrocarburos (gastos)1.0❌3.3http://www.sat.gob.mx/sitio_internet/cfd/GastosHidrocarburos10/GastosHidrocarburos10.xsdINE1.1❌3.3http://www.sat.gob.mx/sitio_internet/cfd/ine/ine11.xsdINE1.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/ine/ine10.xsdInstituciones educativas privadas1.0❌2.02.23.03.23.3http://www.sat.gob.mx/sitio_internet/cfd/iedu/iedu.xsdLeyendas fiscales1.0❌2.23.23.3http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsdNotarios Públicos1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/notariospublicos/notariospublicos.xsdObras de arte plásticas y antigüedades1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/arteantiguedades/obrasarteantiguedades.xsdOtros derechos e impuestos1.0❌2.02.23.03.23.3http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsdPago en especie1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/pagoenespecie/pagoenespecie.xsdPersona física integrante de coordinado1.0❌2.23.23.3http://www.sat.gob.mx/sitio_internet/cfd/pfic/pfic.xsdRecepción de pagos2.0❌3.34.0http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos20.xsdRecepción de pagos1.0❌3.34.0http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsdComercio Exterior1.1revisión D❌3.34.0http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xsdComercio Exterior1.0'❌3.2http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior/ComercioExterior10.xsdComplemento Carta Porte2.0❌-http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsdComplemento Carta Porte1.0❌-http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte.xsdCompra venta de divisas1.0❌2.02.23.03.23.3http://www.sat.gob.mx/sitio_internet/cfd/divisas/divisas.xsdConsumo de combustibles1.1❌3.3http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles11.xsdConsumo de combustibles1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles.xsdDonatarias1.1❌2.23.23.3http://www.sat.gob.mx/sitio_internet/cfd/donat/donat11.xsdDonatarias1.0❌2.03.0http://www.sat.gob.mx/sitio_internet/cfd/donat/donat.xsdEstado de cuenta de combustibles de monederos electrónicos1.2❌3.3http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc12.xsdEstado de cuenta de combustibles de monederos electrónicos1.1❌3.2http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc11.xsdEstado de cuenta de combustibles de monederos electrónicos1.0❌2.02.23.03.2http://www.sat.gob.mx/sitio_internet/cfd/ecc/ecc.xsdComplemento de Hidrocarburos (gastos)1.0❌3.3http://www.sat.gob.mx/sitio_internet/cfd/GastosHidrocarburos10/GastosHidrocarburos10.xsdComplemento de Hidrocarburos (ingresos)1.0❌3.3http://www.sat.gob.mx/sitio_internet/cfd/IngresosHidrocarburos10/IngresosHidrocarburos.xsdINE1.1❌3.3http://www.sat.gob.mx/sitio_internet/cfd/ine/ine11.xsdINE1.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/ine/ine10.xsdInstituciones educativas privadas1.0❌2.02.23.03.23.3http://www.sat.gob.mx/sitio_internet/cfd/iedu/iedu.xsdLeyendas fiscales1.0❌2.23.23.3http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsdNotarios Públicos1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/notariospublicos/notariospublicos.xsdObras de arte plásticas y antigüedades1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/arteantiguedades/obrasarteantiguedades.xsdOtros derechos e impuestos1.0❌2.02.23.03.23.3http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsdPago en especie1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/pagoenespecie/pagoenespecie.xsdPersona física integrante de coordinado1.0❌2.23.23.3http://www.sat.gob.mx/sitio_internet/cfd/pfic/pfic.xsdRenovación y sustitución de vehículos1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/renovacionysustitucionvehiculos/renovacionysustitucionvehiculos.xsdSector de ventas al detalle (Detallista)1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/detallista/detallista.xsdServicios parciales de construcción1.0❌-http://www.sat.gob.mx/sitio_internet/cfd/servicioparcialconstruccion/servicioparcialconstruccion.xsdSPEI de tercero a tercero1.0❌3.2http://www.sat.gob.mx/sitio_internet/cfd/spei/spei.xsdTeceros1.1❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros11.xsdTurista pasajero extranjero1.0❌2.23.23.3http://www.sat.gob.mx/sitio_internet/cfd/TuristaPasajeroExtranjero/TuristaPasajeroExtranjero.xsdVales de despensa1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/valesdedespensa/valesdedespensa.xsdVehículo usado1.0❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/vehiculousado/vehiculousado.xsdVenta de vehículos1.1❌3.23.3http://www.sat.gob.mx/sitio_internet/cfd/ventavehiculos/ventavehiculos11.xsdVenta de vehículos1.0❌2.23.2http://www.sat.gob.mx/sitio_internet/cfd/ventavehiculos/ventavehiculos.xsdOtrosCFDI (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 complementosComplementoversionsoportecfdiurlEnajenación de acciones1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/enajenaciondeacciones/enajenaciondeacciones.xsdDividendos1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/dividendos/dividendos.xsdIntereses1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/intereses/intereses.xsdArrendamiento1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/arrendamientoenfideicomiso/arrendamientoenfideicomiso.xsdPagos a extranjeros1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/pagosaextranjeros/pagosaextranjeros.xsdPremios1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/premios/premios.xsdFideicomisos no empresariales1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/fideicomisonoempresarial/fideicomisonoempresarial.xsdPlanes de retiro1.1❌*https://www.sat.gob.mx/esquemas/retencionpago/1/planesderetiro11/planesderetiro11.xsdIntereses Hipotecarios1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/intereseshipotecarios/intereseshipotecarios.xsdOperaciones con derivados1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/operacionesconderivados/operacionesconderivados.xsdSector financiero1.0❌*http://www.sat.gob.mx/esquemas/retencionpago/1/sectorfinanciero/sectorfinanciero.xsdPlataformas Tecnológicas-❌--