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