Lo que no comprendo porque me da ese error de violación de llave ya que el error literalmente que me tira es este:
------------------------------------------------------------------------------------------------------
Query: CALL aplicar_incapacidad_medica(@fec1,@fec2,2,31,@aplic a)
Error Code: 1452
Cannot add or update a child row: a foreign key constraint fails (`saerp`.`control_situalab`, CONSTRAINT `FK_controlSituaLab_empleados` FOREIGN KEY (`idempleado`) REFERENCES `empleados` (`idempleado`))
----------------------------------------------------------------------------------------------------
Me dice eso pero al revisar la tabla si hizo el insert que lleva el sp.
El codigo de mi sp es este:
Código MySQL:
Ver original
#Obtenemos porcentaje de incapacidad y dias maximos de incapacidad con responsabilidad patronal #Obtenemos planilla de sueldos activa #Abrimos Result set OPEN rg_accpers; #Leemos e iteramos la colección abierta leer_bucle:LOOP #Revisamos si hay filas que recorrer, sino lo hay salimos del bucle #Da el pase para salir del flujo del Result Set una vez finalizada sus iteraciones o simplemente el cursor venia vacío LEAVE leer_bucle; #Este IF funciona con LOOP ... END ó REPEAT ... END REPEAT #Controlamos el recorrido del flujo para ver si nos salimos #Extraemos valores del Result set FETCH rg_accpers INTO idemp, porc, dura, pago_incap_maxdias, codsolic, rgcont, fecha_in, fecha_fn, dura_cub; #Este módulo de cálculos solo aplica para planillas mensuales #Modalidad de pago de la planilla CASE modpln_tblconfig ELSE #Modalidad mensual #Màximo de dias a pagar por incapacidad. Incapacidades solo se pagaran en el corte de planilla de fin de mes #Sueldo siempre se dividirá entre 30 días no importando la modalidad de la planilla #Ningun dia de incapacidad pagado #Se decide si la empresa pagará la incapacidad ELSE #La empresa no le pagará la incapacidad ELSE #Incapacidad 3 dias max ELSE #La empresa no le pagara la incapacidad #No se han pagado todos los dias de incapacidad, hay pendientes #Obtenemos cálculos respectivos a la incapacidad ELSE #Empresa decidió no pagarlos ELSE #Incapacidad de 3 dias max ELSE #No pagará incapacidad #Actualizamos el detalle de la planilla en tabla deta_planilla_docus #Obtenemos algunos datos #Actualizamos los dias incapacitados en tabla deta_plnsueldos. Si aplica #Actualizamos los dias incapacitados cubiertos en tabla accpers_deta. Si aplica duracion_cub = dura_cub_real + dura_cub #Hacemos bitácora de la situación laboral del empleado #Dias de incapacidad pagados en su totalidad o simplemente accpers aplicada porque empresa no quiso pagar incapacidad #Contamos las iteraciones #Tamaño del Result set coincide con las iteraciones hechas #Si el Result set filtrado es igual a la cantidad de UPDATE hechas #SET @aplicada_INCMED = 1; END LOOP leer_bucle; #Cerramos la colección Result set CLOSE rg_accpers; #Inicializamos el controlador utilizado #No encontró registros #Indicar al usuario que no se llevo a cabo la operacion porque no arrojo nada la consulta