Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/05/2013, 08:24
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Calculo de impuesto isr de mexico

Hola Kergan

Veo que te estas complicando en el PL haciendo uso del CASE.

Mira esto:
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.     v_porcentaje          OUT NUMBER
  6.     )
  7. AS
  8.  
  9.     v_limite_inferior     NUMBER;
  10.     v_cuota_fija          NUMBER;
  11.  
  12. BEGIN
  13.    
  14.     --Paso 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.
  15.     SELECT limite_inferior,
  16.            cuota_fija,
  17.            porcentaje
  18.     INTO
  19.            v_limite_inferior,
  20.            v_cuota_fija,
  21.            v_porcentaje
  22.     FROM datos_ISR
  23.     WHERE Sueldo_Gravable BETWEEN limite_inferior AND limite_superior;
  24.    
  25.     --Paso 2: Se resta al sueldo gravable el límite inferior
  26.     Total_ISR := Sueldo_Gravable - v_limite_inferior;
  27.    
  28.     --Paso 3: Al resultado se multiplica por el porcentaje (eje. 28%)
  29.     Total_ISR := Total_ISR * v_porcentaje;
  30.    
  31.     --Paso 4: Al resultado se suma la cuota fija.
  32.     Total_ISR := Total_ISR + v_cuota_fija;
  33.    
  34.     Sueldo_Recibido := Sueldo_Gravable + Total_ISR;
  35.    
  36. END calculoISR;
  37. /

En los pasos que mencionas no entendí bien como sale el sueldo recibido. Yo lo puse como la suma del sueldo gravable mas el total ISR.

Para probar el procedimiento puedes ejecutar este bloque anonimo.

Código SQL:
Ver original
  1. DECLARE
  2.  v_sueldo_gravable NUMBER := &SUELDO;
  3.  v_sueldo_recibido NUMBER;
  4.  v_total_isr NUMBER;
  5.  v_porcentaje NUMBER;
  6. BEGIN
  7.  calculoISR(v_sueldo_gravable, v_sueldo_recibido, v_total_isr,v_porcentaje);
  8.  DBMS_OUTPUT.PUT_LINE('El sueldo recibido es: '||v_sueldo_recibido);
  9.  DBMS_OUTPUT.PUT_LINE('El total ISR es: '||v_total_isr);
  10.  DBMS_OUTPUT.PUT_LINE('El porcentaje es: '||v_porcentaje);
  11. END;
  12. /

Ya solo es cuestión que revises los calculos. Soy de Colombia y no tengo idea de que hablas
__________________
Without data, You are another person with an opinion.
W. Edwads Deming