# 📦 Laravel SAT Catalogs
--- ## đź“Ś DescripciĂłn **Laravel SAT Catalogs** es un paquete diseñado para gestionar catálogos oficiales del **SAT** en Laravel, facilitando su extracciĂłn, conversiĂłn y consulta. ### ✨ CaracterĂsticas: - 🔹 Migraciones para la estructura de catálogos del SAT. - 🔹 ConversiĂłn de archivos **XLS** del SAT a **CSV** mediante `CsvGeneratorService`. - 🔹 Carga de datos en la base de datos desde CSV con `CsvDatabaseService`. - 🔹 Consultas optimizadas mediante `SatCatalogService` con bĂşsqueda flexible. - 🔹 IntegraciĂłn con Select2 para autocompletado. - 🔹 Kernel mĂnimo de Laravel mediante `bootstrap.php`. --- ## 📦 InstalaciĂłn Instalar vĂa **Composer**: ```bash composer require koneko/laravel-sat-catalogs ``` Publicar archivos de configuraciĂłn y migraciones: ```bash php artisan vendor:publish --tag=sat-catalogs-seeders ``` --- ## đź“‚ Estructura de archivos ``` laravel-sat-catalogs/ │── Console/Commands/ # Comandos Artisan para importar/exportar catálogos │── database/migrations/ # Migraciones para catálogos del SAT │── database/seeders/sat_cache/ # Archivos CSV generados │── Models/ # Modelos de catálogos SAT │── Providers/SatCatalogsServiceProvider.php # Proveedor de servicio │── routes/admin.php # Rutas administrativas │── Services/ # Servicios de conversiĂłn y consulta de datos └── README.md ``` --- ## 🔍 Uso de `SatCatalogService` ### đź“Ś **BĂşsqueda de datos** ```php use Koneko\SatCatalogs\Services\SatCatalogService; // Buscar bancos que coincidan con "Banamex" $bancos = SatCatalogService::searchCatalog('banco', 'Banamex'); // Obtener una clave de producto/servicio especĂfica $producto = SatCatalogService::searchCatalog('clave_prod_serv', '10101500'); ``` ### đź“Ś **Filtrar resultados** ```php // Obtener municipios del estado de Jalisco $municipios = SatCatalogService::searchCatalog('municipio', '', ['c_estado' => 'JAL']); // Obtener colonias por cĂłdigo postal $colonias = SatCatalogService::searchCatalog('colonia', '', ['c_codigo_postal' => '64000']); ``` ### đź“Ś **IntegraciĂłn con Select2** ```php $estados = SatCatalogService::searchCatalog('estado', '', ['select2Mode' => true]); ``` Salida esperada: ```php [ ['id' => 'JAL', 'text' => 'Jalisco'], ['id' => 'CDMX', 'text' => 'Ciudad de MĂ©xico'], ... ] ``` --- ## đź“‚ GeneraciĂłn de CSV desde el archivo del SAT El archivo **XLS** del SAT no está incluido en este repositorio por su tamaño y cambios frecuentes. Puedes descargarlo desde el sitio oficial: đź”— [Descargar archivo XLS del SAT](http://omawww.sat.gob.mx/tramitesyservicios/Paginas/anexo_20.htm) Una vez descargado, colĂłcalo en: database/data/catCFDI_V_4_xxxx.xls --- ## đź› Comandos Artisan disponibles ### 🔹 **Generar CSV desde XLS** ```bash php artisan sat:generate-csv catCFDI_V_4_20250213.xls --all ``` Convierte el archivo `XLS` del SAT a `CSV` optimizado. ### 🔹 **Importar catálogos SAT a la base de datos** ```bash php artisan sat:import-csv --update ``` Carga los archivos `CSV` en la base de datos. ## 🚀 Rutas Disponibles | MĂ©todo | Ruta | Controlador | DescripciĂłn | |--------|------|------------|-------------| | `POST` | `/catalogos/sat/get/{type}` | `SatCatalogController@catalogAjax` | Obtener datos de un catálogo vĂa AJAX. | Ejemplo de consumo vĂa AJAX: ```js $.post('/catalogos/sat/get/clave_prod_serv', { search: 'software' }, function(response) { console.log(response); }); ``` --- ## đź› Dependencias Este paquete requiere: - Laravel 11+ - PHP 8.1+ - PhpSpreadsheet para la manipulaciĂłn de archivos XLS. --- ## 🏗 Licencia Este paquete es de cĂłdigo abierto bajo la licencia **MIT**. ---Hecho con ❤️ por Koneko Soluciones TecnolĂłgicas