FITOMN of AM v3
6/16/2017 - 5:27 PM

BIT/IAM-1783 - Al inscribir masivamente e indicar que se inscriba sólo a asignaturas con profesores asignados faltaba indicar el periodo

BIT/IAM-1783 - Al inscribir masivamente e indicar que se inscriba sólo a asignaturas con profesores asignados faltaba indicar el periodo


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

CREATE PROCEDURE [dbo].[spInsertarTrayectoriasAcademicasMasivas]
  (
		@idPlanEstudios	SMALLINT,-- = 7,
		@idGrupo SMALLINT,-- = 101,
		@iGrado TINYINT,-- = 1,
		@listaIFoliosInscripcion AS listaBigInt READONLY,
		@bSoloAsignadas BIT, --esto es para solo inscribir en materias con profesores asignados
		@iFolioPeriodo BIGINT
/* --------------------------------------------------------------------------------------------------------------
	FECHA	   |    AUTOR		|	DESCRIPCION
 16/Jun/2017   | Luis Bernal	| BIT/IAM-1783 - Al ser True bSoloAsignadas faltaba especificar el periodo
--------------------------------------------------------------------------------------------------------------*/
	)

AS
BEGIN

  SET NOCOUNT ON;

	DECLARE @resultadoTabla TABLE(iFolioInscripcion BIGINT, ErrorNumber INT, ErrorSeverity INT, ErrorState INT, ErrorProcedure NVARCHAR(126), ErrorLine INT, ErrorMessage NVARCHAR(2048));

	DECLARE @iFolioInscripcionVariableCursor BIGINT = 0;

	DECLARE cursorListaAlumnos CURSOR FOR SELECT * FROM @listaIFoliosInscripcion;
	OPEN cursorListaAlumnos;
	FETCH cursorListaAlumnos INTO @iFolioInscripcionVariableCursor;

	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		BEGIN TRY
			BEGIN TRANSACTION EliminarTrayectoriaAcademica


			IF @bSoloAsignadas = 0
			BEGIN
				INSERT INTO dbo.Ctrl_TrayectoriaAcademica(idGrupo, idAsignatura, idPlanEstudios, iFolioInscripcion, iTipoResultado, bHistorica, iOrden)
					SELECT @idGrupo, CPE.idAsignatura, @idPlanEstudios, @iFolioInscripcionVariableCursor, 0, NULL, 1  
					FROM dbo.Ctrl_PlanEstudios CPE 
					WHERE CPE.idPlanEstudios = @idPlanEstudios AND CPE.iGrado = @iGrado;
			END
				ELSE
                BEGIN
                	INSERT INTO dbo.Ctrl_TrayectoriaAcademica(idGrupo, idAsignatura, idPlanEstudios, iFolioInscripcion, iTipoResultado, bHistorica, iOrden)
					SELECT DISTINCT @idGrupo, CPE.idAsignatura, @idPlanEstudios, @iFolioInscripcionVariableCursor, 0, NULL, 1  
					FROM dbo.Ctrl_PlanEstudios CPE 
						 INNER JOIN dbo.Ctrl_GrupoClaseTentativo AS cgct ON cgct.idAsignatura = CPE.idAsignatura AND cgct.idGrupo = @idGrupo AND cgct.iFolioPeriodo = @iFolioPeriodo
					WHERE CPE.idPlanEstudios = @idPlanEstudios AND CPE.iGrado = @iGrado;
                END
			
			
			COMMIT TRANSACTION EliminarTrayectoriaAcademica
		END TRY
		BEGIN CATCH 
			IF (@@TRANCOUNT > 0)
			BEGIN
				ROLLBACK TRANSACTION EliminarTrayectoriaAcademica
			END
		END CATCH

		IF(ERROR_NUMBER() IS NOT NULL OR ERROR_SEVERITY() IS NOT NULL OR ERROR_STATE() IS NOT NULL OR ERROR_PROCEDURE() IS NOT NULL OR ERROR_LINE() IS NOT NULL OR ERROR_MESSAGE() IS NOT NULL)
		BEGIN
			INSERT INTO @resultadoTabla VALUES(@iFolioInscripcionVariableCursor, ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_PROCEDURE(), ERROR_LINE(), ERROR_MESSAGE());
		END

		FETCH cursorListaAlumnos INTO @iFolioInscripcionVariableCursor;
	END

	CLOSE cursorListaAlumnos;
	DEALLOCATE cursorListaAlumnos;

	SELECT iFolioInscripcion ,
           ErrorNumber ,
           ErrorSeverity ,
           ErrorState ,
           ErrorProcedure ,
           ErrorLine ,
           ErrorMessage FROM @resultadoTabla;

END