gfarias / laravel-previ-scraper
Extractor de indicadores previsionales y tramos de renta (previred/sii)
Requires
- php: ^7.3|^8.0
- illuminate/support: ^7.0|^8.0
- weidner/goutte: ^2.1
Requires (Dev)
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2025-02-26 21:31:54 UTC
README
Indicadores previsionales Chile 🇨🇱
Indicadores previsionales desde Previred y tramos de impuesto desde SII
Los datos se obtienen utilizando web scraping (Previred - Sii)
Instalación
Corre el siguiente comando en la terminal:
composer require gfarias/laravel-previ-scraper
Cómo se usa
Puedes utilizar el provider e inyectarlo directo en los métodos ejecutados por el framework:
public function handle(PreviScraper $previScraper): void { $sii = $previScraper->sii(); print_r($sii->all()); }
o instanciar directamente PreviScraper :
$previScraper = new Gfarias\PreviScraper\PreviScraper(); $previred = $previScraper->previred(); $sii = $previScraper->sii(); print_r($previred->all()); print_r($sii->all());
Sii - Impuesto segunda categoría
Soporta desde el año 2013+
método | retorno |
---|---|
getTramosMensuales() |
array |
getTramosQuincenales() |
array |
getTramosSemanales() |
array |
getTramosDiarios() |
array |
all() |
array |
Cada método entrega un arreglo con el conjunto de tramos disponibles en SII, a su vez, cada tramo contiene los siguientes datos:
nombre | tipo de dato | descripción |
---|---|---|
periodo | string | [mensual ,quincenal , semanal , diario ] |
desde | float | renta mínima del tramo |
hasta | float | renta tope del tramo |
factor | float | factor de cálculo |
descuento | float | Cantidad a rebajar |
impuesto | float | Tasa de Impuesto Efectiva, máxima por cada tramo de Renta |
En resumen, es una fiel representación de la web de SII
Ejemplos de uso
Obtener indicadores mensuales del periodo Enero 2021
$previScraper = new PreviScraper(); $indicadoresMensuales = $previScraper->sii(5, 2021)->getIndicadoresMensuales(); print_r($indicadoresMensuales);
El output de estos indicadores sería:
Array ( [0] => Array ( [periodo] => mensual [desde] => 0 [hasta] => 680022 [factor] => 0 [descuento] => 0 [impuesto] => 0 ) [1] => Array ( [periodo] => mensual [desde] => 680022.01 [hasta] => 1511160 [factor] => 0.04 [descuento] => 27200.88 [impuesto] => 2.2 ) [2] => Array ( [periodo] => mensual [desde] => 1511160.01 [hasta] => 2518600 [factor] => 0.08 [descuento] => 87647.28 [impuesto] => 4.52 ) [3] => Array ( [periodo] => mensual [desde] => 2518600.01 [hasta] => 3526040 [factor] => 0.135 [descuento] => 226170.28 [impuesto] => 7.09 ) [4] => Array ( [periodo] => mensual [desde] => 3526040.01 [hasta] => 4533480 [factor] => 0.23 [descuento] => 561144.08 [impuesto] => 10.62 ) [5] => Array ( [periodo] => mensual [desde] => 4533480.01 [hasta] => 6044640 [factor] => 0.304 [descuento] => 896621.6 [impuesto] => 15.57 ) [6] => Array ( [periodo] => mensual [desde] => 6044640.01 [hasta] => 15615320 [factor] => 0.35 [descuento] => 1174675.04 [impuesto] => 27.48 ) [7] => Array ( [periodo] => mensual [desde] => 15615320.01 [hasta] => 0 [factor] => 0.4 [descuento] => 1955441.04 [impuesto] => 27.48 ) )
Previred
Por ahora solo soporta el periodo actual en el sitio de previred, una buena implementación sería un lector PDF para obtener datos de períodos anteriores
método | retorno |
---|---|
getUF() |
float |
getUTM() |
float |
getRentaTopeImponibleAfp() |
float |
getRentaTopeImponibleIps() |
float |
getRentaTopeImponibleCesantia() |
float |
getRentaMinimaImponibleDependiente() |
float |
getRentaMinimaImponibleMenores() |
float |
getRentaMinimaImponibleParticulares() |
float |
getSeguroCesantia() |
\Gfarias\PreviScraper\CesantiaSupport |
getTopeApvMensual() |
float |
getTopeAPVAnual() |
float |
getAfpCapital() |
\Gfarias\PreviScraper\AfpSupport |
getAfpCuprum() |
\Gfarias\PreviScraper\AfpSupport |
getAfpHabitat() |
\Gfarias\PreviScraper\AfpSupport |
getAfpPlanVital() |
\Gfarias\PreviScraper\AfpSupport |
getAfpProVida() |
\Gfarias\PreviScraper\AfpSupport |
getAfpModelo() |
\Gfarias\PreviScraper\AfpSupport |
getAfpUno() |
\Gfarias\PreviScraper\AfpSupport |
getAsignacionTramoAMonto() |
float |
getAsignacionTramoBMonto() |
float |
getAsignacionTramoCMonto() |
float |
getAsignacionTramoA() |
float |
getAsignacionTramoB() |
float |
getAsignacionTramoC() |
float |
getAsignacionTramoD() |
float |
all() |
array |
CesantiaSupport
Datos específicos del seguro de cesantía
método | retorno |
---|---|
getIndefinidoEmpleador() |
float |
getIndefinidoTrabajador() |
float |
getPlazoFijoEmpleador() |
float |
getIndefinidoSobre11Empleador() |
float |
getCasaParticularEmpleador() |
float |
toArray() |
array |
AfpSupport
Datos específicos de cada AFP
método | retorno |
---|---|
getNombre() |
string |
getCodigo() |
string |
getPorcentajeDependiente() |
float |
getPorcentajeSis() |
float |
getPorcentajeIndependiente() |
float |
toArray() |
array |
Ejemplo de uso
$previScraper = new PreviScraper(); $previred = $previScraper->previred(); $rentaTopeImponible = $previred->getRentaTopeImponibleCesantia(); $porcentajeSisAfpHabitat = $previred->getAfpHabitat()->getPorcentajeSis(); $aporteCesantiaEmpleadorPlazoFijo = $previred->getSeguroCesantia()->getPlazoFijoEmpleador();
❤️