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

CREATE PROCEDURE [dbo].[CP_Cbtes_Fac_Generar] 
@Lote		VARCHAR(20), 
@Fecha		CHAR(8),
@FechaVence		CHAR(8),
@Id_Cliente INT,
@Id_Tipo_Cbte	CHAR(4),
@Id_Cond_Pago	INT,
@Id_Moneda		CHAR(3),
@Cotizacion	 DECIMAL(12,4),
@Importe	DECIMAL(12,2)
AS 

DECLARE @Nombre			VARCHAR(100)
DECLARE @NRO_CBTE		INT
DECLARE @trans_nueva	INT
DECLARE @Mensaje		VARCHAR(100)
DECLARE @Id_Sucursal	INT
DECLARE @Cbte_Grupo		INT


BEGIN TRY
	BEGIN TRAN

	--SET @Id_Tipo_Cbte = dbo.CF_xParam('Tipo_Cbte_VW_Factura')
	--SET @Id_Moneda    = dbo.CF_xParam('Moneda_Cbte_VW')



	--SET @desc = 'VW:' + @LOTE
	SET @Nombre = (SELECT rtrim(Razon_Social) FROM Clientes WHERE Id_Cliente = @Id_Cliente)

	SET @trans_nueva = (SELECT max(id_trans) from transacciones ) + 1

	/*===================================================================*/
	INSERT INTO Transacciones	(id_trans,		descripcion,	fecha_mov) 
					VALUES		(@trans_nueva,	@LOTE,			GETDATE())

	/*===================================================================*/
	SELECT	@NRO_CBTE = Prox_Nro 
			,@Id_Sucursal = Id_Sucursal 
			,@Cbte_Grupo = Cbte_Grupo
			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_nueva,	@Id_Sucursal,
						@Cbte_Grupo,		@FechaVence,	@id_cliente,
						0,					@Id_Tipo_cbte,	@NRO_CBTE,
						@FECHA,				@FECHA,			@FECHA,
						@Importe,			0,				@Importe,
						@NOMBRE,			@LOTE,			@Id_Moneda,
						@Id_Cond_Pago,		@Cotizacion)

	/*===================================================================*/
	IF @Id_Cond_Pago NOT IN(0,1)
		BEGIN
		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_nueva,	1,				NULL,
									@id_cliente,	@Fecha,			@Fecha,
									dbo.CF_Descrip_Cbte(@trans_nueva),@Importe ,1,
									'',				0,				0,
									@Id_Moneda,		@Importe,				0)


		END 
	COMMIT

	SELECT	 0				AS ErrorNumber 
			,0				AS ErrorSeverity  
			,0				AS ErrorState 
			,0				AS ErrorProcedure  
			,@trans_nueva	AS ErrorLine		
			,@Mensaje		AS ErrorMessage
			,@trans_nueva	AS Id_Trans

END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo;  
	ROLLBACK
END CATCH;   
