2025-03-06 12:21:17 -06:00

136 lines
4.1 KiB
PHP

<?php
namespace Database\Seeders;
use Koneko\SatCatalogs\Imports\SatCatalogsImport;
use Koneko\SatCatalogs\Models\Banco;
use Koneko\SatCatalogs\Models\RegimenContratacion;
use Koneko\SatCatalogs\Models\Deduccion;
use Koneko\SatCatalogs\Models\Percepcion;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\File;
class SATCatalogsSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$file_path = database_path("data/catCFDI_V_4_20250213.xls");
$import = new SatCatalogsImport();
$import->onlySheets('c_ClaveProdServ');
Excel::import($import, $file_path);
$import->onlySheets('c_ClaveUnidad');
Excel::import($import, $file_path);
$import->onlySheets('c_CodigoPostal_Parte_1');
Excel::import($import, $file_path);
$import->onlySheets('c_CodigoPostal_Parte_2');
Excel::import($import, $file_path);
$import->onlySheets('C_Colonia_1');
Excel::import($import, $file_path);
$import->onlySheets('C_Colonia_2');
Excel::import($import, $file_path);
$import->onlySheets('C_Colonia_3');
Excel::import($import, $file_path);
$import->onlySheets('c_Estado');
Excel::import($import, $file_path);
$import->onlySheets('c_FormaPago');
Excel::import($import, $file_path);
$import->onlySheets('C_Localidad');
Excel::import($import, $file_path);
$import->onlySheets('c_Moneda');
Excel::import($import, $file_path);
$import->onlySheets('C_Municipio');
Excel::import($import, $file_path);
$import->onlySheets('c_Pais');
Excel::import($import, $file_path);
$import->onlySheets('c_RegimenFiscal');
Excel::import($import, $file_path);
$import->onlySheets('c_UsoCFDI');
Excel::import($import, $file_path);
// Lee el archivo JSON desde el storage
$json = File::get(database_path('data/catalogo_sat_bancos.json'));
// Convierte el contenido JSON a un array asociativo
$bancos = json_decode($json, true);
// Inserta cada banco en la base de datos
foreach ($bancos as $banco) {
Banco::create([
'c_banco' => $banco['c_banco'],
'descripcion' => $banco['descripcion'],
'razon_social' => $banco['razon_social'],
'rfc' => null,
'status' => Banco::STATUS_ENABLED
]);
}
// Leer el archivo JSON desde la ruta especificada
$json = File::get(database_path('data/catalogo_sat_regimenes_contratacion.json'));
// Decodificar el JSON en un array asociativo
$regimenes = json_decode($json, true);
// Insertar cada régimen en la base de datos
foreach ($regimenes as $c_tipo_regimen => $descripcion) {
RegimenContratacion::create([
'c_tipo_regimen' => $c_tipo_regimen,
'descripcion' => $descripcion,
'fecha_inicio_de_vigencia' => null,
'fecha_fin_de_vigencia' => null
]);
}
// Leer el archivo JSON desde la ruta especificada
$json = File::get(database_path('data/catalogo_sat_percepciones_deducciones.json'));
// Decodificar el JSON en un array asociativo
$catalogo = json_decode($json, true);
// Insertar percepciones
foreach ($catalogo['percepciones'] as $percepcion) {
Percepcion::create([
'c_percepcion' => $percepcion['clave'],
'descripcion' => $percepcion['descripcion'],
'fecha_inicio_de_vigencia' => null,
'fecha_fin_de_vigencia' => null,
]);
}
// Insertar deducciones
foreach ($catalogo['deducciones'] as $deduccion) {
Deduccion::create([
'c_deduccion' => $deduccion['clave'],
'descripcion' => $deduccion['descripcion'],
'fecha_inicio_de_vigencia' => null,
'fecha_fin_de_vigencia' => null,
]);
}
}
}