Editar
Copiar
Borrar
DELETE FROM proc WHERE `proc`.`db` = 'losnaranjos' AND `proc`.`name` = 'fn_obtener_estadisticas_libro' AND `proc`.`type` = 'FUNCTION'
losnaranjos
fn_obtener_estadisticas_libro
FUNCTION
fn_obtener_estadisticas_libro
SQL
READS_SQL_DATA
YES
DEFINER
p_id_libro INT
longtext CHARSET utf8mb4 COLLATE utf8mb4_bin
BEGIN
DECLARE v_resultado JSON;
SELECT JSON_OBJECT(
'total_empleados', COUNT(DISTINCT dni),
'empleados_validados', COUNT(DISTINCT CASE WHEN empleado_encontrado = 1 THEN dni END),
'empleados_con_firma', COUNT(DISTINCT CASE WHEN tiene_firma = 1 THEN dni END),
'empleados_sin_validar', COUNT(DISTINCT CASE WHEN empleado_encontrado = 0 THEN dni END),
'porcentaje_validados', ROUND(
COUNT(DISTINCT CASE WHEN empleado_encontrado = 1 THEN dni END) * 100.0 /
NULLIF(COUNT(DISTINCT dni), 0), 2
),
'porcentaje_firmados', ROUND(
COUNT(DISTINCT CASE WHEN tiene_firma = 1 THEN dni END) * 100.0 /
NULLIF(COUNT(DISTINCT dni), 0), 2
)
) INTO v_resultado
FROM libros_sueldo_detalle
WHERE id_libro = p_id_libro;
RETURN v_resultado;
END
root@localhost
2025-10-03 09:28:48
2025-10-03 09:28:48
NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTIO...
utf8mb4
utf8mb4_unicode_ci
utf8mb4_general_ci
BEGIN
DECLARE v_resultado JSON;
SELECT JSON_OBJECT(
'total_empleados', COUNT(DISTINCT dni),
'empleados_validados', COUNT(DISTINCT CASE WHEN empleado_encontrado = 1 THEN dni END),
'empleados_con_firma', COUNT(DISTINCT CASE WHEN tiene_firma = 1 THEN dni END),
'empleados_sin_validar', COUNT(DISTINCT CASE WHEN empleado_encontrado = 0 THEN dni END),
'porcentaje_validados', ROUND(
COUNT(DISTINCT CASE WHEN empleado_encontrado = 1 THEN dni END) * 100.0 /
NULLIF(COUNT(DISTINCT dni), 0), 2
),
'porcentaje_firmados', ROUND(
COUNT(DISTINCT CASE WHEN tiene_firma = 1 THEN dni END) * 100.0 /
NULLIF(COUNT(DISTINCT dni), 0), 2
)
) INTO v_resultado
FROM libros_sueldo_detalle
WHERE id_libro = p_id_libro;
RETURN v_resultado;
END
NONE
Editar
Copiar
Borrar
DELETE FROM proc WHERE `proc`.`db` = 'losnaranjos' AND `proc`.`name` = 'sp_reemplazar_libro_sueldo' AND `proc`.`type` = 'PROCEDURE'
losnaranjos
sp_reemplazar_libro_sueldo
PROCEDURE
sp_reemplazar_libro_sueldo
SQL
CONTAINS_SQL
NO
DEFINER
IN p_id_liquidacion INT
BEGIN
-- Marcar libros anteriores como eliminados
UPDATE libros_sueldo
SET estado = 'eliminado',
observaciones = CONCAT(
COALESCE(observaciones, ''),
'\n[', NOW(), '] Reemplazado por nuevo libro'
)
WHERE id_liquidacion = p_id_liquidacion
AND estado = 'activo';
-- Retornar cantidad de libros marcados como eliminados
SELECT ROW_COUNT() as libros_reemplazados;
END
root@localhost
2025-10-03 09:28:47
2025-10-03 09:28:47
NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTIO...
utf8mb4
utf8mb4_unicode_ci
utf8mb4_general_ci
BEGIN
-- Marcar libros anteriores como eliminados
UPDATE libros_sueldo
SET estado = 'eliminado',
observaciones = CONCAT(
COALESCE(observaciones, ''),
'\n[', NOW(), '] Reemplazado por nuevo libro'
)
WHERE id_liquidacion = p_id_liquidacion
AND estado = 'activo';
-- Retornar cantidad de libros marcados como eliminados
SELECT ROW_COUNT() as libros_reemplazados;
END
NONE
Editar
Copiar
Borrar
DELETE FROM proc WHERE `proc`.`db` = 'losnaranjos' AND `proc`.`name` = 'sp_actualizar_contadores_libro' AND `proc`.`type` = 'PROCEDURE'
losnaranjos
sp_actualizar_contadores_libro
PROCEDURE
sp_actualizar_contadores_libro
SQL
CONTAINS_SQL
NO
DEFINER
IN p_id_libro INT
BEGIN
UPDATE libros_sueldo ls
SET
ls.empleados_procesados = (
SELECT COUNT(DISTINCT dni)
FROM libros_sueldo_detalle
WHERE id_libro = p_id_libro
),
ls.empleados_con_firma = (
SELECT COUNT(DISTINCT dni)
FROM libros_sueldo_detalle
WHERE id_libro = p_id_libro AND tiene_firma = 1
)
WHERE ls.id_libro = p_id_libro;
-- Retornar los valores actualizados
SELECT
empleados_procesados,
empleados_con_firma
FROM libros_sueldo
WHERE id_libro = p_id_libro;
END
root@localhost
2025-10-03 09:28:47
2025-10-03 09:28:47
NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTIO...
utf8mb4
utf8mb4_unicode_ci
utf8mb4_general_ci
BEGIN
UPDATE libros_sueldo ls
SET
ls.empleados_procesados = (
SELECT COUNT(DISTINCT dni)
FROM libros_sueldo_detalle
WHERE id_libro = p_id_libro
),
ls.empleados_con_firma = (
SELECT COUNT(DISTINCT dni)
FROM libros_sueldo_detalle
WHERE id_libro = p_id_libro AND tiene_firma = 1
)
WHERE ls.id_libro = p_id_libro;
-- Retornar los valores actualizados
SELECT
empleados_procesados,
empleados_con_firma
FROM libros_sueldo
WHERE id_libro = p_id_libro;
END
NONE