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



CREATE PROCEDURE [dbo].[CP_Cbtes_Cpra_Generar] 
@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 OUTPUT

AS 
/*-----------------------------------------------------
 * OJO!: Buscar la palabra CAMBIAR en estedocumento y 
 *		 adaptar las variables al cliente.
 ------------------------------------------------------*/
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)

/*FIN Declaracion Variables Locales*/

/*Asignacion Variables*/
SET @Trans_Nueva			= ISNULL((SELECT (MAX(id_trans)+1)	FROM Transacciones),1)
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

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

/*Insert: TRANSACCIONES*/
PRINT 'Inserto la Transaccion Nro: ' + CONVERT(VARCHAR(20), @Trans_Nueva)

INSERT INTO Transacciones	(Id_Trans,		Descripcion,	Fecha_Mov) 
VALUES						(@Trans_Nueva,	@Desc,			GETDATE())

IF (@@ERROR <> 0)
BEGIN
	ROLLBACK
	RETURN
END	 
/*FIN Insert: TRANSACCIONES*/
-- Busco nro de Cbte y actualizo

	SET @Comprobante_Nro    = (SELECT PROX_NRO from CBTES_TIPOS WHERE ID_TIPO_CBTE = @Id_Tipo_Cbte)
	SET @Id_Sucursal = (SELECT Sucursal_Nro from Empresas_Suc E, Cbtes_Tipos T WHERE T.ID_TIPO_CBTE = @Id_Tipo_Cbte And T.Id_Sucursal = E.Id_Sucursal)
	UPDATE Cbtes_Tipos SET PROX_NRO = @Comprobante_Nro+1 WHERE ID_TIPO_CBTE = @Id_Tipo_Cbte

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

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

PRINT 'Inserto en Cbtes'
INSERT INTO Cbtes			(Id_Trans,			Id_Sucursal,		Id_Tipo_Cbte,
							Cbte_Grupo,			Comprobante_Nro,	Id_Cliente,
							Id_Proveedor,		Signo,				Id_Estado_Cbte,
							Fecha,				Porc_DescEspecial,	Imp_Bonificacion,
							Imp_Gravado,		Imp_Exento,			Imp_IVA,
							Imp_IVA2,			Imp_Percepcion_IB,	Imp_Percepcion_Iva,
							Imp_Total,			Id_Usuario,			Porc_Iva3,
							Imp_Gravado2,		Imp_Gravado3,		Imp_NoGravado,
							Imp_IVA3,			Imp_Percep,			Saldo,
							Periodo_Iva,		Periodo,			Fecha_Venc,
							Observacion,		Id_Cond_Pago,		Cant_Cuotas,
							Cantidad,			Id_Lista,			Id_Moneda,
							Cotizacion,			Destinatario,		Id_Iva,
							Saldo_Iva_Recup,	Lote,				Id_Asiento,
							Id_Valor,			Cai,				Cantidad_Saldo,
							Saldo_Anterior,		Porc_DescFin,		Porc_Bonificacion,
							Porc_Iva,			Porc_Iva2,			Imp_Neto,
							Imp_DescEspecial,	Imp_DescFin)
VALUES						(@Trans_Nueva,		@Id_Sucursal,		@Id_Tipo_cbte,
							0/*Cbte_Grupo*/,	@Comprobante_Nro,	0/*Id_Cliente*/,
							@Id_Proveedor/*Id_Proveedor*/,	0/*Signo*/,	@Id_Estado_Cbte,
							@Fecha,				0/*Porc_DescEspec*/,0/*Imp_Bonificacion*/,
							0/*Imp_Gravado*/,	@ImporteXCant,		0/*Imp_Iva*/,
							0/*Imp_Iva2*/,		0/*Imp_Percepcion_*/,0/*Imp_Percepcion_Iva*/,
							@ImporteXCant,		0/*Id_Usuario*/,	27/*Porc_Iva3*/,
							0/*Imp_Gravado2*/,	0/*Imp_Gravado3*/,	0/*Imp_NoGravado*/,
							0/*Imp_IVA3*/,		0/*Imp_Percep*/,	@ImporteXCant,
							@Fecha,				@Fecha,				@Fecha,
							@Observacion,		@Id_Cond_Pago,		1/*Cant_Cuotas*/,
							0/*Cantidad*/,		0/*Id_Lista*/,		'PES'/*Id_Moneda*/,
							1/*Cotizacion*/,	@Destinatario,		@Id_Iva/*Id_Iva*/,
							0/*Saldo_Iva_Recu*/,@Lote,				0/*Id_Asiento*/,
							0/*Id_Valor*/,		0/*Cai*/,			0/*Cantidad_Saldo*/,
							0/*Saldo_Anterior*/,0/*Porc_DescFin*/,	0/*Porc_Bonificacion*/,
							21/*Porc_Iva*/,		'10.5'/*Porc_Iva2*/,@ImporteXCant,
							0/*Imp_DescEspecial*/,0/*Imp_DescFin*/)
							
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
	  
	    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 @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_Haber = (SELECT dbo.SF_Cta_Contable(@Alias_H, @Fecha))
	    
        IF @Importe > 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,
											@Importe,		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_Haber,		@Fecha,
											0,		@Importe,					'',
											@Alias_H,0,	@ID_Centro_Costo,2)


			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*/


