 IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'[dbo].[CPJ_Asientos_Numerar]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE [dbo].[CPJ_Asientos_Numerar] 
END
GO
CREATE	 PROCEDURE [dbo].[CPJ_Asientos_Numerar] @pJsonRecibido VARCHAR(8000)
AS 
SET NOCOUNT ON

DECLARE @pFecha_Desde		DATETIME
			,@pFecha_Hasta		DATETIME	
			,@pId_Plan_Cta			INT
			,@pModoDebug			TINYINT
			,@pId_Usuario			SMALLINT
/*=============================================================================================================================*/


DECLARE 	@pId_Asiento				INT
				,@Metodo				INT
				,@Sql					NVARCHAR(MAX)
				,@Cantidad				INT
				,@ProxNro				INT
				,@Mensaje				VARCHAR(100)
				,@UltError				INT
				--,@pId_Plan_Cta		INT


SET @pFecha_Desde				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJsonRecibido,'Fecha_Desde')),GETDATE())
SET @pFecha_Hasta				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJsonRecibido,'Fecha_Hasta')),GETDATE())
SET @pId_Usuario					= ISNULL(CONVERT(SMALLINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Id_Usuario')), 0)
SET @pModoDebug				= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJsonRecibido,'ModoDebug')), 0)
SET @pId_Plan_Cta				= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJsonRecibido,'Id_Plan_Cta')), 0)


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

BEGIN TRY

IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Ingreso a Stored Procedure: CPJ_Asientos_Numerar'
		PRINT 'Parametros: '+ @pJsonRecibido  
		PRINT '@pId_Plan_Cta: ' + CONVERT(VARCHAR(4),@pId_Plan_Cta)
	END
/*=============================================================================================================================*/

SET @Cantidad = 0
SET @Metodo = 	dbo.CF_xParam('Tipo_Numero_Asiento')

CREATE TABLE #Asiento (Id_Asiento INT)

SET @Sql = 'INSERT INTO #Asiento
					SELECT A.ID_ASIENTO FROM ASIENTOS A, ASIENTOS_TIPOS T WHERE A.Id_Plan_Cta =' + CONVERT(VARCHAR(10), @pId_Plan_Cta) +
                                             'AND A.Id_Tipo_Asi =  T.Id_Tipo_Asi' 
                                                                               
 
IF @Metodo =2
BEGIN                                             
		SET @Sql =	RTRIM(LTRIM(@Sql)) + CHAR(13) + 
					'AND A.Fecha >= ''' + CONVERT(VARCHAR(10), @pFecha_Desde, 112) + ''' '
					
		SET @Sql =	RTRIM(LTRIM(@Sql)) + CHAR(13) + 
					'AND A.Fecha < ''' + CONVERT(VARCHAR(10), DATEADD(DAY, 1, @pFecha_Hasta), 112) + ''' ' 
END	

SET @Sql = RTRIM(LTRIM(@Sql)) + CHAR(13) + 'ORDER BY A.Fecha,T.Posicion,A.Id_Asiento,A.Id_Tipo_Asi'			

	                                            

IF @pModoDebug = 1 PRINT @Sql
			

EXEC sp_executesql @Sql

ALTER TABLE #Asiento ADD Numero INT IDENTITY(1,1)

-- SELECT * FROM #Asiento

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



	SET @Sql ='UPDATE Asientos SET Nro = Numero FROM #Asiento z, Asientos a WHERE a.Id_asiento=z.ID_ASIENTO' 
	EXEC sp_executesql @Sql
/*=============================================================================================================================*/

DROP TABLE #Asiento


	IF(@pModoDebug = 1)
		BEGIN
			PRINT @Sql
			PRINT 'Tipo_Numero_Asiento Metodo: ' + CONVERT(CHAR(1),@Metodo)
			PRINT '@pId_Plan_Cta: ' + CONVERT(VARCHAR(4),@pId_Plan_Cta)
			PRINT 'Fin Stored Procedure: CPJ_Asientos_Numerar'
		END
END TRY  

BEGIN CATCH  
    EXECUTE usp_GetErrorInfo

	RETURN 9999
END CATCH

RETURN 0





/*

DECLARE @Param VARCHAR(5000)

SET @Param = '{' +
			'"Fecha_Desde":"",' +
			'"Fecha_Hasta":"",' +
			'"Id_Plan_Cta":"10",' +
			'"ModoDebug":"1"' +
			'}'

EXEC CPJ_Asientos_Numerar @Param

*/