ALTER PROCEDURE [dbo].[CP_Cbtes_Pago_Online] 
	@Lote			VARCHAR(20),
	@Item			INT,
	@Id_Tipo_Val	CHAR(3),
	@Id_Tarjeta		VARCHAR(10),
	@TransPago		VARCHAR(15),
	@Nota			VARCHAR(100),
	@ImportePago	DECIMAL(12,2),
	@id_cliente		INT = NULL,
	@FECHA			DATETIME = NULL,
	@Importe		DECIMAL(12,2) = NULL

AS 
--SET NOCOUNT ON 

DECLARE @Mensaje			VARCHAR(100)
DECLARE @desc			VARCHAR(50)
DECLARE @Id_Tipo_Cbte	CHAR(4)
DECLARE @Nombre			VARCHAR(100)
DECLARE @NRO_CBTE		INT
DECLARE @Nro_Cbte_ND	INT
DECLARE @trans_rec		INT
DECLARE @trans_ND		INT
DECLARE @Observacion	VARCHAR(100)
DECLARE @Descrip_Cbte_CtaCte VARCHAR(50)
DECLARE @Id_Periodo_Caja INT
DECLARE @Id_Valor		INT
DECLARE @Id_Moneda		CHAR(3)
DECLARE @Descrip_Val	VARCHAR(100)

BEGIN TRY
	BEGIN TRAN

	SET @Id_Periodo_Caja	= CAST( dbo.CF_xParam('Periodo_Caja_VW') AS INT)
	SET @Id_Tipo_Cbte		= dbo.CF_xParam('Tipo_Cbte_VW_Recibo')
	SET @Id_Moneda			= dbo.CF_xParam('Moneda_Cbte_VW')
	SET @Descrip_Val		= dbo.CF_Valor_Descrip(0,@Id_Moneda,@Id_Tipo_Val,'',0,0,NULL,'','',0,'',NULL,0,0)



	SET @trans_rec = ISNULL((SELECT MAX(Id_trans) FROM Cbtes WHERE LOTE = 'CW:' + @LOTE AND Id_Estado_Cbte = 0),0)

	IF @trans_rec = 0
	BEGIN
		PRINT 'Agregando Recibo'
		SET @trans_ND = ISNULL((SELECT MAX(Id_trans) FROM Cbtes WHERE LOTE = 'VW:' + @LOTE AND Id_Estado_Cbte = 0),0)

		IF @trans_ND = 0 AND (@id_cliente IS NULL OR @FECHA IS NULL OR @Importe IS NULL)
		BEGIN
			SELECT	 1					AS ErrorNumber 
					,0					AS ErrorSeverity  
					,0					AS ErrorState 
					,0					AS ErrorProcedure  
					,0					AS ErrorLine		
					,'Sin cbte. factura debe especificar id_Cliente,fecha e importe total'			AS ErrorMessage
					,@trans_ND			AS Id_Trans_Fac
					,@trans_rec			AS Id_Trans_Rec
			ROLLBACK
			RETURN 1
		END


		SET @Nro_Cbte_ND =  (SELECT COMPROBANTE_NRO FROM Cbtes WHERE Id_Trans = @trans_ND)

		SET @desc = 'CW:' + @LOTE

		IF @id_cliente IS NULL
			SET @id_cliente = (SELECT id_cliente FROM Cbtes WHERE Id_Trans = @trans_ND)

		IF @FECHA IS NULL
			SET @FECHA = (SELECT Fecha FROM Cbtes WHERE Id_Trans = @trans_ND)

		IF @Importe IS NULL
			SET @Importe = (SELECT Imp_Total FROM Cbtes WHERE Id_Trans = @trans_ND)

		SET @Nombre = (SELECT rtrim(Razon_Social) FROM Clientes WHERE Id_Cliente = @Id_Cliente)

		SET @trans_rec = (SELECT max(id_trans) from transacciones ) + 1
		INSERT INTO TRANSACCIONES (id_trans,descripcion,fecha_mov) values (@trans_rec,@desc,GETDATE())

		SET @NRO_CBTE = (SELECT PROX_NRO from CBTES_TIPOS WHERE ID_TIPO_CBTE = @Id_Tipo_Cbte) 
		UPDATE CBTES_TIPOS SET PROX_NRO = PROX_NRO+1 WHERE ID_TIPO_CBTE = @Id_Tipo_Cbte

		INSERT INTO Cbtes	(Id_Cond_Vta,		Id_trans,		Id_Sucursal,
							Cbte_Grupo,			Fecha_Venc ,    id_cliente,
							id_estado_Cbte,		id_tipo_cbte,	comprobante_nro,
							fecha,				periodo_iva,	periodo,
							imp_total,			saldo,			imp_gravado,
							destinatario,		lote,			ID_MONEDA,
							Id_Cond_Pago,		Cotizacion)
					VALUES ('',					@trans_rec,		1,
							0,					@FECHA,			@id_cliente,
							0,					@Id_Tipo_cbte,	@NRO_CBTE,
							@FECHA,				@FECHA,			@FECHA, 
							@Importe,			0,				@Importe,
							@NOMBRE,			@desc,			@Id_Moneda ,
							10,					1)

		SET @Observacion =  dbo.CF_Descrip_Cbte(@trans_rec)
								
		PRINT 'Recibo: Se inserta Cbtes_Items'
		INSERT INTO Cbtes_Items (id_cliente,	descripcion_producto,	Cantidad,
								id_estado_Cbte,	Cantidad_Saldo,			Id_Trans,
								item,			Precio_Grav,			Imp_Gravado,
								Imp_Final,		Precio,					Lote,
								Fecha_QA,		Flag_QA,				Id_Producto,
								Imp_Exento,		Porc_Iva,				Bonif,
								Id_Usuario,     Observacion,            Precio_Exen,
								Id_Cond_Pago,   Bultos,                 Fecha_Venc,
								Costo,          Imp_Iva,			    calle, 
								columna,		fila, 					id_unidad_medida, 
								id_tarea,		id_pais,				cantidad_equiv, 
								costo_mo,		costo_gf,				flag_noimp_factura)							
						VALUES (@Id_Cliente,	'',						1,
								0				,0						,@Trans_rec,
								1,				0/*Precio_Grav*/,			@Importe,
								0/*Imp_Final*/,	0/*Precio*/,				'',
								NULL/*Fecha_QA*/, ''/*Flag_QA*/,			'', 
								0,				0,							0,
								0,				@Observacion,				0,
								0/*Id_Cond_Pago*/,0,						@Fecha, 
								0,                0,						'',
								'',				  '',						'',
								0,				  '',						0, 
								0,				  0,						0)
						
					

		SET @Descrip_Cbte_CtaCte = dbo.CF_Descrip_Cbte(@trans_rec)

		INSERT INTO CLIENTES_CTACTE  (Id_Trans,Nro_Cuota,Id_Empresa,Id_Cliente,Fecha,Fecha_Vence,Descripcion,Importe,Id_Estado_Cbte,Observacion,Id_Trans_Origen,Nro_Cuota_Origen,Id_Moneda,Saldo,Nro_FacCre)
				VALUES (@trans_rec,1,NULL,@id_cliente,@Fecha,@Fecha,@Descrip_Cbte_CtaCte,@Importe ,1,'',0,0,dbo.CF_xParam('Moneda_Cbte_VW'),0,0)

		/*Insert: CAJAS_MOV*/	
		PRINT 'Inserto en Cajas_Mov'
		INSERT INTO Cajas_Mov	(Id_Trans,			Renglon_Nro	,		Id_Estado_Mov_Caja, 
								Importe,			Descripcion,		Id_Periodo_Caja,
								Id_Tipo_Mov_Caja,	Fecha) 
						VALUES	(@trans_rec,		1,					0, 
								@Importe,			@Descrip_Cbte_CtaCte,@Id_Periodo_Caja,
								7,					@Fecha)
					

		/*FIN Insert: CAJAS_MOV*/

		/*---------------------------------------------------------------------------------*/

		/*Insert: CBTES_APLICA*/	
		PRINT 'Inserto en Cbtes Aplica'
		INSERT INTO Cbtes_Aplica	(Id_Trans,	Item	,	Id_Trans_D, 
									Item_D,		Cantidad,	Importe) 
							VALUES	(@trans_ND,	1,			@trans_rec, 
									1,				0,		@Importe)
						

		/*FIN Insert: CBTES_APLICA*/
	

	END 
	/*Insert: VALORES*/	
	SET @Id_Valor			= (SELECT MAX(id_valor) FROM valores ) + 1
	PRINT 'Inserto en Valores'
	/*CAMBIAR*/
	INSERT INTO Valores	(Id_Valor,			Id_Valor_Origen,	Id_Trans,
						Id_Estado_Valor,	Id_Tipo_Val,		Valor_Nro,
						Descripcion,		Id_Cliente,			Id_Proveedor,
						Id_Banco,			Id_Cta_Banco,		Id_Mov_Caja,
						Id_Moneda,			Id_Tarjeta,			Tarjeta_Nro,
						Cotizacion,			Id_Periodo_Caja,	Propio,
						Transferible,		Tarjeta_Lote,		Id_Chequera,
						Renglon_Nro_Caja,	Flag_Conciliado,	Tarjeta_Cant_Cuotas,
						Tarjeta_Imp_Cuota,	Tarjeta_Crit_Cuota, Importe,
						Tarjeta_Cod_Autoriz) 
			VALUES		(@Id_Valor/*Id_Valor*/,	0/*Id_Valor_Origen*/,		@trans_rec/*Id_Trans*/,
						3/*Id_Estado_Valor*/,	@Id_Tipo_Val /*Id_Tipo_Val*/,		0/*Valor_Nro*/,
						@Descrip_Val /*Descripcion*/,0/*Id_Cliente*/,			0/*Id_Proveedor*/,--aca y id_Valor
						0/*Id_Banco*/,			0/*Id_Cta_Banco*/,			0/*Id_Mov_Caja*/,
						@Id_Moneda /*Id_Moneda*/,		''/*Id_Tarjeta*/,			0/*Tarjeta_Nro*/,
						1/*Cotizacion*/,		@Id_Periodo_Caja/*Id_Periodo_Caja*/,0/*Propio*/,
						0/*Transferible*/,		0/*Tarjeta_Lote*/,			0/*Id_Chequera*/,
						1/*Renglon_Nro_Caja*/,	0/*Flag_Conciliado*/,		0/*Tarjeta_Cant_Cuotas*/,
						00/*Tarjeta_Imp_Cuota*/,0/*Tarjeta_Crit_Cuota*/,	@ImportePago,
						@TransPago)
	
	/*falta funcion que devuelva la descripcion del tipo de valor*/					

	/*FIN Insert: VALORES*/

	/*---------------------------------------------------------------------------------*/

	/*Insert: VALORES_MOV*/	
	PRINT 'Inserto en Valores_Mov'
	INSERT INTO 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/*Id_Valor*/,	1/*Renglon_Nro*/,	@trans_rec/*Id_Trans*/,
						0/*Id_Motivo_Estado*/,	3/*Id_Estado_Valor*/,@Id_Periodo_Caja/*Id_Periodo_Caja*/,
						''/*Descripcion*/,		NULL/*Fecha_Acreditacion*/,@Fecha/*Fecha*/,
						1/*Renglon_Nro_Caja*/)
					

	/*FIN Insert: VALORES_MOV*/
	COMMIT
	SELECT	 0					AS ErrorNumber 
			,0					AS ErrorSeverity  
			,0					AS ErrorState 
			,0					AS ErrorProcedure  
			,0					AS ErrorLine		
			,@Mensaje			AS ErrorMessage
			,@trans_ND			AS Id_Trans_Fac
			,@trans_rec			AS Id_Trans_Rec

END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo;  
	ROLLBACK
END CATCH;   
