REM ***** BASIC *****
Function ISPT_Anual_2014(ByVal PercepcionesGravables As Double) As Double
'*****************************************************************************************************
' FUNCION PARA CALCULAR EL ISPT ANUAL
' Copyright (C) 2012 Francisco Javier de la Torre '
' Este código es software libre. Puede redistribuirlo y/o modificarlo bajo los términos de la
' Licencia Pública General de GNU según es publicada por la Free Software Foundation, bien de la
' versión 2 de dicha Licencia o bien (según su elección) de cualquier versión posterior.
' Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso
' sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR.
' Véase la Licencia Pública General de GNU para más detalles.
' Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha
' sido así, escriba a la Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU.
'
' Francisco Javier de la Torre.
' http://linuxmanr4.com
' inguanzo@gmail.com
'
' Actualización para el año 2014.
' Actualizacion y Correcciones para el 2012 gracias a Glezco21 y GRR.
'
'*****************************************************************************************************
Dim ISPT_anual(11, 2) As Double
Dim SUBSIDIO_AL_EMPLEO_ANUAL(11, 1) As Double
Dim ISPT_LimiteInferior As Double
Dim CuotaFija As Double
Dim PorcentajeSobreExcedente As Double
Dim i As Integer
Dim ISPT As Double
'Definición de las tablas iniciales
'ISPT ANUAL
'==============================
'Limite inferior
ISPT_anual(0, 0) = 0.01
ISPT_anual(1, 0) = 5952.85
ISPT_anual(2, 0) = 50524.93
ISPT_anual(3, 0) = 88793.05
ISPT_anual(4, 0) = 103218.01
ISPT_anual(5, 0) = 123580.21
ISPT_anual(6, 0) = 249243.49
ISPT_anual(7, 0) = 392841.97
ISPT_anual(8, 0) = 750000.01
ISPT_anual(9, 0) = 1000000.01
ISPT_anual(10, 0) = 3000000.01
ISPT_anual(11, 0) = 999999999 'Limite superior muy alto
'Cuota fija
ISPT_anual(0, 1) = 0
ISPT_anual(1, 1) = 114.29
ISPT_anual(2, 1) = 2966.91
ISPT_anual(3, 1) = 7130.48
ISPT_anual(4, 1) = 9438.47
ISPT_anual(5, 1) = 13087.37
ISPT_anual(6, 1) = 39929.05
ISPT_anual(7, 1) = 73703.41
ISPT_anual(8, 1) = 180850.82
ISPT_anual(9, 1) = 260850.81
ISPT_anual(10, 1) = 940850.81
ISPT_anual(11, 1) = 0
'Porcentaje sobre excedente
ISPT_anual(0, 2) = 0.0192
ISPT_anual(1, 2) = 0.064
ISPT_anual(2, 2) = 0.1088
ISPT_anual(3, 2) = 0.16
ISPT_anual(4, 2) = 0.1792
ISPT_anual(5, 2) = 0.2136
ISPT_anual(6, 2) = 0.2352
ISPT_anual(7, 2) = 0.3
ISPT_anual(8, 2) = 0.32
ISPT_anual(9, 2) = 0.34
ISPT_anual(10, 2) = 0.35
ISPT_anual(11, 2) = 0
'Iniciamos el cálculo del ISPT anual.
CuotaFija = 0: PorcentajeSobreExcedente = 0
'Buscamos un valor apropiado en la tabla del ISPT Anual
i = 0
Do
If ISPT_anual(i, 0) > PercepcionesGravables Then
ISPT_LimiteInferior = ISPT_anual(i - 1, 0)
CuotaFija = ISPT_anual(i - 1, 1)
PorcentajeSobreExcedente = ISPT_anual(i - 1, 2)
Exit Do
Else
i = i + 1
End If
Loop Until i = 12
'Ya tenemos los valores de Cuota Fija y Porcentaje sobre excedente, procedemos a calcular el ISPT Anual
ISPT = CuotaFija + ((PercepcionesGravables - ISPT_LimiteInferior) * PorcentajeSobreExcedente)
ISPT_Anual_2014 = Format(ISPT,"000000000000000.00")
End Function