Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/05/2013, 21:21
Avatar de Kergan
Kergan
 
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Pregunta Calculo de impuesto isr de mexico

Ahora si que estoy quebrandome la cabeza con esto pero confio en que alguien podra ayudarme con esto ya que son unos gurus en este foro .

Necesito desarrollar un procedimiento el cual pueda realizar el cálculo del ISR que debe de ser retenido a una seria de empleados basado en su sueldo.

Para poder calcular el ISR es necesario tener una tabla en la base de datos que contenga la siguiente información:

Código Tabla:
Ver original
  1. Límite Inferior     Límite Superior         Cuota Fija      % Retención
  2. 0.01                496.07                  0               1.92
  3. 496.08              4,210.41                9.52            6.40
  4. 4,210.42            7,399.42                247.23          10.88
  5. 7,399.43            8,601.50                594.24          16.00
  6. 8,601.51            10,298.35               786.55          17.92
  7. 10,298.36           20,770.29               1,090.62        21.36
  8. 20,770.30           32,736.83               3,327.42        23.52
  9. 32,736.84           En adelante             6,141.95        30.00



Los pasos para el cálculo del ISR son los siguientes:

1. Se ubica el sueldo en la tabla para saber el % y la cuota fija. La ubicación debe de ser entre el Límite inferior y Límite superior.
2. Se resta al sueldo gravable el límite inferior
3. Al resultado se multiplica por el porcentaje (eje. 28%)
4. Al resultado se suma la cuota fija.
5. Y el resultado es el impuesto bruto ISR.

Hasta ahora llevo esto hecho:

Código SQL:
Ver original
  1. CREATE TABLE Datos_ISR
  2. (   ID_ISR              NUMBER NOT NULL,
  3.     Limite_Inferior     NUMBER NOT NULL,
  4.     Limite_Superior     NUMBER NOT NULL,
  5.     Cuota_Fija          NUMBER NOT NULL,
  6.     Porcentaje          NUMBER NOT NULL);

Código SQL:
Ver original
  1. INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(1,0.01,496.07,0,1.92);
  2.     INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(2,496.08,4210.41,9.52,6.4);
  3.     INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(3,4210.42,7399.42,247.23,10.88);
  4.     INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(4,7399.43,8601.5,594.24,16):
  5.     INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(5,8601.51,10298.35,786.55,17.92);
  6.     INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(6,10298.36,20770.29,1090.62,21.36);
  7.     INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(7,20770.3,32736.83,3327.42,23.52);
  8.     INSERT INTO Datos_ISR(ID_ISR,Limite_Inferior,Limite_Superior,Cuota_Fija,Porcentaje) VALUES(8,32736.84,9999999.00,6141.95,30);

Código SQL:
Ver original
  1. CREATE TABLE Empleados
  2. (   ID_Empleado         NUMBER NOT NULL,
  3.     Nombre_Empleado     NUMBER NOT NULL,
  4.     Sueldo_Gravable     NUMBER NOT NULL,
  5.     Total_ISR           NUMBER NOT NULL,
  6.     Porcentaje          NUMBER NOT NULL,
  7.     Sueldo_Recibido     NUMBER NOT NULL,
  8.     Creado_Por          varchar2(30),
  9.     Fecha_Creacion      DATE);

Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE calculoISR (
  2.     Sueldo_Gravable     IN  NUMBER,
  3.     Sueldo_Recibido     OUT NUMBER,
  4.     Total_ISR           OUT NUMBER,
  5.     Porcentaje          OUT NUMBER
  6.     )
  7. AS
  8.  
  9.     Limite_Inferior     NUMBER;
  10.     Cuota_Fija          NUMBER;
  11.  
  12. BEGIN
  13.  
  14.     CASE
  15.    
  16.         WHEN Sueldo_Gravable > 0.01 && Sueldo_Gravable < 496.07
  17.             THEN SELECT Limite_Inferior, Cuota_Fija
  18.                  INTO   :Limite_Inferior, :Cuota_Fija
  19.                  FROM   Datos_ISR
  20.                  WHERE  ID_ISR = :1;
  21.         WHEN Sueldo_Gravable > 496.08 && Sueldo_Gravable < 4210.41
  22.             THEN SELECT Limite_Inferior, Cuota_Fija
  23.                  INTO   :Limite_Inferior, :Cuota_Fija
  24.                  FROM   Datos_ISR
  25.                  WHERE  ID_ISR = :2;
  26.    
  27.     END CASE;
  28.                  
  29.         Total_ISR := (Sueldo_Gravable - (Limite_Inferior * Porcentaje) + Cuota_Fija);
  30.         Sueldo_Recibido := Sueldo_Gravable - Total_ISR;
  31.    
  32. END operacion;
  33. /

Obviamente tengo incompleto el Procedure no se siquiera si ando cerca lo que necesito es que dando el sueldo_gravable se calculen automaticamente el sueldo_recibido, el Total_ISR y el porcentaje creo que esto ayudaria mucho a la gente de Mexico ya que es un calculo muy comun aqui para las nominas de empleados.

Espero alguien se tome la molestia de por lo menos intentar ayudarme o guiarme hacia la respuesta :P.

Última edición por Kergan; 29/05/2013 a las 23:08 Razón: Actualizacion de datos