IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'[dbo].[CP_Cbtes_Cpra_Generar_Fin]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE [dbo].[CP_Cbtes_Cpra_Generar_Fin] 
END
GO
CREATE PROCEDURE [dbo].[CP_Cbtes_Cpra_Generar_Fin] 
@Id_Proveedor	INT,
@Destinatario	VARCHAR(100), 
@Importe		DECIMAL(12,2), 
@Id_Sucursal	SMALLINT,
@Fecha			DATETIME, 
@Id_Tipo_Cbte	CHAR(4),
@Lote			CHAR(14),
@Id_Estado_Cbte INT,
@Id_Cond_Pago	SMALLINT,
@Comprobante_Nro INT,
@Id_Trans Int

AS 

SET NOCOUNT ON 
BEGIN TRAN

PRINT 'Genero Comprobante Tipo: '+@Id_Tipo_Cbte+' para el Proveedor: '+CONVERT(VARCHAR(20),@Id_Proveedor)
PRINT 'Fecha del Comprobante: '+CONVERT(VARCHAR(20), @Fecha, 101)+' Estado Comprobante: '+CONVERT(VARCHAR(3),@id_Estado_Cbte)

/*Declaracion Variables Locales*/
DECLARE @Trans_Nueva			INT
DECLARE @User					SMALLINT
DECLARE @Desc					VARCHAR(50)
DECLARE @Nombre					VARCHAR(100)
DECLARE @Descripcion_Producto	VARCHAR(100)
DECLARE @Cantidad				DECIMAL(12,2)
DECLARE @Fecha_Mov				DATETIME
DECLARE @Descrip_Cbte_CtaCte	VARCHAR(100)
DECLARE @Signo					INT
DECLARE @ImporteXCant			DECIMAL(12,2)
DECLARE	@Observacion			VARCHAR(30)
DECLARE @Compromete_Pagos		SMALLINT
DECLARE @Compromete_Compras		SMALLINT
DECLARE @Id_Iva					CHAR(3)
Declare  @Alias_D SmallInt
		,@Alias_H SmallInt
		,@ID_Cta_Debe  Int
		,@ID_Cta_Haber Int
		,@ID_Centro_Costo CHAR(10)
		,@IMP_GRAVADO DECIMAL(12,2)
        ,@IMP_IVA DECIMAL(12,2)

/*FIN Declaracion Variables Locales*/

/*Asignacion Variables*/
SET @Trans_Nueva			= @Id_Trans
SET @Desc					= @Lote
SET @Observacion			= 'Comprobante Generado desde B.D.'
SET @Compromete_Pagos		= ISNULL((SELECT Compromete_Pagos FROM Cbtes_Tipos WHERE Id_Tipo_Cbte=@Id_Tipo_Cbte), 0)
SET @Compromete_Compras		= ISNULL((SELECT Compromete_Compras FROM Cbtes_Tipos WHERE Id_Tipo_Cbte=@Id_Tipo_Cbte), 0)
SET	@Id_Iva					= ISNULL((SELECT Id_Iva FROM Proveedores WHERE Id_Proveedor = @Id_Proveedor), 'I')
/*FIN Asignacion Variables*/

SET @Signo = 1

IF((@Compromete_Pagos <> 0) OR (@Compromete_Compras = -1))
BEGIN
	SET @Signo = -1
END

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

/*Update: CBTES*/
SET @ImporteXCant = (@Importe)

PRINT 'Modifico Cbtes'
               
               UPDATE Cbtes SET 
                      Imp_Exento = 0, Imp_Gravado = 0,  Imp_Gravado2 = 0,  Imp_Gravado3 = 0,  Imp_NoGravado = 0,
					  Imp_iva = 0,  Imp_iva2 = 0, Imp_iva3 = 0,Imp_neto = 0, Saldo = 0, Imp_Total = 0  
				      WHERE ID_TRANS = @ID_TRANS  
               
               UPDATE Cbtes SET 
                      Imp_Gravado = ISNULL((SELECT SUM(Imp_Gravado) FROM Cbtes_Items  WHERE ID_TRANS = @ID_TRANS and isnull(Porc_Iva,21) = 21),0) 
                      WHERE ID_TRANS = @ID_TRANS  
               UPDATE Cbtes SET 
                      Imp_Iva = Imp_Gravado * Porc_Iva/100 
                      WHERE ID_TRANS = @ID_TRANS  

               UPDATE Cbtes SET 
                      Imp_Gravado2 = ISNULL((SELECT SUM(Imp_Gravado) FROM Cbtes_Items  WHERE ID_TRANS = @ID_TRANS and isnull(Porc_Iva,21) = 10.5),0) 
                      WHERE ID_TRANS = @ID_TRANS  
               UPDATE Cbtes SET 
                      Imp_Iva2 = Imp_Gravado2 * Porc_Iva2/100 
                      WHERE ID_TRANS = @ID_TRANS  

               UPDATE Cbtes SET 
                      Imp_Gravado3 = ISNULL((SELECT SUM(Imp_Gravado) FROM Cbtes_Items  WHERE ID_TRANS = @ID_TRANS and isnull(Porc_Iva,21) = 0),0) 
                      WHERE ID_TRANS = @ID_TRANS  
               UPDATE Cbtes SET 
                      Imp_Iva3 = Imp_Gravado3 * Porc_Iva3/100 
                      WHERE ID_TRANS = @ID_TRANS  

               UPDATE Cbtes SET 
                      Imp_TOTAL = Imp_Gravado + Imp_Gravado2 + Imp_Gravado3 + Imp_Iva + Imp_Iva2 + Imp_Iva3,
                      Saldo = Imp_Gravado + Imp_Gravado2 + Imp_Gravado3 + Imp_Iva + Imp_Iva2 + Imp_Iva3
                      WHERE ID_TRANS = @ID_TRANS  

               SET @Importe = (SELECT Imp_TOTAL FROM Cbtes  WHERE ID_TRANS = @ID_TRANS) 
		       SET @IMP_GRAVADO = (SELECT Imp_Gravado + Imp_Gravado2 + Imp_Gravado3 FROM Cbtes  WHERE ID_TRANS = @ID_TRANS) 
               SET @IMP_IVA = (SELECT Imp_Iva + Imp_Iva2 + Imp_Iva3 FROM Cbtes  WHERE ID_TRANS = @ID_TRANS) 
				
IF (@@ERROR <> 0)
BEGIN
	ROLLBACK
	RETURN
END	 
/*FIN Insert: CBTES*/

/*---------------------------------------------------------------------------------*/
	
	/*Insert: Clientes_CtaCte*/	
	IF @Id_Cond_Pago <> 1
	BEGIN	
		SET @Descrip_Cbte_CtaCte = (
									ISNULL((SELECT Descrip_Corta FROM Cbtes_Tipos WHERE Id_Tipo_Cbte = @Id_Tipo_Cbte), '   ')+
									'  ' +
									ISNULL((SELECT Letra FROM Cbtes_Tipos WHERE Id_Tipo_Cbte = @Id_Tipo_Cbte),'A') +
									' ' +
									RIGHT('0000' + LTRIM(RTRIM(@Id_Sucursal)),4) +
									'-' +
									RIGHT('00000000' + LTRIM(RTRIM(@Comprobante_Nro)),8)
									)
		PRINT 'Inserto en Proveedores_CtaCte Comprobante: ' + @Descrip_Cbte_CtaCte
								
		INSERT INTO Proveedores_CtaCte	(Id_Trans,			Nro_Cuota,				Id_Empresa,
										Id_Proveedor,		Fecha,				Fecha_Vence,
										Descripcion,		Importe,				Id_Estado_Cbte,
										Observacion,		Id_Trans_Origen,		Nro_Cuota_Origen,
										Id_Moneda,			Saldo)
		VALUES							(@trans_nueva,		1,						NULL,
										@Id_Proveedor,		@Fecha,					@Fecha,
										@Descrip_Cbte_CtaCte,@Importe,	@Id_Estado_Cbte,
										@Observacion,		0,						0,
										'PES',				@Importe)

		IF (@@ERROR <> 0)
		BEGIN
			ROLLBACK
			RETURN
		END	 
	END
	/*FIN Insert: Clientes_CtaCte*/
	-------------------------------------
	 --Insert: CBTES_CONCEPTOS/	
        DECLARE @Id_Concepto INT
		SET @Id_Concepto = (SELECT ISNULL(ID_CONCEPTO,0) FROM PROVEEDORES WHERE ID_PROVEEDOR = @Id_Proveedor)
		IF @Id_Concepto > 0
		   BEGIN
	        	INSERT INTO CBTES_CONCEPTOS (Id_Concepto, Id_Trans, Item, Importe, Observacion)
		        VALUES						(@Id_Concepto,@trans_nueva,	1,@Importe,'')	
           END
		IF (@@ERROR <> 0)
		BEGIN
			ROLLBACK
			RETURN
		END	 

	
	/*---------------------------------------------------------------------------------*/
	--Asiento
	    DECLARE @Alias_D_IVA INT, @ID_Cta_Debe_IVA INT
	    
	    SET @Alias_D = (SELECT Id_Cta_Contable_D FROM PROVEEDORES WHERE ID_PROVEEDOR = @ID_PROVEEDOR)
		SET @Alias_H = (SELECT Id_Cta_Contable_H FROM PROVEEDORES WHERE ID_PROVEEDOR = @ID_PROVEEDOR)
		SET @Alias_D_IVA =  (select Valor_INTEGER from xParametros where setDatos= 1 and idParametro ='Cta_Iva_Cre_Loc')

		SET @ID_Centro_Costo = (SELECT ID_Centro_Costo FROM PROVEEDORES WHERE ID_PROVEEDOR = @ID_PROVEEDOR)

		SET @ID_Cta_Debe      = (SELECT dbo.SF_Cta_Contable(@Alias_D, @Fecha))
		SET @ID_Cta_Debe_IVA  = (SELECT dbo.SF_Cta_Contable(@Alias_D_IVA, @Fecha))
		SET @ID_Cta_Haber     = (SELECT dbo.SF_Cta_Contable(@Alias_H, @Fecha))

	    
        IF @SIGNO > 0
		BEGIN					
			INSERT INTO Cbtes_Ctas_Contables (Id_Trans,		  Id_Cta_Contable,	   	Fecha,
												  Debe,             Haber,        Observacion,
												 Alias,            Id_Asiento,    Id_Centro_Costo, Item)

			VALUES					 	   (@trans_nueva,		@ID_Cta_Debe,		@Fecha,
											@IMP_GRAVADO,		0,					'',
											@Alias_D,0,	@ID_Centro_Costo,1)


			IF (@@ERROR <> 0)
			BEGIN
				ROLLBACK
				RETURN
			END	 
			INSERT INTO Cbtes_Ctas_Contables (Id_Trans,		  Id_Cta_Contable,	   	Fecha,
												  Debe,             Haber,        Observacion,
												 Alias,            Id_Asiento,    Id_Centro_Costo, Item)

			VALUES					 	   (@trans_nueva,		@ID_Cta_Debe_IVA,		@Fecha,
											@IMP_IVA,		0,					'',
											@Alias_D_IVA,0,	@ID_Centro_Costo,2)


			IF (@@ERROR <> 0)
			BEGIN
				ROLLBACK
				RETURN
			END	 

			INSERT INTO Cbtes_Ctas_Contables (Id_Trans,		  Id_Cta_Contable,	   	Fecha,
												  Debe,             Haber,        Observacion,
												 Alias,            Id_Asiento,    Id_Centro_Costo, Item)

			VALUES					 	   (@trans_nueva,		@ID_Cta_Haber,		@Fecha,
											0,		@Importe,					'',
											@Alias_H,0,	@ID_Centro_Costo,3)


			IF (@@ERROR <> 0)
			BEGIN
				ROLLBACK
				RETURN
			END	
		 END	 
       ELSE
		 BEGIN
		    DECLARE @IMPORTE_NC DECIMAL(12,2)
			SET @IMPORTE_NC = @IMPORTE*-1
			INSERT INTO Cbtes_Ctas_Contables (Id_Trans,		  Id_Cta_Contable,	   	Fecha,
												  Debe,             Haber,        Observacion,
												 Alias,            Id_Asiento,    Id_Centro_Costo, Item)

			VALUES					 	   (@trans_nueva,		@ID_Cta_Haber,		@Fecha,
											@Importe_NC,		0,					'',
											@Alias_H,0,	@ID_Centro_Costo,1)


			IF (@@ERROR <> 0)
			BEGIN
				ROLLBACK
				RETURN
			END	 

			INSERT INTO Cbtes_Ctas_Contables (Id_Trans,		  Id_Cta_Contable,	   	Fecha,
												  Debe,             Haber,        Observacion,
												 Alias,            Id_Asiento,    Id_Centro_Costo, Item)

			VALUES					 	   (@trans_nueva,		@ID_Cta_DEBE,		@Fecha,
											0,		@Importe_NC,					'',
											@Alias_D,0,	@ID_Centro_Costo,2)


			IF (@@ERROR <> 0)
			BEGIN
				ROLLBACK
				RETURN
			END	
	     END
	--Cbtes_Items



set @Id_trans = @trans_nueva
 
IF (@@ERROR = 0)
BEGIN
	COMMIT TRAN
	--SELECT @trans_nueva
END
ELSE
BEGIN
	ROLLBACK
	--SELECT 0
END


/*FIN Actualizo el Proximo Numero de Comprobante*/


