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

CREATE PROCEDURE [dbo].[CP_Cbtes_OP_Varia_Generar] 
@Id_Cta_Banco	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_Periodo_Caja 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 'Fecha del Comprobante: '+CONVERT(VARCHAR(20), @Fecha, 101)+' Estado Comprobante: '+CONVERT(VARCHAR(3),@id_Estado_Cbte)

/*Declaracion Variables Locales*/
DECLARE @ID_Cliente             INT
DECLARE @ID_Proveedor           INT
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(100)
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)
		,@Id_Producto VARCHAR(14)
		,@Id_Valor INT
		,@Id_Tipo_Val VARCHAR(3)
		,@Descrip_Val VARCHAR(50)
		,@Nro_Cuenta VARCHAR(20) 


/*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 liquidacion promociones.'
IF @Id_Cta_Banco > 0
   BEGIN
     SET @Id_Cliente		     = (SELECT Id_cliente FROM Bancos_Ctas WHERE Id_Cta_Banco = @Id_Cta_Banco)
     SET @Destinatario           = 'TRANSFERENCIA ' + (SELECT Razon_Social FROM Clientes WHERE Id_Cliente = @Id_Cliente)
   END
/*FIN Asignacion Variables*/

SET @Signo = 1

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

/*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
	SET @Id_Estado_Cbte = 2

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

/*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*/,
							0/*Id_Proveedor*/,	0/*Signo*/,	@Id_Estado_Cbte,
							@Fecha,				0/*Porc_DescEspec*/,0/*Imp_Bonificacion*/,
							@ImporteXCant/*Imp_Gravado*/,	0/*@ImporteXCant*/,		0/*Imp_Iva*/,
							0/*Imp_Iva2*/,		0/*Imp_Percepcion_*/,0/*Imp_Percepcion_Iva*/,
							@ImporteXCant,	0/*Id_Usuario*/,	0/*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*/,
							0/*Porc_Iva*/,	0/*Porc_Iva2*/,0/*importe_neto*/,
							0/*Imp_DescEspecial*/,0/*Imp_DescFin*/)
							
IF (@@ERROR <> 0)
BEGIN
	ROLLBACK
	RETURN
END	 
/*FIN Insert: CBTES*/

/*---------------------------------------------------------------------------------*/
--Genero Item

    SET @Id_Producto =  (select Valor_String from xParametros where setDatos= 1 and idParametro ='C_Prod_Dep_Cta_Prom')
    SET @Descripcion_Producto = (SELECT DESCRIPCION_DETALLADA FROM PRODUCTOS WHERE ID_PRODUCTO = @Id_Producto)
--	EXEC dbo.SP_CbteItem_Agr   @Id_Producto,@Trans_Nueva,1,@ImporteXCant,@fecha,'',@Descripcion_Producto,0,0

/*---------------------------------------------------------------------------------*/
	
	 --Insert: CAJAS_MOV /	

	  	SET @Descrip_Cbte_CtaCte =  (Select Dbo.CF_Descrip_Cbte(@trans_nueva)) 

	   	INSERT INTO CAJAS_MOV (Id_Trans, Renglon_Nro, Id_Estado_Mov_Caja, Importe, Descripcion,        Id_Periodo_Caja,Id_Tipo_Mov_Caja, Fecha)
		         VALUES   	  (@trans_nueva,     1,           2,        @Importe*-1,@Descrip_Cbte_CtaCte,@Id_Periodo_Caja,   6,       @Fecha)	

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

	 --Insert: CAJAS_MOV_CONCEPTOS /	
		INSERT INTO Cajas_Mov_Conceptos (Id_Trans, Id_Concepto, Item, Id_Estado_Concepto, Importe, Id_Periodo_Caja)
		       VALUES	(@trans_nueva,80,1,0,@Importe*-1,@Id_Periodo_Caja)	

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

  -- insert BANCOS_CTAS_MOV
        DECLARE @ID_MOV_CTA_BANCO INT,
		        @ID_CTA_BANCO_ORIGEN INT

		SET @ID_MOV_CTA_BANCO = (SELECT MAX(ID_MOV_CTA_BANCO) FROM BANCOS_CTAS_MOV)+1
	--	SET @ID_CTA_BANCO_ORIGEN = (SELECT Id_Cta_Banco_Acumuladora FROM BANCOS_CTAS WHERE ID_CTA_BANCO = @ID_CTA_BANCO)
        SET @ID_CTA_BANCO_ORIGEN = (select Valor_Integer from xParametros where setDatos= 1 and idParametro ='Cta_Bco_OP_Prom')
	   	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,@trans_nueva, @ID_CTA_BANCO_ORIGEN,1, @Importe,1,0,0,@Fecha,@Descrip_Cbte_CtaCte,@Fecha)	

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

	SET @Id_Valor			= (SELECT MAX(id_valor) FROM valores ) + 1
	SET @Id_Tipo_Val  =  (select Valor_String from xParametros where setDatos= 1 and idParametro ='T_Valor_OP_Prom')
	SET @Id_Cta_Banco =  (select Valor_Integer from xParametros where setDatos= 1 and idParametro ='Cta_Bco_OP_Prom')
	Set @Nro_cuenta   = (select Cuenta_Nro from Bancos_Ctas  where Id_cta_Banco = @Id_Cta_Banco)  
    SET @Descrip_Val  = '$ DEP/DEB BANCARIO Cuenta:' + LTRIM(@Nro_cuenta) +' Fecha: ' +  CONVERT(VARCHAR(10), @FECHA, 103)

	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,Fecha_Acreditacion) 
			VALUES		(@Id_Valor/*Id_Valor*/,	0/*Id_Valor_Origen*/,		@trans_nueva/*Id_Trans*/,
						2/*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*/,	@Id_Cta_Banco,			0/*Id_Mov_Caja*/,
						'PES' /*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*/,	@Importe,
						'',@Fecha)
	

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

	---------------------------------------
  -- insert BANCOS_CTAS_MOV

	/*---------------------------------------------------------------------------------*/
	--Asiento
	  
	    SET @Alias_D = (SELECT Id_Cta_Contable FROM Bancos_Ctas WHERE ID_Cta_Banco = @ID_Cta_Banco)
		SET @Alias_H = (SELECT Id_Alias_Cta_Cont FROM Productos WHERE ID_Producto = @ID_Producto)
		SET @ID_Centro_Costo = ''

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

		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,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,					'',
											@Alias_D,0,	@ID_Centro_Costo,2)


		IF (@@ERROR <> 0)
		BEGIN
				ROLLBACK
				RETURN
		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*/


