IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.CPJ_Caja_Transf_Masiva') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.CPJ_Caja_Transf_Masiva
END
GO


CREATE PROCEDURE [dbo].[CPJ_Caja_Transf_Masiva] @pJson VARCHAR(8000)
AS 
SET NOCOUNT ON 

/*Variables recibidas por parámetro a traves del JSON*/
DECLARE	@pFlagUsarTrans			TINYINT
DECLARE @pModoDebug				TINYINT
DECLARE @pId_Periodo_Caja_Ori	INT
DECLARE @pId_Periodo_Caja_Dest	INT
DECLARE @pFecha_Desde			DATETIME
DECLARE @pFecha_Hasta			DATETIME

SET @pFlagUsarTrans				= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'FlagUsarTrans')), 0)
SET @pModoDebug					= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'ModoDebug')), 0)
SET @pId_Periodo_Caja_Ori		= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Periodo_Caja_Ori')), 0)
SET @pId_Periodo_Caja_Dest		= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Periodo_Caja_Dest')), 0)
SET @pFecha_Desde				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Desde')), 0)
SET @pFecha_Hasta				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Hasta')), 0)

/*FIN Variables recibidas por parámetro a traves del JSON*/

/*Variable de Retorno del Stored*/
DECLARE @rtaErrorStored			INT
DECLARE @rtaMsjStored			VARCHAR(4000)

/*FIN Variable de Retorono del Stored*/


/*Declaración de Variables*/
DECLARE @Id_Periodo_Caja_Nuevo		INT
DECLARE @CP_Id_Caja					INT
DECLARE @Mensaje					VARCHAR(100)
DECLARE @Sql						NVARCHAR(1000) 
/*FIN Declaración de Variables*/

BEGIN TRY

	IF @pFlagUsarTrans <> 0 
	BEGIN
		BEGIN TRAN
	END

	IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Ingreso a Stored Procedure: CPJ_Caja_Transf_Masiva'
		PRINT 'Parámetros:'
		PRINT 'FlagUsarTrans: ' + CONVERT(VARCHAR(10), @pFlagUsarTrans) +  'Id_Periodo_Caja_Origen: ' + CONVERT(VARCHAR(10), @pId_Periodo_Caja_Ori) + 'Id_Periodo_Caja_Destino:' + CONVERT(VARCHAR(10),@pId_Periodo_Caja_Dest) + 'Fecha_Desde:' + CONVERT(VARCHAR(10),@pFecha_Desde,103) + 'Fecha_Hasta:' + CONVERT(VARCHAR(10),@pFecha_Hasta,103)
	END

	/*===================================================================*/

	IF(@pId_Periodo_Caja_Ori = 0 OR @pId_Periodo_Caja_Dest = 0 OR @pFecha_Desde = 0 OR @pFecha_Hasta = 0)
	BEGIN
		SET @rtaErrorStored = 70001 /*los períodos no pueden ser ceros y las fechas no pueden ser null*/
		SET @rtaMsjStored	= 'Los periodos no pueden ser ceros y/o las fechas no pueden ser null'
		
		SELECT	 @rtaErrorStored	AS ErrorNumber 
				,0					AS ErrorSeverity  
				,0					AS ErrorState 
				,0					AS ErrorProcedure  
				,0					AS ErrorLine		
				,@rtaMsjStored		AS ErrorMessage
			
		IF @pFlagUsarTrans <> 0 
		BEGIN
			ROLLBACK
		END
		
		RETURN 9999
	END
	
	/*===================================================================*/	
	
	SELECT Id_Trans INTO #Caja_mov_Atransferir FROM Cajas_Mov WHERE Fecha BETWEEN @pFecha_Desde AND @pFecha_Hasta
		AND Id_Periodo_Caja=@pId_Periodo_Caja_Ori 
	
	/*=============Actualizo Tablas=======================================*/	
    
    UPDATE Cajas_Mov SET Id_Periodo_Caja = @pId_Periodo_Caja_Dest 
			  WHERE Id_Trans IN (SELECT Id_Trans FROM #Caja_mov_Atransferir )
			  AND Id_Periodo_Caja = @pId_Periodo_Caja_Ori
			  
	UPDATE Valores_Mov SET Id_Periodo_Caja = @pId_Periodo_Caja_Dest 
			  WHERE Id_Trans IN (SELECT Id_Trans FROM #Caja_mov_Atransferir )
			  AND Id_Periodo_Caja = @pId_Periodo_Caja_Ori		  

    UPDATE Valores SET Id_Periodo_Caja = @pId_Periodo_Caja_Dest 
			  WHERE Id_Trans IN (SELECT Id_Trans FROM #Caja_mov_Atransferir )
			  AND Id_Periodo_Caja = @pId_Periodo_Caja_Ori



	/*===================FIN Actualizo Tablas============================*/	
	
	IF @pFlagUsarTrans <> 0 
	BEGIN
		COMMIT
	END
	
	/*===================================================================*/	

	SET @rtaMsjStored		=	'{' +
								dbo.CF_Json_ParsearVariable('Id_Periodo_Caja_Ori', @pId_Periodo_Caja_Ori, 'INT') +
								dbo.CF_Json_ParsearVariable('Id_Periodo_Caja_Dest', @pId_Periodo_Caja_dest, 'INT') +
								dbo.CF_Json_ParsearVariable('Fecha_Desde', @pFecha_Desde, 'DATETIME') +
								dbo.CF_Json_ParsearVariable('Fecha_Hasta', @pFecha_Hasta, 'DATETIME') +
								'}'

	SELECT	 0				AS ErrorNumber 
			,0				AS ErrorSeverity  
			,0				AS ErrorState 
			,0				AS ErrorProcedure  
			,0				AS ErrorLine		
			,@rtaMsjStored	AS ErrorMessage

	IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Fin Stored Procedure: CPJ_Caja_Transf_Masiva'
	END

END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo
	
	IF ISNULL(@pFlagUsarTrans,0) <> 0 
	BEGIN
		ROLLBACK
	END

	RETURN 9999
END CATCH

RETURN 0