Download the PHP package phpcfdi/cfdi-cleaner without Composer

On this page you can find all versions of the php package phpcfdi/cfdi-cleaner. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package cfdi-cleaner

phpcfdi/cfdi-cleaner

Source Code Packagist PHP Version Support Discord Latest Version Software License Build Status Reliability Maintainability Code Coverage Violations Total Downloads

Herramienta para limpiar Comprobantes Fiscales Digitales por Internet mexicanos.

:us: The documentation of this project is in spanish as this is the natural language for the intended audience.

Acerca de phpcfdi/cfdi-cleaner

Los archivos XML de Comprobantes Fiscales Digitales por Internet (CFDI) suelen contener errores. Esta librería se encarga de reparar los errores (reparables) conocidos/comunes para poder trabajar con ellos.

Todas las operaciones que realiza esta librería con sobre partes del CFDI que no influyen en la generación de la cadena de origen ni del sello.

Instalación

Usa composer

Referencia de uso

La clase de trabajo es \PhpCfdi\CfdiCleaner\Cleaner y ofrece los siguientes métodos de limpieza:

staticClean(string $xml): string

Realiza la limpieza de texto y del documento xml a partir de una cadena de caracteres y entrega la representación limpia también en texto.

Este método es estático, por lo que no se necesita crear una instancia del objeto Cleaner.

cleanStringToString(string $xml): string

Realiza la limpieza de texto y del documento xml a partir de una cadena de caracteres y entrega la representación limpia también en texto.

cleanStringToDocument(string $xml): DOMDocument

Realiza la limpieza de texto y del documento xml a partir de una cadena de caracteres y entrega el documento XML limpio.

Este método es útil si se necesita utilizar inmediatamente el objeto documento XML.

Acciones de limpieza

Hay dos tipos de limpiezas que se pueden hacer, una sobre el texto XML antes de que se intente cargar como objetos DOM, y la otra una vez que se pudo cargar el contenido como objetos DOM.

Limpiezas sobre el texto XML

Estos limpiadores deben ejecutarse antes de intentar leer el contenido XML y están hechos para prevenir que el objeto documento XML no se pueda crear.

RemoveNonXmlStrings

Elimina todo contenido antes del primer caracter < y posterior al último >.

SplitXmlDeclarationFromDocument

Separa por un LF ("\n") la declaración XML <?xml version="1.0"?> del cuerpo XML.

AppendXmlDeclaration

Agrega <?xml version="1.0"?> al inicio del archivo si no existe, es muy útil porque las herramientas de detección de MIME no reconocen un archivo XML si no trae la cabecera.

XmlNsSchemaLocation

Elimina un error frecuentemente encontrado en los CFDI emitidos por el SAT donde dice xmlns:schemaLocation en lugar de xsi:schemaLocation. En caso de que existan ambos, el único que se mantiene es xsi:schemaLocation.

Limpiezas sobre el documento XML (DOMDocument)

Estas limpiezas se realizan sobre el documento XML.

RemoveAddenda

Remueve cualquier nodo de tipo Addenda en el espacio de nombres http://www.sat.gob.mx/cfd/3.

RemoveIncompleteSchemaLocations

Actúa sobre cada uno de los xsi:schemaLocations.

Lee el contenido e intenta interpretar el espacio de nombres y la ubicación del esquema de validación. Para considerar que es un esquema de validación verifica que termine con .xsd (insensible a mayúsculas o minusculas). Si encuentra un espacio de nombres sin esquema lo omite. Si encuentra un esquema sin espacio de nombres lo omite.

RemoveNonSatNamespacesNodes

Verifica todas las definiciones de espacios de nombres y si no pertenece a un espacio de nombres con la URI http://www.sat.gob.mx/** entonces elimina los nodos y atributos relacionados.

RemoveNonSatSchemaLocations

Actúa sobre cada uno de los xsi:schemaLocations.

Verifica las definiciones de espacios de nombres y elimina todos los pares donde el espacio de nombres que no correspondan a la URI http://www.sat.gob.mx/**.

RemoveUnusedNamespaces

Remueve todas las declaraciones de espacios de nombres (junto con su prefijo) que no estén en uso.

RenameElementAddPrefix

Agrega el prefijo al nodo que no lo tiene por estar utilizando la definición simple xmlns. Además, elimina los namespace superfluos y las definiciones xmlns redundantes.

Ejemplo de CFDI sucio:

Ejemplo de CFDI limpio:

MoveNamespaceDeclarationToRoot

Mueve todas las declaraciones de espacios de nombres al nodo raíz.

Por lo regular el SAT pide en la documentación técnica que los espacios de nombres se definan en el nodo raíz, sin embargo, es frecuente que se definan en el nodo que los implementa.

Hay casos extremos de CFDI que siguen las reglas de XML, pero que no siguen las reglas de CFDI y generan prefijos que se superponen. En este caso, se moverán solamente los espacios de nombres que no se superponen, por ejemplo:

Genera el siguiente resultado:

Ante un caso como el anterior, no se están siguiendo las reglas establecidas en el Anexo 20 y en el complemento. Es mejor que siempre considere ese caso como un CFDI inválido, aun cuando se haya firmado, y solicite la sustitución por un CFDI que sí contenga los prefijos de los espacios de nombres correctos.

MoveSchemaLocationsToRoot

Mueve todas las declaraciones de ubicaciones de archivos de esquema al nodo principal.

Por lo regular el SAT pide en la documentación técnica que las ubicaciones de archivos de esquema se definan en el nodo principal, sin embargo, es frecuente que se definan en el nodo que los implementa.

SetKnownSchemaLocations

Verifica que las ubicaciones de los esquemas de espacios de nombres conocidos sean exactamente las direcciones conocidas, en caso de no serlo las modifican.

Anteriormente, el SAT permitía que las ubicaciones de los esquemas de espacios de nombres estuvieran escritos sin sensibilidad a mayúsculas o minúsculas, incluso tenía varias ubicaciones para obtener estos archivos. Sin embargo, recientemente ha eliminado la tolerancia a estas ubicaciones y solo permite las definiciones oficiales.

Este limpiador tiene la información de espacio de nombres, versión a la que aplica y ubicación conocida con base en el proyecto phpcfdi/sat-ns-registry.

En caso de que no se encuentre la ruta conocida para un espacio de nombres entonces no aplicará ninguna corrección y dejará el valor tal como estaba.

CollapseComplemento

Este limpiador se crea para solventar la inconsistencia en la documentación del SAT.

Por un lado, en el Anexo 20 de CFDI 3.3, el SAT exige que exista uno y solamente un nodo cfdi:Complemento. Sin embargo, en el archivo de validación XSD permite que existan más de uno.

Con esta limpieza, se deja un solo cfdi:Complemento con todos los complementos en él.

Exclusión de limpiadores

Para no tener que modificar la creación del objeto limpiador y permitir la exclusión de limpiadores específicos, y de esta forma ser compatibles con nuevas actualizaciones de la librería, se puede crear el limpiador estándar y luego aplicar exclusiones.

El siguiente ejemplo muestra cómo excluir los limpiadores que afectan a una Addenda.

Soporte

Puedes obtener soporte abriendo un ticket en Github.

Adicionalmente, esta librería pertenece a la comunidad PhpCfdi, así que puedes usar los mismos canales de comunicación para obtener ayuda de algún miembro de la comunidad.

Compatibilidad

Esta librería se mantendrá compatible con al menos la versión con soporte activo de PHP más reciente.

También utilizamos Versionado Semántico 2.0.0 por lo que puedes usar esta librería sin temor a romper tu aplicación.

Contribuciones

Las contribuciones con bienvenidas. Por favor lee CONTRIBUTING para más detalles y recuerda revisar el archivo de tareas pendientes TODO y el archivo CHANGELOG.

Copyright and License

The phpcfdi/cfdi-cleaner library is copyright © PhpCfdi and licensed for use under the MIT License (MIT). Please see LICENSE for more information.


All versions of cfdi-cleaner with dependencies

PHP Build Version
Package Version
Requires php Version >=7.3
ext-dom Version *
ext-libxml Version *
symfony/polyfill-php80 Version ^1.22
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package phpcfdi/cfdi-cleaner contains the following files

Loading the files please wait ....