gfarias/laravel-previ-scraper

Extractor de indicadores previsionales y tramos de renta (previred/sii)

v1.1.0 2021-04-24 18:44 UTC

This package is auto-updated.

Last update: 2024-03-26 19:37:47 UTC


README

Indicadores previsionales Chile 🇨🇱

Codacy Badge tests codecov CodeFactor StyleCI Latest Stable Version Total Downloads License

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

image

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();

❤️