Me han pedido en el trabajo que desarrolle una función para calcular el ISPT anual en excel. Para ser sincero hace mucho tiempo que no programo en este lenguaje así que por favor sean piadosos si cometo una que otra barbaridad.
Para el cálculo del ISPT es necesario consultar un tabulador. Para hacer el cálculo más rápido decidí incluirlas en una matriz, la función busca los valores apropiados de la Cuota Fija y el Porcentaje sobre excedente.
También busca el Crédito al salario, así que el resultado de la función es negativo quiere decir que es a favor.
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 |
La función es Software Libre y claro que es perfectible, si quieren hacer alguna corrección o sugerir alguna modificación adelante.
Si lo prefieren pueden descargar una hoja de cálculo de ejemplo Calculo del ISPT.
Actualización.
Me dicen que esta función en realidad calcula la Retención del ISR para sueldos y salarios y el Crédito al salario ahora se le llama Subsidio para el empleo, la verdad no soy contador y desconozco los términos correctos. A lo único que le veo problema es con el nombre de las variables. En fin, si es necesario haré una versión 2 corregida y aumentada.
Popularity: 11%

Inicio