FITOMN of AM v3
8/10/2017 - 9:24 PM

BIT/IAM-2096 - spListarPeriodosProfesorPlanteles

BIT/IAM-2096 - spListarPeriodosProfesorPlanteles


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

CREATE PROCEDURE [dbo].[spListarPeriodosProfesorPlanteles]
    @idUsuario INT ,
    @bidProf BIT
/* --------------------------------------------------------------------------------------------------------------
	FECHA	   |    AUTOR		|	DESCRIPCION
 10/ago./2017  | Luis Bernal	| BIT/IAM-2096 - Se adicona el tipo de ordenación descendente  en año y mes inicial para que el listado de periodos sea del más reciente al más antiguo.
--------------------------------------------------------------------------------------------------------------*/
AS
    BEGIN
        SET NOCOUNT ON;
        SET LANGUAGE spanish;
        DECLARE @idProfesor INT ,
            @idEmpleado INT;
        

        IF @bidProf = 1
            BEGIN
                SELECT  @idProfesor = @idUsuario ,
                        @idEmpleado = ce.idEmpleado
                FROM    dbo.Cat_Profesores AS cp
                        LEFT JOIN dbo.Cat_Empleados AS ce ON ce.idProfesor = cp.idProfesor;

            END;
        ELSE
            BEGIN
                SELECT  @idProfesor = cu.idProfesor ,
                        @idEmpleado = ce.idEmpleado
                FROM    dbo.Cat_Usuarios AS cu
                        INNER JOIN dbo.Cat_Empleados AS ce ON ce.idUsuario = cu.idUsuario
                WHERE   cu.idUsuario = @idUsuario;
            END; 

        SELECT  ROW_NUMBER() OVER ( ORDER BY Periodos.sPlantel, Periodos.iAnioInicial DESC, Periodos.iMesInicial DESC, Periodos.sNombreOficial ) AS iFila ,
                *
        FROM    ( SELECT DISTINCT
                            CAST(cp1.iFolio AS BIGINT) AS iFolio ,
                            cg.idPlantel ,
                            cp2.sNombre AS sPlantel ,
                            cp.sAbreviatura + ' ' + cp1.sAbPeriodo + ' ('
                            + cp1.sNombreOficial + ')' AS sNombreOficial ,
                            cp1.iAnioInicial ,
                            cp1.iMesInicial
                  FROM      Ctrl_TrayectoriaAcademica cta
                            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 Cat_Planes cp ON cp1.idPlan = cp.idPlan
                            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.Cat_Planteles AS cp2 ON cp2.idPlantel = cg.idPlantel
                  WHERE     ( cgct.idProfesor = @idProfesor
                              OR ( cgp.idTitular = @idEmpleado
                                   AND @idEmpleado IS NOT NULL
                                 )
                              OR cgp.idTitular IS NULL
                            )
                ) Periodos;

    END;