Procedimientos y Llamadas de Beneficios

DELIMITER $$
CREATE PROCEDURE insertUsersV (
IN p_CodBeneficio INT,
IN p_TipoBeneficio VARCHAR(45),
IN p_MontoBeneficio INT
)
BEGIN
DECLARE usuarioExistente INT;
SELECT COUNT(*) INTO usuarioExistente
FROM beneficios
WHERE CodBeneficio = p_CodBeneficio;

IF usuarioExistente > 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'El beneficio ya existe';
ELSE
INSERT INTO beneficios (CodBeneficio, TipoBeneficio, MontoBeneficio)
VALUES (p_CodBeneficio, p_TipoBeneficio, p_MontoBeneficio);
END IF;
END$$
DELIMITER ;
CALL insertUsersV(123, "seguridad social", 1000);
CALL insertUsersV(124, "seguro medico", 1001);
CALL insertUsersV(125, "seguro medico", 1002);
CALL insertUsersV(126, "seguro medico", 1003);
CALL insertUsersV(127, "seguro medico", 1003);
CALL insertUsersV(128, "seguro medico", 1004);
CALL insertUsersV(129, "Beneficios educativos", 1005);
CALL insertUsersV(130, "Descuentos en productos o servicios", 1006);
CALL insertUsersV(132, "Asistencia para el cuidado de hijos", 1007);
CALL insertUsersV(133, "Días libres adicionales", 1008);

Procedimientos y Llamadas de Cargos

DELIMITER $$
CREATE PROCEDURE insertUsersC (
IN p_CodCargo INT,
IN p_CodDepartamento INT,
IN p_NombreCargo VARCHAR(45)
)
BEGIN
DECLARE cargoExistente INT;
SELECT COUNT(*) INTO cargoExistente
FROM cargos
WHERE CodCargo = p_CodCargo;

IF cargoExistente > 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'El cargo ya existe';
ELSE
INSERT INTO cargos (CodCargo, CodDepartamento, NombreCargo)
VALUES (p_CodCargo, p_CodDepartamento, p_NombreCargo);
END IF;
END$$
DELIMITER ;
CALL insertUsersC(1, 1, 'Monitorizar la Calidad de los Datos');
CALL insertUsersC(2, 1, 'Ingeniero de Confiabilidad del Sitio (SRE)');
CALL insertUsersC(3, 1, 'Ingeniero de DevOps');
CALL insertUsersC(4, 2, 'Especialista en Seguridad de la Información');
CALL insertUsersC(5, 2, 'Ingeniero de Calidad de Datos');
CALL insertUsersC(6, 3, 'Arquitecto de Soluciones');
CALL insertUsersC(7, 3, 'Ingeniero de Automatización de Pruebas');
CALL insertUsersC(8, 4, 'Gestor de Producto Técnico');
CALL insertUsersC(9, 4, 'Especialista en Experiencia del Usuario (UX)');
CALL insertUsersC(10, 5, 'Ingeniero de Machine Learning');

Procedimientos y Llamadas de Deducciones

DELIMITER $$
CREATE TABLE IF NOT EXISTS deducciones (
CodDeduccion INT,
TipoDeduccion VARCHAR(45),
MontoDeduccion DECIMAL(10,2),
FechaAplicacion DATE,
PRIMARY KEY (CodDeduccion)
)$$

CREATE PROCEDURE insertDeduction (
IN p_CodDeduccion INT,
IN p_TipoDeduccion VARCHAR(45),
IN p_MontoDeduccion DECIMAL(10,2),
IN p_FechaAplicacion DATE
)
BEGIN
DECLARE deduccionExistente INT;
SELECT COUNT(*) INTO deduccionExistente FROM deducciones WHERE CodDeduccion = p_CodDeduccion;

IF deduccionExistente > 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'La deducción ya existe';
ELSE
INSERT INTO deducciones (CodDeduccion, TipoDeduccion, MontoDeduccion, FechaAplicacion) VALUES (p_CodDeduccion, p_TipoDeduccion, p_MontoDeduccion, p_FechaAplicacion);
END IF;
END$$
DELIMITER ;
CALL insertDeduction(11, 'Impuesto de Sucesiones', 150.00, '2024-01-01');
CALL insertDeduction(12, 'Contribución de Seguridad Social Adicional', 75.00, '2024-02-01');
CALL insertDeduction(13, 'Impuesto a la Propiedad', 50.00, '2024-03-01');
CALL insertDeduction(14, 'Cuota de Mantenimiento de Equipo', 25.00, '2024-04-01');
CALL insertDeduction(15, 'Fondo de Reserva', 30.00, '2024-05-01');

Procedimientos y Llamadas de Departamentos

DELIMITER $$
CREATE PROCEDURE insertUsersV_new_department (IN p_CodDepartamento INT, IN p_NombreDepartamento VARCHAR(45)) BEGIN DECLARE departamentoExistente INT; SELECT COUNT(*) INTO departamentoExistente FROM departamentos WHERE CodDepartamento = p_CodDepartamento; IF departamentoExistente > 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'El departamento ya existe'; ELSE INSERT INTO departamentos (CodDepartamento, NombreDepartamento) VALUES (p_CodDepartamento, p_NombreDepartamento); END IF; END;
CALL insertUsersV_new_department(1, 'Recursos Humanos');
CALL insertUsersV_new_department(2, 'Finanzas');
CALL insertUsersV_new_department(3, 'IT');
CALL insertUsersV_new_department(4, 'Marketing');
CALL insertUsersV_new_department(5, 'Ventas');
CALL insertUsersV_new_department(6, 'Operaciones');
CALL insertUsersV_new_department(7, 'Legal');
CALL insertUsersV_new_department(8, 'Administración');
CALL insertUsersV_new_department(9, 'Investigación');
CALL insertUsersV_new_department(10, 'Desarrollo');

Procedimientos y Llamadas de Empleados

DELIMITER $$
CREATE TABLE IF NOT EXISTS empleado (
CodEmpleados INT,
Nombre VARCHAR(100),
Apellido VARCHAR(100),
FechaNacimiento DATE,
CorreoElectronico VARCHAR(100),
FechaContratacion DATE,
PRIMARY KEY (CodEmpleados)
)$$

CREATE PROCEDURE insertEmployee (
IN p_CodEmpleados INT,
IN p_Nombre VARCHAR(100),
IN p_Apellido VARCHAR(100),
IN p_FechaNacimiento DATE,
IN p_CorreoElectronico VARCHAR(100),
IN p_FechaContratacion DATE
)
BEGIN
DECLARE empleadoExistente INT;
SELECT COUNT(*) INTO empleadoExistente FROM empleado WHERE CodEmpleados = p_CodEmpleados;

IF empleadoExistente > 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'El empleado ya existe';
ELSE
INSERT INTO empleado (CodEmpleados, Nombre, Apellido, FechaNacimiento, CorreoElectronico, FechaContratacion)
VALUES (p_CodEmpleados, p_Nombre, p_Apellido, p_FechaNacimiento, p_CorreoElectronico, p_FechaContratacion);
END IF;
END$$
DELIMITER ;
CALL insertEmployee(1, 'Juan', 'Pérez', '1990-01-01', 'juan.perez@example.com', '2024-01-01');
CALL insertEmployee(2, 'María', 'González', '1985-02-02', 'maria.gonzalez@example.com', '2024-02-01');
CALL insertEmployee(3, 'Carlos', 'Sánchez', '1980-03-03', 'carlos.sanchez@example.com', '2024-03-01');
CALL insertEmployee(4, 'Ana', 'López', '1992-04-04', 'ana.lopez@example.com', '2024-04-01');
CALL insertEmployee(5, 'Luis', 'Martínez', '1988-05-05', 'luis.martinez@example.com', '2024-05-01');
CALL insertEmployee(6, 'Elena', 'Torres', '1991-06-06', 'elena.torres@example.com', '2024-06-01');
CALL insertEmployee(7, 'Miguel', 'Hernández', '1983-07-07', 'miguel.hernandez@example.com', '2024-07-01');
CALL insertEmployee(8, 'Laura', 'Ramírez', '1995-08-08', 'laura.ramirez@example.com', '2024-08-01');
CALL insertEmployee(9, 'David', 'Morales', '1987-09-09', 'david.morales@example.com', '2024-09-01');
CALL insertEmployee(10, 'Sara', 'Jiménez', '1993-10-10', 'sara.jimenez@example.com', '2024-10-01');