Creación de SP nuevos

 

Aprovechando la lista realizada en la reunión anterior empezamos a realizar las sp que requerimos en para las consultas y procesos necesarios para el cálculo apropiado.

link del commit en github:

https://github.com/Stuart-Sandi/Planilla_Obrera_Etapa_2/commit/f507ef8833ef1d587af139d82a7d9c53dee44677

Temas abarcados: 

Modificación de las tablas necesarios para los Sp
realizando los sp notamos algunas instancias que nos hacia falta para la creación correcta de los sp por lo que en la foto se da una imagen de algunas de las tablas modificadas para la este proceso
declaración de la agregación de los empleados a las tablas parte de los sp de creacion o carga del programa. 

Declaración del sp de creación nuevas plantillas mensuales donde se le pasa por parámetro la fecha de operación del mes donde luego se crea o se le asocia una semana planilla para su consulta.

Sp de simulación el cual es el el sp maestro del proyecto, donde pasa por las semanas de fecha por fecha para ir revisando todas las jornadas.


Ejemplo de sp de crear una nueva planilla 
CREATE PROCEDURE sp_CrearNuevaPlanillaSemanal 
@InFechaOperacionParam DATE,
@outResultCode INT OUTPUT

AS
BEGIN

BEGIN TRY
--CREA UNA NUEVA PLANILLA SEMANAL
BEGIN TRANSACTION tCrearNuevaPlanillaSemanal

INSERT INTO dbo.TBLPlanillaSemanal (IdPlanillaMensual, FechaInicio)
VALUES ((SELECT MAX(Id) FROM dbo.TBLPlanillaMensual), @InFechaOperacionParam)

COMMIT TRANSACTION tCrearNuevaPlanillaSemanal

END TRY


Ejemoki de Sp de agregar tipo de jornada 

BEGIN TRY
SET NOCOUNT ON;

--OBTIENE TODOS LOS TIPOS DE JORNADA DEL XML DE UNA FECHA Y LOS INSERTA EN UNA TABLA TMP
DECLARE @FechaOperacion XML;
SELECT @FechaOperacion = FO
FROM OPENROWSET (BULK 'S:\TEC\Cursos\Bases_de_Datos_I\Proyectos Programados\Proyecto_2_BD\Planilla_Obrera_Etapa_2\Datos\Operaciones.xml', SINGLE_BLOB) AS Operacion (FO)

DECLARE @hdoc INT;
EXEC sp_xml_preparedocument @hdoc OUT, @FechaOperacion;

--//--CREA TABLA TEMPORAL PARA ALMACENAR LOS TIPOS DE JORNADA DEL XML Y PODER RECORRERLAS
DECLARE @TBLTiposJornadaTMP TABLE(
Id INT IDENTITY(1,1),
IdTipoJornada INT,
ValorIdentificacion INT
);
INSERT @TBLTiposJornadaTMP (IdTipoJornada, ValorIdentificacion)
SELECT IdJornada, ValorDocumentoIdentidad FROM OPENXML(@hdoc, '/Datos/Operacion/TipoDeJornadaProximaSemana', 1)
WITH(
IdJornada INT,
ValorDocumentoIdentidad INT,
Fecha varchar(30) '../@Fecha'
)
WHERE @InFechaOperacionParam = CONVERT(DATE,Fecha,102)
EXEC sp_xml_removedocument @hdoc;

BEGIN TRANSACTION tAgregarTipoJornada

--ACTUALIZA LOS TIPOS DE JORNADAS DEPENDIENDO DE LA PERSONA EN SEMANAPLANILLAXEMPLEADO
DECLARE @ContI INT = (SELECT MIN(FJ.Id) FROM @TBLTiposJornadaTMP FJ);
DECLARE @ContF INT = (SELECT MAX(FJ.Id) FROM @TBLTiposJornadaTMP FJ);

WHILE (@ContI <= @ContF)

BEGIN
Declare @IdEmpleado INT;
DECLARE @IdTipoJoranda INT;
 
--SELECCION EL ID DE TIPO JORNADA, VALOR IDENTIFICAION DE LA TABLA TEMPORAL Y LA ID DEL EMPLEADO
SELECT @IdTipoJoranda = TJ.id, @IdEmpleado = E.Id
--DESDE LA TABLA TipoJornada ALIAS TJ
FROM dbo.TBLTipoJornada TJ
--CONECTE EL IdTipoJornada de @TBLTiposJornadaTMP alias  TJT con el id de TJ
INNER JOIN @TBLTiposJornadaTMP TJT ON TJT.IdTipoJornada=TJ.id
--CONECTE EL ValorIdentificacion DE dbo.TBLEmpleado ALIAS E con ValorIdentificacion DE tjt
INNER JOIN dbo.TBLEmpleado E ON E.ValorIdentificacion = TJT.ValorIdentificacion
WHERE TJT.Id = @ContI AND E.Activo = 1

--ACTUALIZA EL TIPO DE JORNADA DE LA PLANILLA SEMANAL X EMPLEADO
UPDATE dbo.TBLPLanillaSemanalXEmpleado 
SET IdTipoJornada = @IdTipoJoranda
WHERE IdEmpleado = @IdEmpleado 
AND IdPlanillaSemanal = 
(
SELECT MAX(Id) 
FROM dbo.TBLPlanillaSemanal
)

--AUMENTA LA POSOCION EN LA TABLA TEMPORAL
SET @ContI = @ContI + 1;

END
COMMIT TRANSACTION tAgregarTipoJornada
RETURN 1
esta funcion actualiza la planilla semanal por empledo y le agrega un tipo de jornada, para mas informacion ver el codigo en github


Información del blog:

    Tiempo de la Reunión: 2h : 40min




Comentarios