Releases: phpcfdi/sat-ws-descarga-masiva
Versión 0.5.4
Se corrige un bug donde en algunas ocasiones falla al procesar la respuesta de una descarga de paquetes.
El método DOMDocument::loadXML()
con LibXML >= 1.11.0
trunca a 10,000,000 bytes el contenido de un nodo de tipo texto. Esto lleva a que el contenido de un paquete se trunque y el archivo ZIP descargado se encuentre truncado y, por lo tanto, corrupto. Se ha corregido usando la opción LIBXML_PARSEHUGE
.
Al usar LIBXML_PARSEHUGE
se está quitando una protección natural que impide una denegación de servicio. Sin embargo, podemos considerar segura esta acción dado que solo ocurre en el contexto de respuestas recibidas del servicio de descarga masiva del SAT.
Se actualiza el archivo de licencia a 2024.
Mantenimiento 2024-04-17
- Se mejoran las pruebas del rasgo
ComplementoTrait
. - Se actualizaron los flujos de trabajo:
- Se agregó PHP 8.3 a la matriz de pruebas.
- Los trabajos ahora corren en PHP 8.3.
- Se actualizan las acciones de GitHub a la versión 4.
- Se cambia la variable
build/tests/matrix/php-versions
a singular.
- Se actualizaron las herramientas de desarrollo.
Versión 0.5.3
- Se verifica la compatibilidad con PHP 8.2.
- Se eliminan las llaves en la interpolación de variables (deprecado en PHP 8.2).
- Se actualiza el año de la licencia.
- Se modifican las pruebas para futura compatibilidad con PHPUnit 10.
- Se corrige la exclusión de archivos en
sonar-project.properties
. - Se corrige el archivo
CONTRIBUTING.md
usando el ancla correcta del proyecto. - Se corrige la insignia de construcción
badge-build
. - En los flujos de trabajo
- Se agrega PHP 8.2 a la matriz de pruebas.
- Se ejecutan los trabajos en PHP 8.2.
- Se sustituye la directiva de GitHub
::set-output
por$GITHUB_OUTPUT
.
- Se actualizan las herramientas de desarrollo.
Versión 0.5.2
Gracias a la solicitud de cambios en luisiturrios1/python-cfdiclient#42
por @alan196, hemos podido verificar que la documentación del servicio con respecto a la consulta por UUID está incorrecta.
- El campo no se llama
UUID
, se llamaFolio
. - El campo
RfcSolicitante
no se debe omitir. - El campo
TipoSolicitud
no se debe omitir. - Los demás campos no deben existir.
Por lo tanto, se han hecho las correcciones necesarias para hacer la consulta por UUID
.
Versión 0.5.1
Se corrigen XML mal formados
Se hace una revisión del constructor de mensages firmados XML (FielRequestBuilder
) y se corrigen aquellos lugares donde es posible inyectar caracteres no escapados XML.
El caso más normal es cuando el RFC solicitante contiene un ámpersand &
, sin embargo se corrigió:
- Verificación:
@IdSolicitud
y@RfcSolicitante
. - Descarga:
@IdPaquete
y@RfcSolicitante
. - General:
X509IssuerName
.
Gracias comunidad por reportar el problema en el canal de discord.
Versión 0.5.0
Esta actualización contiene cambios significativos en la forma de usar la librería, específicamente en la creación de objetos de consulta QueryParameters
.
Lea las notas para Actualizar de 0.4.x
a 0.5.x
, y la documentación principal en el README.md.
A partir de septiembre 2022 el SAT incluye un archivo de nombre <UUID>_tercero.txt
.
Este archivo contiene la información de terceros y se vincula con la información de Metadata
por el UUID.
(Cierra #47)
Cambios incompatibles
$ roave-backward-compatibility-check --from v0.4.7
[BC] REMOVED: Method PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters#__construct() was removed
[BC] CHANGED: Method __construct() of class PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters visibility reduced from public to private
[BC] CHANGED: The number of required arguments for PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters#__construct() increased from 4 to 9
[BC] CHANGED: The parameter $rfcMatch of PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters#__construct() changed from string to a non-contravariant PhpCfdi\SatWsDescargaMasiva\Shared\DocumentType
[BC] CHANGED: The return type of PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters#getRfcMatch() changed from string to the non-covariant PhpCfdi\SatWsDescargaMasiva\Shared\RfcMatch
[BC] CHANGED: The number of required arguments for PhpCfdi\SatWsDescargaMasiva\Shared\ServiceEndpoints#__construct() increased from 4 to 5
[BC] REMOVED: Constant PhpCfdi\SatWsDescargaMasiva\RequestBuilder\FielRequestBuilder\FielRequestBuilder::USE_SIGNER was removed
[BC] CHANGED: The parameter $created of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\FielRequestBuilder\FielRequestBuilder#authorization() changed from string to a non-contravariant PhpCfdi\SatWsDescargaMasiva\Shared\DateTime
[BC] CHANGED: The parameter $expires of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\FielRequestBuilder\FielRequestBuilder#authorization() changed from string to a non-contravariant PhpCfdi\SatWsDescargaMasiva\Shared\DateTime
[BC] CHANGED: The parameter $start of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\FielRequestBuilder\FielRequestBuilder#query() changed from string to a non-contravariant PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters
[BC] REMOVED: Class PhpCfdi\SatWsDescargaMasiva\RequestBuilder\Exceptions\RfcIssuerAndReceiverAreEmptyException has been deleted
[BC] REMOVED: Class PhpCfdi\SatWsDescargaMasiva\RequestBuilder\Exceptions\PeriodEndInvalidDateFormatException has been deleted
[BC] REMOVED: Class PhpCfdi\SatWsDescargaMasiva\RequestBuilder\Exceptions\RfcIsNotIssuerOrReceiverException has been deleted
[BC] REMOVED: Class PhpCfdi\SatWsDescargaMasiva\RequestBuilder\Exceptions\PeriodStartInvalidDateFormatException has been deleted
[BC] REMOVED: Class PhpCfdi\SatWsDescargaMasiva\RequestBuilder\Exceptions\RequestTypeInvalidException has been deleted
[BC] REMOVED: Class PhpCfdi\SatWsDescargaMasiva\RequestBuilder\Exceptions\PeriodStartGreaterThanEndException has been deleted
[BC] REMOVED: Constant PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface::USE_SIGNER was removed
[BC] CHANGED: The parameter $created of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface#authorization() changed from string to a non-contravariant PhpCfdi\SatWsDescargaMasiva\Shared\DateTime
[BC] CHANGED: The parameter $expires of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface#authorization() changed from string to a non-contravariant PhpCfdi\SatWsDescargaMasiva\Shared\DateTime
[BC] CHANGED: The parameter $created of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface#authorization() changed from string to PhpCfdi\SatWsDescargaMasiva\Shared\DateTime
[BC] CHANGED: The parameter $expires of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface#authorization() changed from string to PhpCfdi\SatWsDescargaMasiva\Shared\DateTime
[BC] CHANGED: The parameter $start of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface#query() changed from string to a non-contravariant PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters
[BC] CHANGED: The parameter $start of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface#query() changed from string to PhpCfdi\SatWsDescargaMasiva\Services\Query\QueryParameters
[BC] CHANGED: Parameter 0 of PhpCfdi\SatWsDescargaMasiva\RequestBuilder\RequestBuilderInterface#query() changed name from start to queryParameters
24 backwards-incompatible changes detected
Versión 0.4.7
No se estaba haciendo la codificación correcta de RfcReceptor
, que provocaba un fallo cuando se solicitaba
una consulta donde el RFC recibido tuviera un ampersand &
. Gracias @AfroMonkey por el descubrimiento.
Version 0.4.6
Se corrige que el uso de la propiedad DOMElement::localName
cuando podría ser null
.
Version 0.4.5
Se compatibilizó la colocación de una consulta con el servicio de solicitud de descargas masivas para CFDI de Retenciones e Información de Pagos, anteriormente, al solicitar XML el valor del atributo TipoSolicitud
debía ser CFDI
y ahora debe ser Retencion
.
Este cambio altera la API pública, pero no se considera un cambio que rompa la compatibilidad porque el cambio ocurrió sobre la clase QueryTranslator
marcada como @internal
.
Version 0.4.4
Se actualizó el servicio de solicitud de descargas masivas (consulta) a la versión 1.2 del SAT.
Esta actualización por el momento solo está sobre CFDI regulares, no sobre Retenciones e información de pagos.
En este último el servicio se encuentra caído.
Al parecer la actualización no se ha completado en el SAT, y ha estado inestable desde 2022-03-14.
Sin embargo, con esta actualización se compatibliza el servicio con el funcionamiento esperado.
Cambios en la solicitud
Se elimina el atributo RfcReceptor
y se agrega el elemento RfcReceptores/RfcReceptor
para especificar el RFC del receptor en la consulta.
CodEstatus 5006
Se agrega a la documentación de CodEstatus
(clase StatusCode
) el código 5006 - Error interno en el proceso
que se supone sustituye al código 404 - Error no Controlado
para el servicio de consulta.
Correcciones
Se agrega el método mágico MetadataItem::__isset(string $name): bool
que no estaba contemplado.
Entorno de desarrollo
- En las pruebas de integración, se hacen dos pruebas de solicitud consulta, una para emitidos y otra para recibidos.
- Se actualizan los archivos de muestra en las comprobaciones unitarias.
- Se agrega como dependencia la extensión de PHP
mbstring
. - Se refactoriza la clase interna
Helpers::nospaces()
para insertar un Line feed (LF) después de la especificación de XML. - En las pruebas de integración, se agrega el método
ConsumeServiceTestCase::createWebClient()
que devuelve un objetoGuzzleHttp\Client
configurado correctamente con timeouts. - Se actualizan las herramientas del entorno de desarrollo.
- CI: Se usan las rutas establecidas en el archivo de configuración de
phpcs
.
Version 0.4.3
- Se elimina método innecesario
FielRequestBuilder::nospaces()
y se usa en su lugar el métodoHelper::nospaces()
. - Se actualizaron las herramientas de desarrollo y se utiliza
phive
para administrarlas. - Se actualizaron los archivos de configuración de
php-cs-fixer
acorde a la última versión. - Se solventaron los issues de tipos encontrados por
phpstan
. - Se migró el proceso de integración continua de Travis CI a GitHub Workflows. Gracias Travis CI.
- Se actualizó el archivo de licencia del proyecto. Feliz 2022.
- Se cambia la rama principal de master a main.
- Add SonarCloud integration.
- Se elimina Scrutinizer CI. Gracias Scrutinizer.