1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
| Option Explicit
Public Function Calcular_ISPT_Anual(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
'
'*****************************************************************************************************
Dim ISPT_anual(8, 2) As Double
Dim CREDITO_AL_SALARIO_ANUAL(10, 1) As Double
Dim ISPT_LimiteInferior As Double
Dim CuotaFija As Double
Dim PorcentajeSobreExcedente As Double
Dim i As Integer
Dim ISPT As Double
Dim CreditoAlSalario 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) = 999999999# 'Limite superior muy alto
'Cuota fija
ISPT_anual(0, 1) = 0
ISPT_anual(1, 1) = 114.24
ISPT_anual(2, 1) = 2966.76
ISPT_anual(3, 1) = 7130.88
ISPT_anual(4, 1) = 9438.6
ISPT_anual(5, 1) = 13087.44
ISPT_anual(6, 1) = 38139.6
ISPT_anual(7, 1) = 69662.4
ISPT_anual(8, 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.1994
ISPT_anual(6, 2) = 0.2195
ISPT_anual(7, 2) = 0.28
ISPT_anual(8, 2) = 0
'CREDITO AL SALARIO ANUAL
'==============================
'Limite inferior
CREDITO_AL_SALARIO_ANUAL(0, 0) = 0.01
CREDITO_AL_SALARIO_ANUAL(1, 0) = 1768.97
CREDITO_AL_SALARIO_ANUAL(2, 0) = 2653.39
CREDITO_AL_SALARIO_ANUAL(3, 0) = 3472.85
CREDITO_AL_SALARIO_ANUAL(4, 0) = 3537.88
CREDITO_AL_SALARIO_ANUAL(5, 0) = 4446.16
CREDITO_AL_SALARIO_ANUAL(6, 0) = 4717.19
CREDITO_AL_SALARIO_ANUAL(7, 0) = 5335.43
CREDITO_AL_SALARIO_ANUAL(8, 0) = 6224.68
CREDITO_AL_SALARIO_ANUAL(9, 0) = 7113.91
CREDITO_AL_SALARIO_ANUAL(10, 0) = 7382.34
'Credito
CREDITO_AL_SALARIO_ANUAL(0, 1) = 407.02
CREDITO_AL_SALARIO_ANUAL(1, 1) = 406.83
CREDITO_AL_SALARIO_ANUAL(2, 1) = 406.62
CREDITO_AL_SALARIO_ANUAL(3, 1) = 392.77
CREDITO_AL_SALARIO_ANUAL(4, 1) = 382.46
CREDITO_AL_SALARIO_ANUAL(5, 1) = 354.23
CREDITO_AL_SALARIO_ANUAL(6, 1) = 324.87
CREDITO_AL_SALARIO_ANUAL(7, 1) = 294.63
CREDITO_AL_SALARIO_ANUAL(8, 1) = 253.54
CREDITO_AL_SALARIO_ANUAL(9, 1) = 217.61
CREDITO_AL_SALARIO_ANUAL(10, 1) = 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 = 9
'Ya tenemos los valores de Cuota Fija y Porcentaje sobre excedente, procedemos a calcular el ISPT Anual
ISPT = Round(CuotaFija + ((PercepcionesGravables - ISPT_LimiteInferior) * PorcentajeSobreExcedente), 2)
'Ahora Buscamos el crédito al Salario.
CreditoAlSalario = 0
i = 0
Do
If CREDITO_AL_SALARIO_ANUAL(i, 0) > (PercepcionesGravables / 12) Then
CreditoAlSalario = CREDITO_AL_SALARIO_ANUAL(i - 1, 1)
Exit Do
Else
i = i + 1
End If
Loop Until i = 10
Calcular_ISPT_Anual = ISPT - (CreditoAlSalario * 12)
End Function |