Extractor de indicadores previsionales y tramos de renta (previred/sii)
gfarias/laravel-previ-scraper is a Laravel package for extractor de indicadores previsionales y tramos de renta (previred/sii).
It currently has 10 GitHub stars and 438 downloads on Packagist (latest version v1.1.0).
Install it with composer require gfarias/laravel-previ-scraper.
Discover more Laravel packages by gfarias
or browse all Laravel packages to compare alternatives.
Last updated
Indicadores previsionales desde Previred y tramos de impuesto desde SII
Los datos se obtienen utilizando web scraping (Previred - Sii)
Corre el siguiente comando en la terminal:
composer require gfarias/laravel-previ-scraper
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());
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

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
)
)
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 |
$previScraper = new PreviScraper();
$previred = $previScraper->previred();
$rentaTopeImponible = $previred->getRentaTopeImponibleCesantia();
$porcentajeSisAfpHabitat = $previred->getAfpHabitat()->getPorcentajeSis();
$aporteCesantiaEmpleadorPlazoFijo = $previred->getSeguroCesantia()->getPlazoFijoEmpleador();
❤️