FITOMN of AM v3
6/29/2017 - 4:06 PM

BIT/IAM-1838 - spRegistrarAsignaturaPlanEstudios

BIT/IAM-1838 - spRegistrarAsignaturaPlanEstudios


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

CREATE PROCEDURE [dbo].[spRegistrarAsignaturaPlanEstudios]
--@Variables INT
    @idAlumno INT
  , @idPlanEstudiosD SMALLINT
  , @iFolioPeriodoD BIGINT
  , @idPlanEstudiosO SMALLINT
  , @iFolioPeriodoO BIGINT
  , @idAsignaturaO SMALLINT
  , @idAsignaturaD SMALLINT
  , @bEquivalencia BIT
  , @idUsuario INT
  , @dFechaReg DATETIME
  , @iFolioTrayectoria BIGINT
/* --------------------------------------------------------------------------------------------------------------
	FECHA	   |    AUTOR			|	DESCRIPCION
 00/----/2015  | Leonardo Domínguez	|
 29/jun./2017  | Luis Bernal		| BIT/IAM-1838
--------------------------------------------------------------------------------------------------------------*/
AS
    BEGIN
        SET NOCOUNT ON;
        SET LANGUAGE spanish
   --CONTENIDO PROCEDIMIENTO
   
        DECLARE @idOfEdcuD SMALLINT = 0
          , @idOfEdcuO SMALLINT = 0
          , @iFolioInscripcionN BIGINT = 0
          , @iFolioTrayectoriaN BIGINT = 0
          , @iResultado BIT = 1
          , @sMsjResultado VARCHAR(250) = '' 
        DECLARE @bUpdate BIT = 0

------------------------------------PLAN ANTERIOR------------------------------------------------------
        IF @bEquivalencia = 0
            BEGIN
	

                IF ( SELECT COUNT(*)
                     FROM   dbo.Ctrl_TrayectoriaAcademica AS cta
                     INNER JOIN dbo.Ctrl_Inscripciones AS ci
                     ON     ci.iFolio = cta.iFolioInscripcion
                     INNER JOIN dbo.Cat_Alumnos AS ca
                     ON     ca.idAlumno = ci.idAlumno
                     INNER JOIN dbo.Ctrl_Grupos AS cg
                     ON     cg.idGrupo = cta.idGrupo
                            AND cg.idPlanEstudios = cta.idPlanEstudios
                     WHERE  ca.idAlumno = @idAlumno
                            AND ci.iFolioPeriodo = @iFolioPeriodoD
                            AND cta.idPlanEstudios = @idPlanEstudiosD
                   ) = 0
                    BEGIN
	
                        SELECT  @idOfEdcuD = cpe.idOfEduc
                        FROM    dbo.Cat_PlanEstudios AS cpe
                        WHERE   cpe.idPlanEstudios = @idPlanEstudiosD

                        IF @idOfEdcuD > 0
                            BEGIN	
							-------------------OBTENIENDO LA INSCRIPCION DESTINO
                                SELECT DISTINCT TOP 1
                                        @iFolioInscripcionN = ci.iFolio
                                FROM   dbo.Ctrl_Inscripciones AS ci
                                WHERE   ci.idAlumno = @idAlumno
										AND ci.idOfEduc = @idOfEdcuD
                                        AND ci.iFolioPeriodo = @iFolioPeriodoD
								
                                IF @iFolioInscripcionN = 0
                                    BEGIN
																	
									--------------OBTENIENDO LA OFERTA EDUCATIVA ORIGINAL
                                        SELECT  @idOfEdcuO = ci.idOfEduc
                                              --, @iFolioInscripcionN = ci.iFolio
                                        FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                                        INNER JOIN dbo.Ctrl_Inscripciones AS ci
                                        ON      ci.iFolio = cta.iFolioInscripcion
                                        WHERE   ci.idAlumno = @idAlumno
                                                AND ci.iFolioPeriodo = @iFolioPeriodoO
												AND cta.idPlanEstudios = @idPlanEstudiosO
                                                AND cta.idAsignatura = @idAsignaturaO

									--------------GUARDAR EL REGISTRO DEL CAMBIO DE PLAN DE ESTUDIOS POR INSCRIPCION
                                        INSERT  INTO dbo.Ctrl_CambiosPlanEstudiosHistorico
                                                ( iFolioInsc
                                                , iFolioPeriodoO
                                                , idPlanEstudiosO
                                                , idOfEducO
                                                , dFechaCambio
                                                , idUsuarioCambio
                                                , iFolioPeriodoD
                                                , idPlanEstudiosD
                                                , idOfEducD )
                                        VALUES  ( @iFolioInscripcionN  -- iFolioInsc - bigint
                                                , @iFolioPeriodoO  -- iFolioPeriodoO - bigint
                                                , @idPlanEstudiosO  -- idPlanEstudiosO - smallint
                                                , @idOfEdcuO  -- idOfEducO - smallint
                                                , @dFechaReg  -- dFechaCambio - datetime
                                                , @idUsuario  -- idUsuarioCambio - int
                                                , @iFolioPeriodoD  -- iFolioPeriodoD - bigint
                                                , @idPlanEstudiosD  -- idPlanEstudiosD - smallint
                                                , @idOfEdcuD  -- idOfEducD - smallint
                                                  )
									--------------ACTUALIZANDO LA OFERTA EDUCATIVA DE LA INSCRIPCION 


                                        IF @iFolioInscripcionN = 0
                                            BEGIN 
                                                --UPDATE  dbo.Ctrl_Inscripciones
                                                --SET     idOfEduc = @idOfEdcuD
                                                --      , iFolioPeriodo = @iFolioPeriodoD
                                                --WHERE   idAlumno = @idAlumno
                                                --        AND iFolioPeriodo = @iFolioPeriodoO
                                                --        AND idOfEduc = @idOfEdcuO
                                                INSERT  INTO dbo.Ctrl_Inscripciones
                                                        ( iFolioPeriodo
                                                        , iNoPeriodo
                                                        , idPlantel
                                                        , idOfEduc
                                                        , idEstatusInsc
                                                        , idAlumno
                                                        , idUsuario
                                                        , idTipoHorario
                                                        , bReinscripcion
                                                        , dFecha
                                                        , bRecargos
                                                        , dBeca
                                                        , bActivo
                                                        , mColegiatura
                                                        , mSobrecarga
                                                        , bColActualizada
                                                        , iFolioDoc
                                                        , dPromedio
                                                        , dFechaEstatus
                                                        , sObsEstatus
                                                        , idUsuarioEstatus
                                                        , bHistorica
                                                        , sTipoPagoColeg )
                                                        SELECT  @iFolioPeriodoD
                                                              , ci.iNoPeriodo
                                                              , ci.idPlantel
                                                              , @idOfEdcuD
                                                              , ci.idEstatusInsc
                                                              , ci.idAlumno
                                                              , ci.idUsuario
                                                              , ci.idTipoHorario
                                                              , ci.bReinscripcion
                                                              , ci.dFecha
                                                              , ci.bRecargos
                                                              , ci.dBeca
                                                              , ci.bActivo
                                                              , ci.mColegiatura
                                                              , ci.mSobrecarga
                                                              , ci.bColActualizada
                                                              , ci.iFolioDoc
                                                              , ci.dPromedio
                                                              , ci.dFechaEstatus
                                                              , ci.sObsEstatus
                                                              , ci.idUsuarioEstatus
                                                              , ci.bHistorica
                                                              , ci.sTipoPagoColeg
                                                        FROM    dbo.Ctrl_Inscripciones AS ci
                                                        WHERE   ci.idAlumno = @idAlumno
                                                                AND ci.idOfEduc = @idOfEdcuO
                                                                AND ci.iFolioPeriodo = @iFolioPeriodoO
                                                IF @@ROWCOUNT > 0
                                                    BEGIN
                                                        SET @iFolioInscripcionN = SCOPE_IDENTITY()
                                                        SET @iResultado = 1
                                                    END
                                                ELSE
                                                    BEGIN
                                                        SET @iResultado = 0
                                                        SET @sMsjResultado = 'No se pudo registrar la inscripcion'
                                                    END
                                                --SELECT DISTINCT TOP 1
                                                --        @iFolioInscripcionN = ci.iFolio
                                                --FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                                                --INNER JOIN dbo.Ctrl_Inscripciones AS ci
                                                --ON      ci.iFolio = cta.iFolioInscripcion
                                                --WHERE   ci.idAlumno = @idAlumno
                                                --        AND ci.iFolioPeriodo = @iFolioPeriodoD
                                                --        AND cta.idPlanEstudios = @idPlanEstudiosD
                                            END                                        
                                    END
                            END

                    END


                IF @iFolioInscripcionN = 0
                    BEGIN
                        SELECT DISTINCT TOP 1
                                @iFolioInscripcionN = ci.iFolio
                        FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                        INNER JOIN dbo.Ctrl_Inscripciones AS ci
                        ON      ci.iFolio = cta.iFolioInscripcion
                        INNER JOIN dbo.Cat_Alumnos AS ca
                        ON      ca.idAlumno = ci.idAlumno
                        INNER JOIN dbo.Ctrl_Grupos AS cg
                        ON      cg.idGrupo = cta.idGrupo
                                AND cg.idPlanEstudios = cta.idPlanEstudios
                        WHERE   ca.idAlumno = @idAlumno
                                AND ci.iFolioPeriodo = @iFolioPeriodoD
                                AND cta.idPlanEstudios = @idPlanEstudiosD
                    END

					
                IF @iFolioInscripcionN > 0
                    BEGIN
                        SELECT DISTINCT
                                @iFolioTrayectoriaN = cta.iFolio
                              , @iResultado = 1
                        FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                        INNER JOIN dbo.Ctrl_Inscripciones AS ci
                        ON      ci.iFolio = cta.iFolioInscripcion
                        WHERE   ci.idAlumno = @idAlumno
                                AND ci.iFolioPeriodo = @iFolioPeriodoD
                                AND cta.idPlanEstudios = @idPlanEstudiosD
                                AND cta.idAsignatura = @idAsignaturaD
                        IF @iFolioTrayectoriaN = 0
                            BEGIN				
							
                                SELECT TOP 1
                                        @bUpdate = CASE WHEN COUNT(*) > 0 THEN 1
                                                        ELSE 0
                                                   END
                                FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                                WHERE   cta.iFolioInscripcion = @iFolioInscripcionN
                                        AND cta.idAsignatura = @idAsignaturaD
                                IF @bUpdate = 0
                                    BEGIN
                                        INSERT  INTO dbo.Ctrl_TrayectoriaAcademica
                                                ( idGrupo
                                                , idAsignatura
                                                , idPlanEstudios
                                                , iFolioInscripcion
                                                , iTipoResultado
                                                , bHistorica
                                                , iOrden )
                                                SELECT DISTINCT TOP 1
                                                        cta.idGrupo
                                                      , @idAsignaturaD
                                                      , @idPlanEstudiosD
                                                      , @iFolioInscripcionN
                                                      , cta.iTipoResultado
                                                      , cta.bHistorica
                                                      , cta.iOrden
                                                FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                                                INNER JOIN dbo.Ctrl_Inscripciones AS ci
                                                ON      ci.iFolio = cta.iFolioInscripcion
                                                INNER JOIN dbo.Cat_Alumnos AS ca
                                                ON      ca.idAlumno = ci.idAlumno
                                                INNER JOIN dbo.Ctrl_Grupos AS cg
                                                ON      cg.idGrupo = cta.idGrupo
                                                        --AND cg.idPlanEstudios = cta.idPlanEstudios		-- BIT/IAM-1838 - Se comenta ya que sólo se necesita la relación de grupos con respecto a la trayectoria académica
                                                WHERE   ca.idAlumno = @idAlumno
                                                        AND cta.iFolio = @iFolioTrayectoria
                                                        --AND ci.iFolioPeriodo = @iFolioPeriodoO
														--AND cta.iFolioInscripcion = @iFolioInscripcionN
                                                        --AND cta.idPlanEstudios = @idPlanEstudiosO
                                                        --AND cta.idAsignatura = @idAsignaturaO
												
                                        IF @@ROWCOUNT > 0
                                            BEGIN
                                                SET @iFolioTrayectoriaN = SCOPE_IDENTITY()
                                                SET @iResultado = 1
                                            END
                                        ELSE
                                            BEGIN
                                                SET @iResultado = 0
                                                SET @sMsjResultado = 'No se pudo registrar la trayectoria'
                                            END
                                    END 
                                ELSE
                                    BEGIN
									---------------UPDATEA LA ASIGNATURA VIEJA Y EL PLAN ESTUDIOS POR LOS NUEVOS
                                        SET @bUpdate = 1
           --                             UPDATE  dbo.Ctrl_TrayectoriaAcademica
           --                             SET     idPlanEstudios = @idPlanEstudiosD
											--, idAsignatura = @idAsignaturaD
           --                             WHERE   iFolioInscripcion = @iFolioInscripcionN
           --                                     AND idAsignatura = @idAsignaturaO
                                        INSERT  INTO dbo.Ctrl_TrayectoriaAcademica
                                                ( idGrupo
                                                , idAsignatura
                                                , idPlanEstudios
                                                , iFolioInscripcion
                                                , iTipoResultado
                                                , bHistorica
                                                , iOrden )
                                                SELECT DISTINCT TOP 1
                                                        cta.idGrupo
                                                      , @idAsignaturaD
                                                      , @idPlanEstudiosD
                                                      , @iFolioInscripcionN
                                                      , cta.iTipoResultado
                                                      , cta.bHistorica
                                                      , cta.iOrden
                                                FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                                                INNER JOIN dbo.Ctrl_Inscripciones AS ci
                                                ON      ci.iFolio = cta.iFolioInscripcion
                                                INNER JOIN dbo.Cat_Alumnos AS ca
                                                ON      ca.idAlumno = ci.idAlumno
                                                INNER JOIN dbo.Ctrl_Grupos AS cg
                                                ON      cg.idGrupo = cta.idGrupo
                                                        AND cg.idPlanEstudios = cta.idPlanEstudios
                                                WHERE   ca.idAlumno = @idAlumno
                                                        AND cta.iFolio = @iFolioTrayectoria

                                        SELECT TOP 1
                                                @iFolioTrayectoriaN = cta.iFolio
                                        FROM    dbo.Ctrl_TrayectoriaAcademica AS cta
                                        WHERE   cta.iFolioInscripcion = @iFolioInscripcionN
                                                AND cta.idAsignatura = @idAsignaturaD
                                    END
                            END
                        
                    END
                ELSE
                    IF @iResultado = 1
                        BEGIN
                            SET @iResultado = 0
                            SET @sMsjResultado = 'El folio de la inscripcion es 0'
                        END
                IF @iFolioTrayectoriaN > 0
                    BEGIN
					
                        IF @bUpdate = 0
                            BEGIN
								
                                INSERT  INTO dbo.Ctrl_TrayectoriaAcademicaDet
                                        ( iFolioTrayectoria
                                        , idEvaluacion
                                        , idEstatus
                                        , dCalificacion
                                        , idUsuario
                                        , sObservaciones
                                        , bHistorica
                                        , dFechaReg )
                                        SELECT  @iFolioTrayectoriaN
                                              , ctad.idEvaluacion
                                              , ctad.idEstatus
                                              , ctad.dCalificacion
                                              , ctad.idUsuario
                                              , ctad.sObservaciones
                                              , ctad.bHistorica
                                              , ctad.dFechaReg
                                        FROM    dbo.Ctrl_TrayectoriaAcademicaDet AS ctad
                                        INNER JOIN dbo.Ctrl_TrayectoriaAcademica AS cta
                                        ON      cta.iFolio = ctad.iFolioTrayectoria
                                        INNER JOIN dbo.Ctrl_Inscripciones AS ci
                                        ON      ci.iFolio = cta.iFolioInscripcion
                                        INNER JOIN dbo.Cat_Alumnos AS ca
                                        ON      ca.idAlumno = ci.idAlumno
                                        INNER JOIN dbo.Ctrl_Grupos AS cg
                                        ON      cg.idGrupo = cta.idGrupo
                                                --AND cg.idPlanEstudios = cta.idPlanEstudios
                                        WHERE   ctad.iFolioTrayectoria = @iFolioTrayectoria
						
                                IF @@ROWCOUNT > 0
                                    BEGIN
                                        SET @iResultado = 1
                                        SET @sMsjResultado = 'Las calificaciones fueron registradas correctamente'
                                    END
                                ELSE
                                    BEGIN
                                        SET @iResultado = 0
                                        SET @sMsjResultado = 'Ocurrio un problema al querer registrar el detalle de la trayectoria academica.'
                                    END

                            END
                        ELSE
                            BEGIN
                                SET @iResultado = 1
                                SET @sMsjResultado = 'Las calificaciones fueron registradas correctamente'
                            END
						----------------------------ELIMINANDO LOS REGISTROS DE CALIFICACIONES E INSCRIPCIONES ACADEMICAS
                        --IF ( @iResultado = 1 AND @bUpdate = 0 )
                        --    BEGIN
                        --        DELETE  dbo.Ctrl_TrayectoriaAcademicaDet
                        --        WHERE   iFolioTrayectoria = ( SELECT    iFolio
                        --                                      FROM      dbo.Ctrl_TrayectoriaAcademica
                        --                                      WHERE     iFolioInscripcion = @iFolioInscripcionN
                        --                                                AND idAsignatura = @idAsignaturaO
                        --                                                AND idPlanEstudios = @idPlanEstudiosO
                        --                                    )
                        --        DELETE  dbo.Ctrl_TrayectoriaAcademica
                        --        WHERE   iFolioInscripcion = @iFolioInscripcionN
                        --                AND idAsignatura = @idAsignaturaO
                        --                AND idPlanEstudios = @idPlanEstudiosO
                        --    END
                    END
                ELSE
                    IF @iResultado = 1
                        BEGIN
                            SET @iResultado = 0
                            SET @sMsjResultado = 'El folio de la trayectoria es 0'
                        END
            END	
        ELSE
            IF @bEquivalencia = 1
                BEGIN
                    INSERT  INTO dbo.Ctrl_Equivalencias
                            ( idAsignatura
                            , dCalificacion
                            , dFecha
                            , sDictamen
                            , idEstatus
                            , idUsuario
                            , idAlumno
                            , idPlanEstudios
                            , sDescripcion
                            , iFolioPeriodo
                            , dFechaAcreditacion
                            , idPlanEstudiosO
                            , idEvaluacionO
                            , idAsignaturaO
                            , iFolioPeriodoO
                            , iTipoOperacion
                            , sCalifO
                            , sInstitutoO
                            , sArchivoAvala
                            , idEvalD
                            , sNoAprobacion )
                            SELECT  @idAsignaturaD
                                  , ce.dCalificacion
                                  , ce.dFecha
                                  , ce.sDictamen
                                  , ce.idEstatus
                                  , ce.idUsuario
                                  , ce.idAlumno
                                  , @idPlanEstudiosD
                                  , ce.sDescripcion
                                  , @iFolioPeriodoD
                                  , ce.dFechaAcreditacion
                                  , ce.idPlanEstudiosO
                                  , ce.idEvaluacionO
                                  , ce.idAsignaturaO
                                  , ce.iFolioPeriodoO
                                  , ce.iTipoOperacion
                                  , ce.sCalifO
                                  , ce.sInstitutoO
                                  , ce.sArchivoAvala
                                  , ce.idEvalD
                                  , ce.sNoAprobacion
                            FROM    dbo.Ctrl_Equivalencias AS ce
                            WHERE   ce.idAlumno = @idAlumno
                                    AND ce.idPlanEstudiosO = @idPlanEstudiosO
                                    AND ce.iFolioPeriodo = @iFolioPeriodoO
                                    AND ce.idAsignatura = @idAsignaturaO

                    IF @@ROWCOUNT = 0
                        BEGIN
                            SET @iResultado = 0
                            SET @sMsjResultado = 'No se registro la equivalencia'
                        END
                    ELSE
                        BEGIN
                            SET @iResultado = 1
                            SET @sMsjResultado = 'Se registro exitosamente la equivalencia'
                        END

                END
            ELSE
                BEGIN
                    SET @iResultado = 0
                    SET @sMsjResultado = 'No se puedo detectar si es equivalencia o no'
                END

        SELECT  @iResultado AS iResultado
              , @sMsjResultado AS sMsjResultado
    END