IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'CPJ_Cbtes_Rec_Generar_Pago') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE 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 parametro 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
DECLARE @pRtaMsjStored			TINYINT

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)
SET @pRtaMsjStored				= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'RtaMsjStored')), 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 'Parametros: '
		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') +
									'}'
			
		IF (@pRtaMsjStored = 0)
		BEGIN
			SELECT	 0					AS ErrorNumber 
					,0					AS ErrorSeverity  
					,0					AS ErrorState 
					,0					AS ErrorProcedure  
					,0					AS ErrorLine		
					,@rtaMsjStored		AS ErrorMessage
		END
	/**************************************************************************************************/					

	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

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

	IF @pId_Tipo_Val IN ('TAR','CH3','CHP')         /*14/4/22  Gabriel*/
		SET @Id_Estado_Valor	= 3
	ELSE	
		SET @Id_Estado_Valor	= 4 /*No hay en carga*/
		/*entraba mal los estados*/

	SET @Id_Valor				= (SELECT MAX(ISNULL(Id_Valor,0)) + 1 FROM Valores)
	SET @Id_Valor_Origen		= 0
	
	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') +
								'}'
	IF (@pRtaMsjStored = 0)
	BEGIN
	SELECT	 0						AS ErrorNumber 
			,0						AS ErrorSeverity  
			,0						AS ErrorState 
			,0						AS ErrorProcedure  
			,0						AS ErrorLine		
			,@rtaMsjStored			AS ErrorMessage
	END

	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 