tax-cl 1.2.2 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -87,10 +87,10 @@ Retorna un objeto con las siguientes propiedades:
87
87
 
88
88
  ### `configurarDeclaracion(number: year) : void`
89
89
 
90
- Configura el año de la operación renta sobre la cual aplican los cálculos. Por defecto, el año de la declaración es **2023**.
90
+ Configura el año de la operación renta sobre la cual aplican los cálculos. Por defecto, el año de la declaración es **2024**.
91
91
 
92
92
  #### Arguments
93
93
 
94
94
  Recibe el siguiente argumento:
95
95
 
96
- * `year`: *(number)*, año de la operación renta para la realización de los cálculos. Los valores válidos son desde el 2018 hasta el 2024.
96
+ * `year`: *(number)*, año de la operación renta para la realización de los cálculos. Los valores válidos son desde el 2018 hasta el 2024.
package/lib/index.js CHANGED
@@ -14,7 +14,6 @@ exports.buscarTramoImpositivo = buscarTramoImpositivo;
14
14
  exports.calcularImpuestos = calcularImpuestos;
15
15
  exports.calcularDeuda = calcularDeuda;
16
16
  exports.calcular = calcular;
17
- exports.COTIZACIONES_OBLIGATORIAS = void 0;
18
17
 
19
18
  var _config = require("./config");
20
19
 
@@ -24,7 +23,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
24
23
 
25
24
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
25
 
27
- var OPERACION_RENTA_ACTUAL = 2023;
26
+ var OPERACION_RENTA_ACTUAL = 2024;
28
27
  var config = (0, _config.getConfig)(OPERACION_RENTA_ACTUAL);
29
28
  /**
30
29
  * Configura el año de la operación renta para los cálculos.
@@ -54,8 +53,22 @@ function calcularGastos(rentaAnual) {
54
53
 
55
54
  var COTIZACIONES_OBLIGATORIAS = [{
56
55
  name: "Seguro de invalidez y sobrevivencia (SIS)",
57
- percent: 1.54,
58
- // https://www.spensiones.cl/portal/institucional/594/w3-propertyvalue-9917.html#recuadros_articulo_4130_0
56
+ percent: function percent() {
57
+ // Esto cambia por año, no tengo seguridad de los años anteriores al 2022
58
+ // Aunque el uso de esta librería es más actual que histórico (importa año comercial presente y anterior)
59
+ // No me gusta que esto esté aquí, sin embargo, como hotfix está OK
60
+ // https://www.spensiones.cl/portal/institucional/594/w3-propertyvalue-9917.html#recuadros_articulo_4130_0
61
+ var SIS = {
62
+ 2018: 1.99,
63
+ 2019: 1.99,
64
+ 2020: 1.99,
65
+ 2021: 1.85,
66
+ 2022: 1.54,
67
+ 2023: 1.47,
68
+ 2024: 1.49
69
+ };
70
+ return SIS[config.OPERACION_RENTA - 1] || SIS[2023];
71
+ },
59
72
  variable: false
60
73
  }, {
61
74
  name: "Seguro de la ley de accidentes del trabajo y enfermedades profesionales (ATEP)",
@@ -75,7 +88,10 @@ var COTIZACIONES_OBLIGATORIAS = [{
75
88
  percent: 10.58,
76
89
  variable: true
77
90
  }];
78
- exports.COTIZACIONES_OBLIGATORIAS = COTIZACIONES_OBLIGATORIAS;
91
+
92
+ function getContributionPercentage(contribution) {
93
+ return typeof contribution.percent === 'function' ? contribution.percent() : contribution.percent;
94
+ }
79
95
 
80
96
  function calcularSueldoImponible(sueldoAnual) {
81
97
  var topeAnual = config.TOPE_IMPONIBLE_MENSUAL * config.UF * 12;
@@ -89,7 +105,7 @@ function simularCotizaciones(ingresos) {
89
105
  if (cotizacionParcial) {
90
106
  var sueldoImponibleParcial = sueldoImponible * config.COBERTURA_PARCIAL;
91
107
  return COTIZACIONES_OBLIGATORIAS.map(function (cotizacion) {
92
- var monto = (cotizacion.variable ? sueldoImponibleParcial : sueldoImponible) * cotizacion.percent / 100;
108
+ var monto = (cotizacion.variable ? sueldoImponibleParcial : sueldoImponible) * getContributionPercentage(cotizacion) / 100;
93
109
  return {
94
110
  name: cotizacion.name,
95
111
  percent: 100 * monto / sueldoImponible,
@@ -100,16 +116,16 @@ function simularCotizaciones(ingresos) {
100
116
  var remanente = calcularRetencion(sueldoImponible / 0.8);
101
117
  return COTIZACIONES_OBLIGATORIAS.map(function (cotizacion) {
102
118
  if (cotizacion.name === 'AFP') {
103
- var monto = min(remanente, sueldoImponible * cotizacion.percent / 100);
119
+ var monto = min(remanente, sueldoImponible * getContributionPercentage(cotizacion) / 100);
104
120
  return {
105
121
  name: cotizacion.name,
106
122
  percent: 100 * monto / sueldoImponible,
107
123
  value: monto
108
124
  };
109
125
  } else {
110
- var percent = cotizacion.percent;
126
+ var percent = getContributionPercentage(cotizacion);
111
127
 
112
- var _monto = sueldoImponible * cotizacion.percent / 100;
128
+ var _monto = sueldoImponible * percent / 100;
113
129
 
114
130
  remanente -= _monto;
115
131
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tax-cl",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "description": "Librería cálculo de impuestos y cotizaciones en Chile 🇨🇱",
5
5
  "main": "lib/index.js",
6
6
  "repository": "git@github.com:muZk/tax-cl.git",