FITOMN of AM v3
7/27/2017 - 6:04 PM

BIT/IAM-2030 - spListarAsignaturasParaCalificar

BIT/IAM-2030 - spListarAsignaturasParaCalificar


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

CREATE PROCEDURE [dbo].[spListarAsignaturasParaCalificar]
    (
      @idPlantel SMALLINT ,
      @idPlanEstudios SMALLINT ,
      @iFolioPeriodo BIGINT ,
      @idProfesor INT ,
      @idGrupo SMALLINT
/* --------------------------------------------------------------------------------------------------------------
	FECHA	   |    AUTOR		|	DESCRIPCION
 27/jul./2017  | Luis Bernal	| BIT/IAM-2030 - Se comenta comparación de idTitular ya que para la Biblioteca de Asignaturas en el panel del profesor mostraba todas las materias del grupo/Periodo especificado sin importar el profesor
--------------------------------------------------------------------------------------------------------------*/
    )
-- WITH ENCRYPTION, RECOMPILE, EXECUTE AS CALLER|SELF|OWNER| 'user_name'
AS
    BEGIN
        SET NOCOUNT ON;
        DECLARE @idUsuario INT
        DECLARE @bPermisosProf BIT
    
  --hugo
        SET @bPermisosProf = ( SELECT   cu.bPermisosProfesor
                               FROM     Cat_Profesores cp
                                        INNER JOIN Cat_Usuarios cu ON cp.idProfesor = cu.idProfesor
                               WHERE    cp.idProfesor = @idProfesor
                             )
        SET @idUsuario = ( SELECT   cu.idUsuario
                           FROM     Cat_Profesores cp
                                    INNER JOIN Cat_Usuarios cu ON cp.idProfesor = cu.idProfesor
                           WHERE    cp.idProfesor = @idProfesor
                         )


        DECLARE @idEmpleado INT = NULL

        IF @idProfesor > 0
            BEGIN
                SET @idEmpleado = ( SELECT  ce.idEmpleado
                                    FROM    Cat_Empleados ce
                                    WHERE   ce.idProfesor = @idProfesor
                                  )
            END

        IF @bPermisosProf = 0
            BEGIN
      --ES PROFESOR
                SELECT DISTINCT
                        ca.idAsignatura ,
                        ca.sAsignatura
                FROM    Ctrl_TrayectoriaAcademica cta
                        INNER JOIN Cat_Asignaturas ca ON cta.idAsignatura = ca.idAsignatura
                        INNER JOIN Ctrl_Grupos cg ON cta.idGrupo = cg.idGrupo
                        INNER JOIN Ctrl_Inscripciones ci ON cta.iFolioInscripcion = ci.iFolio
                        INNER JOIN Cat_PlanEstudios cpe ON cg.idPlanEstudios = cpe.idPlanEstudios
                        INNER JOIN Ctrl_Periodos cp1 ON ci.iFolioPeriodo = cp1.iFolio
                        LEFT JOIN Ctrl_GrupoClaseTentativo cgct ON cg.idGrupo = cgct.idGrupo
                                                              AND cta.idAsignatura = cgct.idAsignatura
                                                              AND ci.iFolioPeriodo = cgct.iFolioPeriodo
                        LEFT JOIN Cat_Usuarios cu ON cgct.idProfesor = cu.idProfesor
                        LEFT JOIN Ctrl_GruposPeriodos cgp ON cg.idGrupo = cgp.idGrupo
                                                             AND cp1.iFolio = cgp.iFolioPeriodo
                        LEFT JOIN dbo.Ctrl_GrupoClaseTentativoCotitulares cgctc ON cgctc.iFolioGrupoClaseTentativo = cgct.iFolio
                WHERE   cp1.iFolio = @iFolioPeriodo
                        AND cta.idGrupo = @idGrupo
                        AND ( ( cgct.idProfesor = @idProfesor
                                OR cgctc.idProfesor = @idProfesor
                              )
                              OR ( cgp.idTitular = @idEmpleado
                                   AND @idEmpleado IS NOT NULL
                                 )
                              OR cgp.idTitular IS NULL
                            )
                        AND cg.idPlanEstudios = @idPlanEstudios
                        AND cg.idPlantel = @idPlantel
                ORDER BY ca.sAsignatura
            END
        ELSE
            BEGIN

                IF @idProfesor = 0
                    BEGIN
                        SELECT DISTINCT
                                ca.idAsignatura ,
                                ca.sAsignatura
                        FROM    Ctrl_TrayectoriaAcademica cta
                                INNER JOIN Cat_Asignaturas ca ON cta.idAsignatura = ca.idAsignatura
                                INNER JOIN Ctrl_Grupos cg ON cta.idGrupo = cg.idGrupo
                                INNER JOIN Ctrl_Inscripciones ci ON cta.iFolioInscripcion = ci.iFolio
                                INNER JOIN Cat_PlanEstudios cpe ON cg.idPlanEstudios = cpe.idPlanEstudios
                                INNER JOIN Ctrl_Periodos cp1 ON ci.iFolioPeriodo = cp1.iFolio
                                LEFT JOIN Ctrl_GrupoClaseTentativo cgct ON cg.idGrupo = cgct.idGrupo
                                                              AND cta.idAsignatura = cgct.idAsignatura
                                                              AND ci.iFolioPeriodo = cgct.iFolioPeriodo
                                LEFT JOIN Ctrl_GruposPeriodos cgp ON cg.idGrupo = cgp.idGrupo
                                                              AND cp1.iFolio = cgp.iFolioPeriodo
                        WHERE   cp1.iFolio = @iFolioPeriodo
                                AND cta.idGrupo = @idGrupo
                                AND cta.idPlanEstudios = @idPlanEstudios
                                AND cg.idPlantel = @idPlantel
                        ORDER BY ca.sAsignatura
                    END
                ELSE
                    BEGIN
                        SELECT DISTINCT
                                ca.idAsignatura ,
                                ca.sAsignatura
                        FROM    Ctrl_TrayectoriaAcademica cta
                                INNER JOIN Cat_Asignaturas ca ON cta.idAsignatura = ca.idAsignatura
                                INNER JOIN Ctrl_Grupos cg ON cta.idGrupo = cg.idGrupo
                                INNER JOIN Ctrl_Inscripciones ci ON cta.iFolioInscripcion = ci.iFolio
                                INNER JOIN Cat_PlanEstudios cpe ON cg.idPlanEstudios = cpe.idPlanEstudios
                                INNER JOIN Ctrl_Periodos cp1 ON ci.iFolioPeriodo = cp1.iFolio
                                inner JOIN Ctrl_GrupoClaseTentativo cgct ON cg.idGrupo = cgct.idGrupo
                                                              AND cta.idAsignatura = cgct.idAsignatura
                                                              AND ci.iFolioPeriodo = cgct.iFolioPeriodo
                                LEFT JOIN Ctrl_GruposPeriodos cgp ON cg.idGrupo = cgp.idGrupo
                                                              AND cp1.iFolio = cgp.iFolioPeriodo
                                LEFT JOIN dbo.Ctrl_GrupoClaseTentativoCotitulares cgctc ON cgctc.iFolioGrupoClaseTentativo = cgct.iFolio
                        WHERE   cp1.iFolio = @iFolioPeriodo
                                AND cta.idGrupo = @idGrupo
                                AND ( ( cgct.idProfesor = @idProfesor
                                        OR cgctc.idProfesor = @idProfesor
                                      )
                                      OR ( cgp.idTitular = @idEmpleado
                                           AND @idEmpleado IS NOT NULL
                                         )
                                      --OR cgp.idTitular IS NULL		-- BIT/IAM-2030 - Se comenta ya que para la Biblioteca de Asignaturas en el panel del profesor mostraba todas las materias del grupo/Periodo especificado sin importar el profesor
                                    )
                                AND cg.idPlanEstudios = @idPlanEstudios
                                AND cg.idPlantel = @idPlantel
                        ORDER BY ca.sAsignatura
                    END
            END
    END