FITOMN of AM v3
4/17/2017 - 11:30 PM

Adición de registro en Bitacora de calificaciones (considerando los diferentes orígenes de calificación) en educación continua - SPRINT 5 BI

Adición de registro en Bitacora de calificaciones (considerando los diferentes orígenes de calificación) en educación continua - SPRINT 5 BIT/AM-84


----------------------------INICIO PROCEDIMIENTO ------------------------
IF OBJECT_ID('spInsertarBitacoraCambios', 'P') IS NOT NULL
      DROP PROC spInsertarBitacoraCambios
GO

CREATE PROCEDURE [dbo].[spInsertarBitacoraCambios]
    @idUsuario BIGINT,
	@dFecha	DATETIME,
	@idPlanEstudios INT,
	@iFolioInscrip INT,
	@idAsignatura INT,
	@idGrupo INT,
	@iAccion TINYINT,
	@sDetalleAccion VARCHAR(100),
	@iOrigenBitacora INT 
/* --------------------------------------------------------------------------------------------------------------
FECHA		   |    AUTOR		|	DESCRIPCION
09/Mar/2017    | Luis Bernal	| Registro de Inscripción Acádemica
06/Abr/2017    | Luis Bernal	| Adición de registro de Inicio de Sesión
10/Abr/2017    | Luis Bernal	| Adición de registro de Captura de Calificaciones EC
--------------------------------------------------------------------------------------------------------------*/
AS
    BEGIN
        SET NOCOUNT ON;
		SET LANGUAGE spanish;
		SET DATEFORMAT MDY;
		SET DATEFIRST 7;

        -- **** DECLARACIÓN DE VARIABLES ****
		DECLARE @idSeccion SMALLINT, 
				@idEditor INT, 
				@idEditado INT,
				@sAccion VARCHAR(30)
				
--===================================================================================================================================================================================================================================
		-- **** INSERCIÓN DE INFORMACIÓN A Cat_BitacoraCambios ****
--===================================================================================================================================================================================================================================

--********************************************************************************	
		-- >>> INSCRIPCIONES ACADÉMICAS <<<
--********************************************************************************

		IF @iOrigenBitacora = 1
		BEGIN 

			SET @idSeccion = 1      -- 1 = Inscripciones Academicas
			SELECT @idEditor = idUsuarioBita FROM dbo.Cat_BitacoraUsuarios WHERE idOriginal = @idUsuario AND iTipoUsuario = 1

			DECLARE @idAlumno INT,
					@sPlanEstudios VARCHAR(110),
					@iFolioPeriodo INT,
					@sPeriodo VARCHAR(50),
					@idOfEduc INT,
					@sOfEduc VARCHAR(50),
					@sMatricula VARCHAR(30),
					@sNombreAlumno VARCHAR(120),
					@iGrado INT,
					@sNombreGrupo VARCHAR(50),
					@sAsignatura VARCHAR(150)

			-- +++ Obtención de Datos Generales +++
			SET @sAccion = CASE WHEN @iAccion = 1 THEN 'Inscripción' WHEN @iAccion = 2 THEN 'Eliminación Inscripción' ELSE 'Empty' END
			SELECT @sPlanEstudios = (sNombre + ' (' + sVersion + ')') FROM dbo.Cat_PlanEstudios WHERE idPlanEstudios = @idPlanEstudios

			SELECT @idAlumno = ci.idAlumno, @sMatricula = sMatricula, @sNombreAlumno = (sApellidoPaterno + ' ' + sApellidoMaterno + ' ' + sNombre), 
				   @iFolioPeriodo = ci.iFolioPeriodo, @sPeriodo = cp.sAbPeriodo, @idOfEduc = ci.idOfEduc 
			FROM dbo.Ctrl_Inscripciones ci 
			JOIN dbo.Ctrl_Periodos cp ON ci.iFolioPeriodo = cp.iFolio
			JOIN dbo.Cat_Alumnos ca ON ca.idAlumno = ci.idAlumno
			WHERE ci.iFolio = @iFolioInscrip

			SELECT @idEditado = idUsuarioBita FROM dbo.Cat_BitacoraUsuarios WHERE idOriginal = @idAlumno AND iTipoUsuario = 3
			SELECT @sOfEduc = sNombre FROM dbo.Cat_OfEduc WHERE idOfEduc = @idOfEduc

			-- +++ Obtención e inserción de datos particulares +++
			SELECT @idGrupo = CASE WHEN @idGrupo = -1 THEN idGrupo ELSE @idGrupo END 
			FROM dbo.Ctrl_TrayectoriaAcademica WHERE iFolioInscripcion = @iFolioInscrip AND idAsignatura = @idAsignatura

			SELECT @iGrado = iGrado FROM dbo.Ctrl_PlanEstudios WHERE idPlanEstudios = @idPlanEstudios AND idAsignatura = @idAsignatura
			SELECT @sNombreGrupo = sNombre FROM dbo.Ctrl_Grupos WHERE idGrupo = @idGrupo
			SELECT @sAsignatura = sAsignatura FROM dbo.Cat_Asignaturas WHERE idAsignatura = @idAsignatura

			IF @iAccion = 2 OR (NOT EXISTS (SELECT * FROM dbo.Ctrl_TrayectoriaAcademica WHERE iFolioInscripcion = @iFolioInscrip AND idAsignatura = @idAsignatura AND idGrupo = @idGrupo))
			BEGIN
				IF EXISTS (SELECT * FROM dbo.Ctrl_TrayectoriaAcademica WHERE iFolioInscripcion = @iFolioInscrip AND idAsignatura = @idAsignatura)
				BEGIN 
					SET @sAccion = @sAccion + ' - Cambio de Grupo'
				END 

				INSERT INTO dbo.Ctrl_BitacoraCambios
						( idEditor ,
						  idEditado ,
						  idSeccion ,
						  dFecha ,
						  sdescripcion
						)
				VALUES  ( @idEditor , -- idEditor - bigint
						  @idEditado , -- idEditado - bigint
						  @idSeccion , -- idSeccion - smallint
						  @dFecha , -- dFecha - datetime
						  (@sAccion + '|' + CONVERT(VARCHAR(20), @idEditado) + '|' + @sMatricula + '|' + @sNombreAlumno + '|' + CONVERT(VARCHAR(20), @iFolioPeriodo) + '|' + 
						   @sPeriodo + '|' + CONVERT(VARCHAR(20), @idOfEduc) + '|' + @sOfEduc + '|' + CONVERT(VARCHAR(20), @idPlanEstudios) + '|' + @sPlanEstudios + '|' + 
						   CONVERT(VARCHAR(20), @iGrado) + '|' + CONVERT(VARCHAR(20), @idGrupo) + '|' + @sNombreGrupo + '|' + CONVERT(VARCHAR(20), @idAsignatura) + '|' + 
						   @sAsignatura + '|' + @sDetalleAccion ) -- sdescripcion - varchar(8000)
						)
			END
		END		-- END IF @iOrigenBitacora = 1

--********************************************************************************
		-- >>> INICIO DE SESIÓN <<<
--********************************************************************************

		IF @iOrigenBitacora = 2
		BEGIN
			SET @idSeccion = 2      -- 2 = Inicio de Sesión
			SET @sAccion = 'Inicio de Sesión'
			SET @idEditado = NULL

			DECLARE @sNombreUsuario VARCHAR(150),
					@sCuentaLog VARCHAR(50)
			
			IF @sDetalleAccion = 'Admin'
			BEGIN 
				SELECT @sNombreUsuario = (sApellidoPaterno + ' ' + sApellidoMaterno + ' ' + sNombre), @sCuentaLog = sCorreo FROM dbo.Cat_Usuarios WHERE idUsuario = @idUsuario

				SELECT @idEditor = idUsuarioBita FROM dbo.Cat_BitacoraUsuarios WHERE idOriginal = @idUsuario AND iTipoUsuario = 1
			END 
			ELSE
            BEGIN 
				IF @sDetalleAccion = 'Alumno'
				BEGIN
					SELECT @sNombreUsuario = (sApellidoPaterno + ' ' + sApellidoMaterno + ' ' + sNombre), @sCuentaLog = sMatricula FROM dbo.Cat_Alumnos WHERE idAlumno = @idUsuario

					SELECT @idEditor = idUsuarioBita FROM dbo.Cat_BitacoraUsuarios WHERE idOriginal = @idUsuario AND iTipoUsuario = 3
				END
				ELSE
				BEGIN
					IF @sDetalleAccion = 'Profesor'
					BEGIN
						SELECT @sNombreUsuario = (sApellidoP + ' ' + sApellidoM + ' ' + sNombre), @sCuentaLog = sCorreo FROM dbo.Cat_Profesores WHERE idProfesor = @idUsuario
						
						SELECT @idEditor = idUsuarioBita FROM dbo.Cat_BitacoraUsuarios WHERE idOriginal = @idUsuario AND iTipoUsuario = 2
					END
					ELSE
					BEGIN
						IF @sDetalleAccion = 'Familiar'
						BEGIN
							SELECT @sNombreUsuario = (sApellidoP + ' ' + sApellidoM + ' ' + sNombre), @sCuentaLog = sCorreo FROM dbo.Ctrl_Familiares WHERE idFamiliar = @idUsuario
							
							SELECT @idEditor = idUsuarioBita FROM dbo.Cat_BitacoraUsuarios WHERE idOriginal = @idUsuario AND iTipoUsuario = 4
						END 
					END 
				END
			END		-- END IF @sDetalleAccion
			
			INSERT INTO dbo.Ctrl_BitacoraCambios
					( idEditor ,
					  idEditado ,
					  idSeccion ,
					  dFecha ,
				      sdescripcion
					)
			VALUES  ( @idEditor , -- idEditor - bigint
					  @idEditado , -- idEditado - bigint
					  @idSeccion , -- idSeccion - smallint
					  @dFecha , -- dFecha - datetime
					  (@sAccion + '|' +  @sDetalleAccion + '|' + CONVERT(VARCHAR(10), @idUsuario) + '|' + @sNombreUsuario + '|' + @sCuentaLog) -- sdescripcion - varchar(8000)
					)

		END		-- END IF @iOrigenBitacora = 2

--********************************************************************************	
		-- >>> CAPTURA DE CALIFICACIONES - EDUCACIÓN CONTINUA <<<
--********************************************************************************

		IF @iOrigenBitacora = 3
		BEGIN
			SET @idSeccion = 3      -- 3 = Inicio de Sesión
			SET @sAccion = 'Captura Calificación EC'
			SELECT @idEditor = idUsuarioBita FROM dbo.Cat_BitacoraUsuarios WHERE idOriginal = @idUsuario AND iTipoUsuario = 2

			DECLARE @idPersona INT,
					@idTipoPersona INT,
					@sTipoPersona VARCHAR(50),
					@idPersonaRef INT,
					--@sNombreAlumno VARCHAR(120),
					@idCurso INT,
					@sCurso VARCHAR(50),
					@idModulo INT,
					@sModulo VARCHAR(50),
					@sGrupo VARCHAR(50),
					@sPrograma VARCHAR(50),
					@dCalificacion DECIMAL(6,3)

			SELECT @idPersona = ISNULL(cce.idPersona, 0), 
				   @idTipoPersona = cpr.idTipoPersonaRef, 
				   @sTipoPersona = ctp.sTipoPersonaRef, 
				   @idCurso = ccm.idCurso, 
				   @sCurso = ccc.sCurso, 
				   @idModulo = ccm.idReferencia, 
				   @sModulo = ccm1.sModulo, 
				   @sGrupo = ccg1.sGrupo, 
				   @sPrograma = cpd.sNombre,
				   @dCalificacion = cta.dCalificacion
			FROM dbo.Ctrl_ECTrayectoriaAcademica cta
				 JOIN dbo.Ctrl_CursosEnrolados cce ON cce.iFolio = cta.iFolioEnrolamiento
				 JOIN dbo.Cat_PersonasReferencia cpr ON cpr.idPersona = cce.idPersona
				 JOIN dbo.Cat_TiposPersonasRef ctp ON ctp.idTipoPersonaRef = cpr.idTipoPersonaRef
				 JOIN dbo.Ctrl_CursosGrupos ccg ON ccg.iFolio = cce.iFolioGrupo AND cce.iFolioGrupo = @idGrupo
				 JOIN dbo.Cat_CursosGrupos ccg1 ON ccg1.idGrupo = ccg.idGrupo
				 JOIN dbo.Ctrl_ECRelacionTemaProg crtp ON crtp.idPrograma = cta.idPrograma
				 JOIN dbo.Cat_ECProgramaDetalle cpd ON cpd.idPrograma = crtp.idPrograma
				 JOIN dbo.Ctrl_ECRelacionModuProg crmp ON crmp.idTema = crtp.idTema
				 JOIN dbo.Ctrl_CursosModulos ccm ON ccm.idReferencia = crmp.idModulo
				 JOIN dbo.Cat_CursosModulos ccm1 ON ccm1.idModulo = ccm.idReferencia
				 JOIN dbo.Cat_CursosCatalogo ccc ON ccc.idCurso = ccm.idCurso
			WHERE cta.iFolioEnrolamiento = @iFolioInscrip 
				  AND (cta.idPrograma = @idAsignatura OR @idAsignatura = 0)

			-- // Calificación Global de Curso - Promedio Automático //--
			IF @idAsignatura = 0 AND @idPlanEstudios = 0
			BEGIN
				SET @sPrograma = 'N/A'
				SET @idModulo = 0
				SET @sModulo = 'N/A'
				SELECT @dCalificacion = dCalificacion FROM dbo.Ctrl_CursosCalificaciones WHERE iFolioEnrolado = @iFolioInscrip AND iFolioGrupo = @idGrupo
			END 
			-- // Calificación de Modulos //--
			ELSE
            BEGIN
				IF @idAsignatura = 0 AND @idPlanEstudios <> 0
				BEGIN
					SET @sPrograma = 'N/A'
					SET @idModulo = @idPlanEstudios
					SELECT @sModulo = sModulo FROM dbo.Cat_CursosModulos WHERE idModulo = @idModulo
					SELECT @dCalificacion = dCalificacion FROM dbo.Ctrl_CursosCalificaciones WHERE iFolioEnrolado = @iFolioInscrip AND iFolioGrupo = @idGrupo AND idModulo = @idModulo
				END 
			END 
			--// ------------------------------ //--

			SET @idPersonaRef = 0
			SET @sNombreAlumno = ''

			IF @idTipoPersona = 1	-- Alumno
			BEGIN
				SELECT @idPersonaRef = ca.idAlumno,
					   @sNombreAlumno = ca.sMatricula + ' - ' + ca.sApellidoPaterno + ' ' + ca.sApellidoMaterno + ' ' + ca.sNombre 
				FROM dbo.Cat_PersonasReferencia cpr
					 JOIN dbo.Ctrl_Inscripciones ci ON ci.iFolio = cpr.idPersonaRef
					 JOIN dbo.Cat_Alumnos ca ON ca.idAlumno = ci.idAlumno
				WHERE cpr.idPersona = @idPersona
			END 
			ELSE
            BEGIN
				IF @idTipoPersona = 2	-- Prospectos/Aspirantes
				BEGIN
					SELECT @idPersonaRef = ccp.idProspecto,
						   @sNombreAlumno = cf.sApellidoP + ' ' + cf.sApellidoM + ' ' + cf.sNombre
					FROM dbo.Cat_PersonasReferencia cpr
						JOIN dbo.Cat_CRMProspectos ccp ON ccp.idProspecto = cpr.idPersonaRef
						JOIN dbo.Ctrl_Familiares cf ON cf.idPersona = ccp.idProspecto AND cf.idTipoPersona = 6
					WHERE cpr.idPersona = @idPersona  
				END
                ELSE
                BEGIN
					IF @idTipoPersona = 3	-- Empleados
					BEGIN
						SELECT @idPersonaRef = ce.idEmpleado,
							   @sNombreAlumno = ce.sApellidoP + ' ' + ce.sApellidoM + ' ' + ce.sNombre
						FROM dbo.Cat_PersonasReferencia cpr
							 JOIN dbo.Cat_Empleados ce ON ce.idEmpleado = cpr.idPersonaRef
						WHERE cpr.idPersona = @idPersona
					END
                    ELSE
                    BEGIN
						IF @idTipoPersona = 6	-- Participantes Externos
						BEGIN
							SELECT @idPersonaRef = ccp.idParticipante,
								   @sNombreAlumno = ccp.sApellidoP + ' ' + ccp.sApellidoM + ' ' + ccp.sNombre
							FROM dbo.Cat_PersonasReferencia cpr 
								 JOIN Ctrl_CursosParticipantes ccp ON ccp.idParticipante = cpr.idPersonaRef
							WHERE cpr.idPersona = @idPersona
						END 
					END 
				END 
			END		-- END IF @idTipoPersona Anidados
			
			-- sAccion | sDetalleAccion | idPersona | idTipoPersona | sTipoPersona | idPersonaRef | Nombre | idCurso | sCurso | idModulo | sModulo | idGrupo | sGrupo | idPrograma | sPrograma | dCalificacion
			INSERT INTO dbo.Ctrl_BitacoraCambios
					( idEditor ,
					  idEditado ,
					  idSeccion ,
					  dFecha ,
				      sdescripcion
					)
			VALUES  ( @idEditor ,  -- idEditor - bigint
					  @idEditado , -- idEditado - bigint
					  @idSeccion , -- idSeccion - smallint
					  @dFecha ,    -- dFecha - datetime
					  (@sAccion + '|' + @sDetalleAccion + '|' + CONVERT(VARCHAR(10), @idPersona) + '|' + @sTipoPersona + '|' + CONVERT(VARCHAR(10), @idPersonaRef) + '|' + @sNombreAlumno + '|' + CONVERT(VARCHAR(10), @idCurso) + '|' + @sCurso + '|' + 
					   CONVERT(VARCHAR(10), @idModulo) + '|' + @sModulo + '|' + CONVERT(VARCHAR(10), @idGrupo) + '|' + @sGrupo + '|' + CONVERT(VARCHAR(10), @idAsignatura) + '|' + @sPrograma + '|' + 
					   CONVERT(VARCHAR(15), @dCalificacion)) -- sdescripcion - varchar(8000)
					)
		END		-- END IF @iOrigenBitacora = 3
    END;