Esta en una función que es útil para el calculo de la Retención del Impuesto sobre la Renta de los empleados permanentes con las tablas de la reforma del 14 de diciembre del 2011, vigentes en el Salvador.
Funciona en Calc de Open office. En Linux, así también en Windows
se necesita copiar el código en macros de calc.luego en la hoja de Cal se debe introducir el Monto devengado y el código de retención que para el caso 1 seria el calculo semanal caso 2 calculo quincenal y caso 3 el calculo mensual.
Este es el código.
REM ***** BASIC *****
REM ***** BASIC *****
REM **********FUNCION PARA CALCULO DEL IMPUESTO SOBRE LA RENTA**********
Option Explicit
Function ISRENTA002(sueldo As Variant , Per AS Integer) as variant
Dim AFP as Variant, MSujeto as Variant
Dim Impuesto As Variant
Dim Exceso As Variant
Dim Tabla1 As Variant, Tabla2 As Variant, Tabla3 As Variant, Tabla4 As Variant, des As Variant
Dim Cfija1 As Variant, Cfija2 As Variant,Cfija3 As Variant, Cfija4 As Variant
IF Sueldo > 0 then
AFP = sueldo * 0.0625
MSujeto = sueldo - AFP
' SELECCION DEL PERIODO PUEDE SER SEMANAL QUINCENAL O MENSUAL
Select Case Per
'CALCULO DEL IMPUESTO SOBRE LA RENTA QUINCENAL
Case 2
Tabla1 = 243.80
Tabla2 = 321.42
Tabla3 = 457.90
Tabla4 = 1029.33
Cfija1 = 8.74
Cfija2 = 16.35
Cfija3 = 30.00
Cfija4 = 144.28
Impuesto = Calculo001(MSujeto,Tabla1,Tabla2, Tabla3,Tabla4, Cfija1,Cfija2,Cfija3,Cfija4)
Case 1'CALCULO DEL IMPUESTO MENSUAL
Tabla1 = 487.60
Tabla2 = 642.85
Tabla3 = 915.81
Tabla4 = 2058.67
Cfija1 = 17.48
Cfija2 = 32.70
Cfija3 = 60.00
Cfija4 = 288.57
Impuesto = Calculo001(MSujeto,Tabla1,Tabla2, Tabla3,Tabla4, Cfija1,Cfija2,Cfija3,Cfija4)
case 3'CALCULO DEL IMPUESTO SEMANAL
Tabla1 = 121.90
Tabla2 = 160.71
Tabla3 = 228.95
Tabla4 = 514.66
Cfija1 = 4.37
Cfija2 = 8.17
Cfija3 = 15.00
Cfija4 = 72.14
Impuesto = Calculo001(MSujeto,Tabla1,Tabla2, Tabla3,Tabla4, Cfija1,Cfija2,Cfija3,Cfija4)
Case else
'CALCULO DEL IMPUESTO SOBRE LA RENTA MENSUAL
MsgBox "Error de codigo: Codigo 1 = Mensual; Codigo 2 = Quicenal; Codigo 3 = Semanal",64
ISRENTA002 = ""
exit Function
end Select
Else
Impuesto = " "
end If
ISRENTA002 = Impuesto
end function
REM ***********FUNCION DE CALCULO GENERAL************
function Calculo001(Ms As Variant,Ran1 As Variant,Ran2 As Variant,Ran3 As Variant,Ran4 As Variant, cf1 As Variant, cf2 As Variant, cf3 As Variant, cf4 As Variant ) As Variant
Dim Impues As Variant
Dim Porc As Variant
Dim Impcont As Variant
Dim Exceso As Variant
' MS MONTO SUJETO
' Ran1 Rango de de tabla
If MS >= 0 and MS <= Ran1 Then
Impues = 0
Else If MS > Ran1 and MS <= Ran2 Then
Exceso = MS - Ran1
Porc = Exceso * 0.10
Impues = cf1 + Porc
Else If MS > Ran2 and MS <= Ran3 then
Exceso = MS - Ran2
Porc = Exceso * 0.10
Impues = cf2 + Porc
Else If MS > Ran3 and MS <= Ran4 then
Exceso = MS - Ran3
Porc = Exceso * 0.20
Impues = cf3 + Porc
else
Exceso = MS - Ran4
Porc = Exceso * 0.30
Impues = cf4 + Porc
end If
end IF
end if
end if
Calculo001 = Impues
end function
REM ***** BASIC *****
REM **********FUNCION PARA CALCULO DEL IMPUESTO SOBRE LA RENTA**********
Option Explicit
Function ISRENTA002(sueldo As Variant , Per AS Integer) as variant
Dim AFP as Variant, MSujeto as Variant
Dim Impuesto As Variant
Dim Exceso As Variant
Dim Tabla1 As Variant, Tabla2 As Variant, Tabla3 As Variant, Tabla4 As Variant, des As Variant
Dim Cfija1 As Variant, Cfija2 As Variant,Cfija3 As Variant, Cfija4 As Variant
IF Sueldo > 0 then
AFP = sueldo * 0.0625
MSujeto = sueldo - AFP
' SELECCION DEL PERIODO PUEDE SER SEMANAL QUINCENAL O MENSUAL
Select Case Per
'CALCULO DEL IMPUESTO SOBRE LA RENTA QUINCENAL
Case 2
Tabla1 = 243.80
Tabla2 = 321.42
Tabla3 = 457.90
Tabla4 = 1029.33
Cfija1 = 8.74
Cfija2 = 16.35
Cfija3 = 30.00
Cfija4 = 144.28
Impuesto = Calculo001(MSujeto,Tabla1,Tabla2, Tabla3,Tabla4, Cfija1,Cfija2,Cfija3,Cfija4)
Case 1'CALCULO DEL IMPUESTO MENSUAL
Tabla1 = 487.60
Tabla2 = 642.85
Tabla3 = 915.81
Tabla4 = 2058.67
Cfija1 = 17.48
Cfija2 = 32.70
Cfija3 = 60.00
Cfija4 = 288.57
Impuesto = Calculo001(MSujeto,Tabla1,Tabla2, Tabla3,Tabla4, Cfija1,Cfija2,Cfija3,Cfija4)
case 3'CALCULO DEL IMPUESTO SEMANAL
Tabla1 = 121.90
Tabla2 = 160.71
Tabla3 = 228.95
Tabla4 = 514.66
Cfija1 = 4.37
Cfija2 = 8.17
Cfija3 = 15.00
Cfija4 = 72.14
Impuesto = Calculo001(MSujeto,Tabla1,Tabla2, Tabla3,Tabla4, Cfija1,Cfija2,Cfija3,Cfija4)
Case else
'CALCULO DEL IMPUESTO SOBRE LA RENTA MENSUAL
MsgBox "Error de codigo: Codigo 1 = Mensual; Codigo 2 = Quicenal; Codigo 3 = Semanal",64
ISRENTA002 = ""
exit Function
end Select
Else
Impuesto = " "
end If
ISRENTA002 = Impuesto
end function
REM ***********FUNCION DE CALCULO GENERAL************
function Calculo001(Ms As Variant,Ran1 As Variant,Ran2 As Variant,Ran3 As Variant,Ran4 As Variant, cf1 As Variant, cf2 As Variant, cf3 As Variant, cf4 As Variant ) As Variant
Dim Impues As Variant
Dim Porc As Variant
Dim Impcont As Variant
Dim Exceso As Variant
' MS MONTO SUJETO
' Ran1 Rango de de tabla
If MS >= 0 and MS <= Ran1 Then
Impues = 0
Else If MS > Ran1 and MS <= Ran2 Then
Exceso = MS - Ran1
Porc = Exceso * 0.10
Impues = cf1 + Porc
Else If MS > Ran2 and MS <= Ran3 then
Exceso = MS - Ran2
Porc = Exceso * 0.10
Impues = cf2 + Porc
Else If MS > Ran3 and MS <= Ran4 then
Exceso = MS - Ran3
Porc = Exceso * 0.20
Impues = cf3 + Porc
else
Exceso = MS - Ran4
Porc = Exceso * 0.30
Impues = cf4 + Porc
end If
end IF
end if
end if
Calculo001 = Impues
end function
Este código puede ser útil para contadores o personas que elaboran planillas.
La manera de llamarla es la siguiente.
En una columna los sueldos devengados y en la columna del calculo escriben la función
=ISRENTA002(columna; código)