Skip to content

webrek/sat-69b

Repository files navigation

SAT 69-B

Última versión Tests PHP Licencia

Verifica RFCs contra la lista del artículo 69-B del SAT — los contribuyentes que el SAT señala por facturar operaciones simuladas (EFOS/EDOS). Útil para tamizar proveedores y clientes antes de deducir o acreditar sus comprobantes.

Un núcleo independiente de framework (solo PHP) con un puente opcional para Laravel que descarga el CSV oficial, lo cachea y expone una facade y comandos.

use Webrek\Sat69b\Laravel\Facades\Sat69b;

Sat69b::isBlacklisted('AAA010101AA1');   // true si es presunto o definitivo
Sat69b::isListed('AAA010101AA1');        // true aunque haya sido desvirtuado
$contribuyente = Sat69b::check('AAA010101AA1');
$contribuyente?->status->label();        // "Definitivo"

Esto es una herramienta de tamizado sobre la publicación oficial del SAT. La fuente de verdad es el listado del SAT y el Diario Oficial; valida los hallazgos antes de tomar decisiones fiscales o contractuales.

Las situaciones del 69-B

Situación ¿En lista negra? Significado
Presunto El SAT presume operaciones simuladas.
Definitivo Quedó definitivo tras no desvirtuar.
Desvirtuado No El contribuyente aclaró su situación.
Sentencia favorable No Un tribunal le dio la razón.

isBlacklisted() es verdadero solo para presunto y definitivo.

Instalación

composer require webrek/sat-69b

En Laravel

El service provider se descubre automáticamente. Descarga el listado (idealmente de forma programada) y consúltalo:

php artisan sat69b:sync            # descarga y cachea el listado oficial
php artisan sat69b:check AAA010101AA1
// routes/console.php — mantenlo fresco
use Illuminate\Support\Facades\Schedule;

Schedule::command('sat69b:sync')->daily();

Publica la configuración para ajustar la URL, el caché o el timeout:

php artisan vendor:publish --tag=sat-69b-config

Si el caché está frío, la primera consulta descarga el listado sola; aun así conviene programar sat69b:sync para no pagar esa descarga en una petición de usuario.

En cualquier otro lado

No hay dependencia de framework. Parsea el CSV oficial con CsvParser y consulta con Checker sobre cualquier implementación de Webrek\Sat69b\Contracts\Listado (se incluye InMemoryListado):

use Webrek\Sat69b\{Checker, CsvParser, InMemoryListado};

$contribuyentes = (new CsvParser)->parse(file_get_contents('Listado_Completo_69-B.csv'));
$checker = new Checker(new InMemoryListado($contribuyentes));

$checker->isBlacklisted('AAA010101AA1');

Para una fuente propia (una tabla, un servicio), implementa la interfaz Listado y pásala al Checker.

Pruebas

composer test

La suite del núcleo (tests/Unit) corre sin framework; la de Laravel (tests/Feature) simula la descarga del CSV con Http::fake().

Contribuir

Consulta CONTRIBUTING.md. Corre make check antes de abrir un pull request.

Seguridad

Reporta vulnerabilidades a través del formulario de avisos de seguridad, no como issues públicos. Consulta SECURITY.md.

Licencia

Licencia MIT (MIT). Consulta LICENSE.

About

Check Mexican RFCs against the SAT's article 69-B blacklist (EFOS/EDOS). Framework-agnostic core with an optional Laravel bridge.

Topics

Resources

License

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors