Sat-ws

Latest version: v3.25.0

Safety actively analyzes 710445 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 4

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`.

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 objeto `GuzzleHttp\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`.

Ver *issue* 47 y *pull request* 48

0.4.3

- Se elimina método innecesario `FielRequestBuilder::nospaces()` y se usa en su lugar el método `Helper::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.

0.4.2

- Se corrige el extractor de UUID de un CFDI, no estaba funcionando correctamente y en algunas ocasiones provocaba que se leyera el valor de `CfdiRelacionadoUUID` en lugar del valor correcto de `TimbreFiscalDigitalUUID`. Esto solo ocurría cuando en el nodo principal `<Comprobante>` se definía el espacio de nombres o la ubicación del esquema de `TimbreFiscalDigital`.

0.4.1

- PHPStan reporta error de tipo *"Access to an undefined property"* en la clase `MetadataItem`. Sin embargo, la clase implementa el método mágico `__get` por lo que la propiedad no necesariamente se debe considerar indefinida. Se corrigió anotando la línea para que fuera ignorada.
- Se corrigen las pruebas porque ahora PHPStan entiende el control de flujo de PHPUnit y eso rompía la integración contínua con Travis-CI.
- Se mejora el flujo de la prueba `ServiceConsumerTest::testRunRequestWithWebClientException`.
- Se corrige en las pruebas el uso de `current()` pues puede devolver `false` y se espera `string`.

0.4.0

**Actualización mayor, revisa la guía de actualización.**

- Guía de actualización de la versión 0.3.2 a la versión 0.4.0: [UPGRADE_0.3_0.4](https://github.com/phpcfdi/sat-ws-descarga-masiva/blob/master/docs/UPGRADE_0.3_0.4.md)
- Se agregan [excepciones específicas en la librería](Excepciones.md). Además, cuando se detecta una respuesta
que contiene un *SOAP Fault* se genera una excepción.
- Se rompe la dependencia directa de `Service` a `Fiel`, ahora depende de `RequestBuilderInterface`.
- Se crea la implementación `FielRequestBuilder` para seguir trabajando con la `Fiel`.
- Se mueve `Fiel` adentro del namespace `PhpCfdi\SatWsDescargaMasiva\RequestBuilder\FielRequestBuilder`.
- Se modifican los servicios de autenticación, consulta, descarga y verificación para que,
en lugar de que ellos mismos construyan las peticiones XML firmadas, ahora las deleguen a `RequestBuilderInterface`.
- Ahora se puede especificar un RFC específico en la consulta:
- Si consultamos los emitidos podríamos filtrar por el RFC receptor.
- Si consultamos los recibidos podríamos filtrar por el RFC emisor.
- Ahora se puede consumir el servicio para los CFDI de retenciones e información de pagos.
- Se agrega la interfaz `PackageReaderInterface` que contiene el contrato esperado por un lector de paquetes.
- Se crea la clase interna `FilteredPackageReader` que implementa `PackageReaderInterface`, también se agregan
las clases `MetadataFileFilter` y `CfdiFileFilter` que permiten el filtrado de los archivos correctos dentro
de los paquetes del SAT.
- Se restructura `MetadataPackageReader` para cumplir con la interfaz `PackageReaderInterface`,
ahora se comporta como una fachada de un `FilteredPackageReader`.
- Se restructura `CfdiPackageReader` para cumplir con la interfaz `PackageReaderInterface`,
ahora se comporta como una fachada de un `FilteredPackageReader`.
- Se agrega el método generador `CfdiPackageReader::cfdis()` que contiene en su llave el UUID del CFDI
y en el valor el contenido del CFDI.
- Se agregan los constructores estáticos `::create()` de los objetos usados en `QueryParameters` y en la propia clase.
- Se convierten varias clases en finales: `StatusCode`, `DateTime`, `DateTimePeriod`, `DownloadType`, `Fiel`,
`RequestType`, `Token`, `QueryParameters`, `QueryResult`, `VerifyResult`, `DownloadResult`.
- Se mueven y crean diferentes clases que solo deben ser utilizadas internamente al namespace "interno"
`PhpCfdi\SatWsDescargaMasiva\Internal`: `Helpers`, `InteractsXmlTrait`, `ServiceConsumer`, `SoapFaultInfoExtractor`.
- Se marcan como clases internas los traductores usados dentro de los servicios.
- Se mueve lógica repetida en los servicios de autenticación, consulta, verificación y descarga hacia dentro
del método `InteractsXmlTrait::createSignature`.
- Se implementa `JsonSerializable` en todos los DTO, en los lectores de paquetes y en las excepciones específicas.
- Se agregan muchas pruebas unitarias para comprobar el funcionamiento esperado y la cobertura de código.
- Se actualizan las dependencias:
- `guzzlehttp/guzzle` de `6.3` a `7.2`
- `robrichards/xmlseclibs` de `3.0` a `3.1`
- `phpunit/phpunit` de `9.1` a `9.3`
- Documentación general:
- Se agregan bloques de documentación a clases y métodos en toda la librería.
- Se separan los bloques de ejemplos de uso en cada caso en lugar de usar solo un bloque.
- Los códigos de servicios cambian de `Services-StatusCode.md` a `CodigosDeServicios`.

Closes 30, 29 & 18

Page 2 of 4

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.