Ver Mensaje Individual
  #9 (permalink)  
Antiguo 03/05/2013, 14:18
Avatar de tanliz
tanliz
 
Fecha de Ingreso: abril-2013
Ubicación: Irapuato
Mensajes: 63
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Procedimiento nomina

Mmm si, y disculpa mi ignorancia... pero ya agregado el IFNULL a las demás variables, pero aun no soluciono mi problema... que me parece esta en estas consultas:

Código MySQL:
Ver original
  1. SET TDeducciones = (SELECT SUM(Monto) FROM descuentos_empleados WHERE (Fecha>=FechaI AND Fecha<=FechaF) AND Empleado_Id=EmpleadoId AND Estatus_Descuento='Pendiente'); 
  2.     SET Percepciones_Comisiones = (SELECT SUM(Comision) FROM comisiones WHERE (Fecha>=FechaI AND Fecha<=FechaF) AND Empleado_Id=EmpleadoId AND Estatus_Comision='Pendiente');
  3.     SET Percepciones_Bonos = (SELECT SUM(Monto) FROM bonos WHERE (Fecha>=FechaI AND Fecha<=FechaF) AND Empleado_Id=EmpleadoId AND Estatus_Bono='Pendiente');


el procedimiento ha quedado asi:

Código MySQL:
Ver original
  1. CREATE DEFINER=`proi`@`localhost` PROCEDURE `Alta_Nomina`(IN NominaId VARCHAR(5),
  2.                             IN EmpleadoId VARCHAR(5),
  3.                             IN FechaI DATETIME,
  4.                             IN FechaF DATETIME,
  5.                             OUT TDeducciones DECIMAL(10,2),
  6.                             OUT Percepciones_Comisiones DECIMAL(10,2),
  7.                             OUT Percepciones_Bonos DECIMAL(10,2),
  8.                             OUT Total_Percepciones DECIMAL(10,2),
  9.                             OUT Sueldoq DECIMAL(10,2),
  10.                             OUT Total_Quincena DECIMAL(10,2))
  11.     DECLARE fecha DATETIME;
  12.    
  13.     SET TDeducciones = (SELECT SUM(Monto) FROM descuentos_empleados WHERE (Fecha>=FechaI AND Fecha<=FechaF) AND Empleado_Id=EmpleadoId AND Estatus_Descuento='Pendiente'); 
  14.     SET Percepciones_Comisiones = (SELECT SUM(Comision) FROM comisiones WHERE (Fecha>=FechaI AND Fecha<=FechaF) AND Empleado_Id=EmpleadoId AND Estatus_Comision='Pendiente');
  15.     SET Percepciones_Bonos = (SELECT SUM(Monto) FROM bonos WHERE (Fecha>=FechaI AND Fecha<=FechaF) AND Empleado_Id=EmpleadoId AND Estatus_Bono='Pendiente');
  16.     SET Sueldoq=(SELECT Sueldo FROM empleados WHERE Empleado_Id=EmpleadoId);
  17.     SET Total_Percepciones = IFNULL(Percepciones_Comisiones, 0) + IFNULL(Percepciones_Bonos, 0) + IFNULL(Sueldoq, 0);
  18.     SET Total_Quincena = IFNULL(Total_Percepciones, 0)- IFNULL(TDeducciones, 0);
  19.     SET fecha=CURDATE();
  20.    
  21.     INSERT INTO Nomina(Nomina_Id, Empleado_Id, Fecha_Inicial, Fecha_Final, Deducciones, Percepciones, Sueldo_Neto, Estatus_Registro)
  22.     VALUES(NominaId, EmpleadoId, FechaI, FechaF, IFNULL(TDeducciones, 0), IFNULL(Total_Percepciones, 0), IFNULL(Total_Quincena, 0), 'Activo');
  23.        
  24.     END$$