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

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


/*Variables recibidas por parámetro a traves del JSON*/
DECLARE @pFlagUsarTrans					TINYINT
DECLARE @pModoDebug						TINYINT
DECLARE @pId_Trans							INT
DECLARE @pId_Tipo_Val						CHAR(3)
DECLARE @pValor_Nro						INT
DECLARE @pFecha_Val						DATETIME
DECLARE @pFecha_Emision				DATETIME
DECLARE @pFecha_Acreditacion			DATETIME
DECLARE @pFecha_Vence					DATETIME
DECLARE @pImporte							DECIMAL(12,2)
DECLARE @pId_Tarjeta						VARCHAR(10)
DECLARE @pTarjeta_Nro					VARCHAR(25)
DECLARE @pTarjeta_Vence					DATETIME
DECLARE @pTarjeta_Lote					SMALLINT
DECLARE @pId_Cta_banco					SMALLINT

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_Trans						= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Trans')),0)
SET @pId_Tipo_Val					= ISNULL(CONVERT(CHAR(3), dbo.CF_JSON_VALUE(@pJson,'Id_Tipo_Val')),'')
SET @pValor_Nro						= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Valor_Nro')),0)
SET @pFecha_Val						= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Val')),'19000101')
SET @pFecha_Emision				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Emision')),'19000101')
SET @pFecha_Acreditacion			= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Acreditacion')),'19000101')
SET @pFecha_Vence					= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Vence')),'19000101')
SET @pImporte							= ISNULL(CONVERT(DECIMAL(12,2), dbo.CF_JSON_VALUE(@pJson,'Importe')),0)
SET @pId_Tarjeta						= ISNULL(CONVERT(VARCHAR(25), dbo.CF_JSON_VALUE(@pJson,'Id_Tarjeta')),'')
SET @pTarjeta_Nro					= ISNULL(CONVERT(VARCHAR(25), dbo.CF_JSON_VALUE(@pJson,'Tarjeta_Nro')),'') 
SET @pTarjeta_Vence				= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Tarjeta_Vence')),'19000101')
SET @pTarjeta_Lote					= ISNULL(CONVERT(SMALLINT, dbo.CF_JSON_VALUE(@pJson,'Tarjeta_Lote')),0)
SET @pId_Cta_banco					= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Cta_banco')),0)

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

/*Declaracion Variables Locales*/
DECLARE @Id_Valor						INT
DECLARE @Id_Valor_Origen			INT
DECLARE @Id_Estado_Valor			SMALLINT
DECLARE @Descripcion					VARCHAR(50)
DECLARE @Id_Cliente						INT
DECLARE @Id_Proveedor				INT
DECLARE @Id_Banco						SMALLINT
DECLARE @Id_Cta_Banco				SMALLINT
DECLARE @Id_Mov_Caja					INT
DECLARE @Id_Moneda					CHAR(3)
DECLARE @Cotizacion						DECIMAL(9,4)
DECLARE @Id_Periodo_Caja			INT
DECLARE @Propio							TINYINT
DECLARE @Transferible					TINYINT
DECLARE @Cuit								VARCHAR(13)
DECLARE @Id_Chequera					INT
DECLARE @Renglon_Nro_Caja			SMALLINT
DECLARE @Flag_Conciliado				TINYINT
DECLARE @Fecha_Conci					DATETIME
DECLARE @Tarjeta_Cant_Cuotas		TINYINT
DECLARE @Tarjeta_Imp_Cuota		DECIMAL(12,2)
DECLARE @Tarjeta_Crit_Cuota		CHAR(1)

DECLARE @pTarjeta_Cod_Seguridad	INT	
DECLARE @pTarjeta_Cod_Autoriz		INT

DECLARE @Flag_Existe_Tipo_Valor	TINYINT

DECLARE @Renglon_Nro					SMALLINT
DECLARE @Id_Motivo_Estado			SMALLINT
DECLARE @Fecha							 DATETIME

DECLARE @Id_Estado_Mov_Caja		INT
DECLARE @Id_Tipo_Mov_Caja			SMALLINT
DECLARE @Lote								VARCHAR(20)

DECLARE @Id_Mov_Cta_Banco		INT


DECLARE @Mensaje			VARCHAR(100)
/*Fin de Declaraciones Variables Locales */



BEGIN TRY
	IF @pFlagUsarTrans <> 0 
	BEGIN
		BEGIN TRAN
	END

	IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Ingreso a Stored Procedure: CPJ_Cbtes_Rec_Generar_Pago'
		PRINT 'Parámetros: '
		PRINT  'Id_Trans: ' + CONVERT(VARCHAR(10), @pId_Trans) + ' Id_Tipo_Val: ' + @pId_Tipo_Val + ' Valor_Nro: ' + CONVERT(VARCHAR(20), @pValor_Nro) + ' Fecha_Val: ' + CONVERT(VARCHAR(10), @pFecha_Val,103) + ' Fecha_Emision: ' + CONVERT(VARCHAR(10), @pFecha_Emision,103)
		PRINT 'Fecha_Acreditacion: ' + CONVERT(VARCHAR(10),@pFecha_Acreditacion,103) + 'Fecha_Vence: ' + CONVERT(VARCHAR(10),@pFecha_Vence,103) + 'Importe: ' + CONVERT(VARCHAR(50),@pImporte) + 'Id_Tarjeta: ' + @pId_Tarjeta + 'Tarjeta_Nro: ' + @pTarjeta_Nro + 'Tarjeta_Vence: ' + CONVERT(VARCHAR(10),@pTarjeta_Vence,103)
 		PRINT 'Tarjeta_Lote: ' + CONVERT(VARCHAR(10),@pTarjeta_Lote) + '@pId_Cta_banco: ' + CONVERT(VARCHAR(10),@pId_Cta_banco)
 	END

	
	/*Validaciones****************************************************************************/

	SET @Flag_Existe_Tipo_Valor = ISNULL((SELECT 1 FROM Valores_Tipos WHERE Id_Tipo_Val = @pId_Tipo_Val), 0)
	IF (@Flag_Existe_Tipo_Valor = 0)  RAISERROR ('Flag_Existe_Tipo_Valor can not be zero.', 16,  1 ) 
	IF(@pId_Trans = 0) RAISERROR ('Id_Trans can not be zero.', 16,  1 ) 

	/*************************************************************************************************/
		SET @rtaMsjStored		=	'{' +
											dbo.CF_Json_ParsearVariable('id_trans', @pId_Trans, 'INT')  + ',' +
											dbo.CF_Json_ParsearVariable('Id_Tipo_Val', @pId_Tipo_Val, 'CHAR(3)')  + ',' +
											dbo.CF_Json_ParsearVariable('Val_Nro', @pValor_Nro, 'INT')  + ',' +
											dbo.CF_Json_ParsearVariable('Id_Tarjeta',@pId_Tarjeta,'VARCHAR(25)')+ ',' +
											dbo.CF_Json_ParsearVariable('Importe', @pImporte, 'DECIMAL') +
											'}'

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

	SELECT  @Id_Cliente		= ISNULL(Id_Cliente, 0),
			@Id_Moneda			= ISNULL(Id_Moneda, 'PES'),
			@Cotizacion			= ISNULL(Cotizacion, 1),
			@Cuit					= ISNULL(Cuit, ''),
			@Fecha					= Fecha
	FROM Cbtes
	WHERE 
	Id_Trans = @pId_Trans

	/*****************************************************************************/
	
	SELECT  @Id_Periodo_Caja = ISNULL(Id_Periodo_Caja, 0)
	FROM Cajas_Mov
	WHERE 
	Id_Trans = @pId_Trans

	/*****************************************************************************/

	SET @Id_Valor				= (SELECT MAX(ISNULL(Id_Valor,0)) + 1 FROM Valores)
	SET @Id_Valor_Origen	= 0
	SET @Id_Estado_Valor	= 4 /*No hay en carga*/
	SET @Descripcion			= (SELECT ISNULL(Descripcion, '') FROM Valores_Tipos WHERE Id_Tipo_Val = @pId_Tipo_Val)
	SET @Id_Proveedor		= 0
	SET @Id_Banco				= (SELECT ISNULL(ID_Banco,0) FROM Bancos_Ctas WHERE Id_Cta_Banco = @pId_Cta_Banco)
	SET @Id_Cta_Banco		= @pId_Cta_Banco
	SET @Id_Mov_Caja		= 0
	SET @Propio					= 0
	SET @Transferible			= 0
	SET @Id_Chequera		= 0
	SET @Renglon_Nro_Caja = 1
	SET @Flag_Conciliado	= 0
	--SET @Fecha_Conci NULL
	SET @Tarjeta_Cant_Cuotas	= 0
	SET @Tarjeta_Imp_Cuota		= 0
	SET @Tarjeta_Crit_Cuota		= ''

	INSERT INTO dbo.Valores
	(Id_Valor,							Id_Valor_Origen,			Id_Trans,
	Id_Estado_Valor,				Id_Tipo_Val,					Valor_Nro,
	Descripcion,						Fecha_Val,						Fecha_Emision,
	Fecha_Acreditacion,			Fecha_Vence,				Id_Cliente,
	Id_Proveedor,					Id_Banco,						Id_Cta_Banco,
	Id_Mov_Caja,						Id_Moneda,					Importe,
	Id_Tarjeta,						Tarjeta_Nro,					Tarjeta_Vence,
	Tarjeta_Cod_Seguridad,		Tarjeta_Cod_Autoriz,		Cotizacion,
	Id_Periodo_Caja,				Propio,							Transferible,
	Cuit,									Tarjeta_Lote,					Id_Chequera,
	Renglon_Nro_Caja,				Flag_Conciliado,				Fecha_Conci,
	Tarjeta_Cant_Cuotas,			Tarjeta_Imp_Cuota,		Tarjeta_Crit_Cuota)
	VALUES
	(@Id_Valor,						@Id_Valor_Origen,			@pId_Trans,
	@Id_Estado_Valor,				@pId_Tipo_Val,				@pValor_Nro,
	@Descripcion,					@pFecha_Val,				@pFecha_Emision,
	@pFecha_Acreditacion,		@pFecha_Vence,			@Id_Cliente,
	@Id_Proveedor,					@Id_Banco,					@Id_Cta_Banco,
	@Id_Mov_Caja,					@Id_Moneda,					@pImporte,
	@pId_Tarjeta,					@pTarjeta_Nro,				@pTarjeta_Vence,
	@pTarjeta_Cod_Seguridad,@pTarjeta_Cod_Autoriz,	@Cotizacion,
	@Id_Periodo_Caja,				@Propio,						@Transferible,
	@Cuit,								@pTarjeta_Lote,			@Id_Chequera,
	@Renglon_Nro_Caja,			@Flag_Conciliado,			@Fecha_Conci,
	@Tarjeta_Cant_Cuotas,		@Tarjeta_Imp_Cuota,		@Tarjeta_Crit_Cuota)

	/*****************************************************************************/
	
	SET @Renglon_Nro = 1
	SET @Id_Motivo_Estado = 0
	SET @Descripcion = ''

	INSERT INTO dbo.Valores_Mov
	(Id_Valor,					Renglon_Nro,					Id_Trans,
	Id_Motivo_Estado,		Id_Estado_Valor,			Id_Periodo_Caja,
    Descripcion,				Fecha_Acreditacion,		Fecha,
    Renglon_Nro_Caja)
	VALUES
	(@Id_Valor,				@Renglon_Nro,				@pId_Trans,
	@Id_Motivo_Estado,	@Id_Estado_Valor,			@Id_Periodo_Caja,
    @Descripcion,			@pFecha_Acreditacion,	@Fecha,
    @Renglon_Nro_Caja)
	
	/*****************************************************************************/
	
	IF @pId_Tipo_Val = 'DB'
	BEGIN
		SET @Id_Mov_Cta_Banco		= (SELECT MAX(ISNULL(Id_Mov_Cta_Banco,0)) + 1 FROM bancos_ctas_mov)
		SET @Lote =	 (SELECT ISNULL(lote,'') FROM Cbtes where id_Trans=@pId_Trans)
		
		INSERT INTO bancos_ctas_mov 
			(Id_Mov_Cta_Banco,				Id_Trans,						Id_Cta_Banco,			Id_Tipo_Mov_Cta_Banco,	
			Importe,								Id_Est_Mov_Cta_Banco, 	Comprobante_Nro,		Conciliado, 
			Fecha_Acreditacion,				Descripcion,					Fecha_Mov)
		VALUES (@Id_Mov_Cta_Banco,	@pId_Trans,					@pId_Cta_banco,		9/*Deposito*/,	
			@pImporte,							1,									@Lote,						0,
			@pFecha_Acreditacion,			@Lote,							@pFecha_Emision)
	END


	
	/*****************************************************************************/

	IF @pFlagUsarTrans <> 0 
	BEGIN
		COMMIT
	END

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

	SET @rtaMsjStored		=	'{' +
											dbo.CF_Json_ParsearVariable('id_trans', @pId_Trans, 'INT')  + ',' +
											dbo.CF_Json_ParsearVariable('Id_Tipo_Val', @pId_Tipo_Val, 'CHAR(3)')  + ',' +
											dbo.CF_Json_ParsearVariable('Val_Nro', @pValor_Nro, 'INT')  + ',' +
											dbo.CF_Json_ParsearVariable('Id_Tarjeta',@pId_Tarjeta,'VARCHAR(25)')+ ',' +
											dbo.CF_Json_ParsearVariable('Importe', @pImporte, 'DECIMAL') +
											'}'

	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_Cbtes_Rec_Generar_Pago'
	END
	
END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo

	IF @pFlagUsarTrans <> 0 
	BEGIN
		ROLLBACK
	END

	
	RETURN 9999
END CATCH

RETURN 0 
