Coder Social home page Coder Social logo

guillermofarias / laravel-previ-scraper Goto Github PK

View Code? Open in Web Editor NEW
11.0 3.0 0.0 179 KB

Paquete laravel para leer indicadores previsionales desde Previred y tramos de impuesto de 2da categoría desde SII

License: MIT License

PHP 63.99% Dockerfile 0.98% HTML 35.04%

laravel-previ-scraper's Introduction

Laravel PreviScraper

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

❤️

laravel-previ-scraper's People

Contributors

codacy-badger avatar guillermofarias avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

laravel-previ-scraper's Issues

Problema al instalar la libreria en PHP 7.3

Hola actualmente tengo php 7.4 y debería poder permitirme instalarlo yq eu dice que acepta desde acepta 7.3 al tratar de hacerlo me muestra el error:

Problem 1
- illuminate/support[v9.0.0-beta.1, ..., 9.x-dev] require php ^8.0.2 -> your php version (7.4.16) does not satisfy that requirement.
- Root composer.json requires gfarias/laravel-previ-scraper 1.1.0 -> satisfiable by gfarias/laravel-previ-scraper[v1.1.0].
- Conclusion: don't install laravel/framework v7.22.3 (conflict analysis result)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.