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



CREATE PROCEDURE [dbo].[SP_InscDirec_Online]  @Id_Cliente INT, @Id_Actividad CHAR(14) , @Id_Estado_Cbte SMALLINT, @Accion CHAR(1),@Id_Trans_Anula INT,@ObsOrig VARCHAR(5000) = NULL
AS


/*Variables */
DECLARE @id_trans 			INT;
DECLARE @fecha 				DATETIME;
DECLARE @Comprobante_nro 	INT;
DECLARE @id_sucursal 		SMALLINT;
DECLARE @id_iva 			CHAR(3);
DECLARE @cuit 				VARCHAR(19);
DECLARE @id_moneda 			CHAR(3);
DECLARE @Id_Familia         INT;
DECLARE @descripcion		CHAR(100);
DECLARE @id_cond_pago		SMALLINT;		
DECLARE @id_localidad 		SMALLINT;
DECLARE @id_provincia 		CHAR(3);
DECLARE @Id_Tipo_Cbte       CHAR(4);
DECLARE @Destinatario		VARCHAR(100);
DECLARE @imp_neto 			DECIMAL(12,2);
DECLARE @imp_gravado 		DECIMAL(12,2);
DECLARE @imp_exento 		DECIMAL(12,2);
DECLARE @imp_iva 			DECIMAL(12,2);
DECLARE @imp_iva2 			DECIMAL(12,2);
DECLARE @imp_iva3 			DECIMAL(12,2);
DECLARE @imp_percepcion_iva DECIMAL(12,2);
DECLARE @imp_percepcion_IB 	DECIMAL(12,2);
DECLARE @imp_percep 		DECIMAL(12,2);
DECLARE @imp_total  		DECIMAL(12,2);
DECLARE @lote				VARCHAR(20);
DECLARE @Id_Cond_Vta	    CHAR(10);	
DECLARE @Obs				VARCHAR(5000);
DECLARE @Descripcion_Producto VARCHAR(100);
DECLARE @cant				INT,@id_lista SMALLINT;
DECLARE @Email				VARCHAR(2000)
DECLARE @Fecha_Venc			DATE , @Fecha_QA DATE;
DECLARE @Id_Cliente_Cbte	INT
DECLARE @Id_Acti_Cbte		CHAR(14)
DECLARE @Mensaje			VARCHAR(100)
DECLARE @Id_Centro_Costo    CHAR(10)

/*FIN Variables */




IF @Accion NOT IN ('A','B')
BEGIN
	SELECT 1,0,0,0,'Error: Acciones Permitidas A (Alta) B (Baja)'
	RETURN
END
   

IF @Accion ='B' 
BEGIN
	IF ISNULL(@Id_Trans_Anula,0) = 0
	BEGIN
		SELECT 2,0,0,0,'Error: Acciones B (Baja) debe enviar el id_trans'
		RETURN
    END

    SELECT @Id_Acti_Cbte = Id_Producto , @Id_Cliente_Cbte = Id_Cliente , @Obs = Observacion FROM Cbtes_Items WHERE Id_Trans = @Id_Trans_Anula AND Item = 1
	SET @Obs = (SELECT Observacion FROM Cbtes WHERE Id_Trans = @Id_Trans_Anula)

	IF @Id_Acti_Cbte <> @Id_Actividad
	BEGIN
	    SELECT 3,0,0,0,'Error: Acciones B (Baja) difiere la actividad '+ @Id_Acti_Cbte
	    RETURN
    END

	IF @Id_Cliente_Cbte <> @Id_Cliente
	BEGIN
	    SELECT 4,0,0,0,'Error: Acciones B (Baja) difiere cliente '+ CAST(@Id_Cliente_Cbte AS VARCHAR(20))
	    RETURN
    END
END
   




BEGIN TRY
BEGIN TRAN



IF @Accion ='B' AND ISNULL(@Id_Trans_Anula,0) <> 0
BEGIN
    SET @Obs = RTRIM(LTRIM(ISNULL(@Obs,''))) + CHAR(13) + CHAR(10) + CAST(GETDATE() as VARCHAR(50)) +' Anulado' 
    UPDATE Cbtes SET Id_Estado_Cbte = 3 , Observacion = @Obs WHERE Id_Trans = @Id_Trans_Anula
    UPDATE Cbtes_Items SET Id_Estado_Cbte = 3 WHERE Id_Trans = @Id_Trans_Anula
	SET @Mensaje = 'Trans. Anulada ' + CAST(@Id_Trans_Anula as VARCHAR(14))
END
ELSE
BEGIN

	/*MODIFICAR_B Configuracion de estados por defecto*/
	SET @id_moneda = 'PES' ;
	SET @Id_Iva=  (SELECT Id_Iva FROM clientes WHERE id_cliente = @Id_Cliente);
	SET @id_provincia = '' 
	SET @id_localidad = 0
	SET @id_estado_cbte = @Id_Estado_Cbte; 
	/*FIN MODIFICAR_B Configuracion de estados por defecto*/

	SET @Id_Familia = (SELECT Id_Familia FROM Productos WHERE id_producto = @Id_Actividad)
	SET @Fecha_QA = ISNULL((SELECT Flag_Periodo_Desde FROM Productos WHERE id_producto = @Id_Actividad),getdate())
	SET @Fecha_Venc = ISNULL((SELECT Flag_Periodo_Hasta FROM Productos WHERE id_producto = @Id_Actividad),GETDATE())

	SET @Id_Tipo_Cbte = (CASE @Id_Familia WHEN 2 THEN 'IWMK' --Agregado para el cod 2 MARKETING 
										  WHEN 3 THEN 'INFO'
										  WHEN 4 THEN 'INEN'
										  WHEN 5 THEN 'ININ'
										  WHEN 6 THEN 'INCE'
										  WHEN 7 THEN 'INPY' 
										  WHEN 8 THEN 'INJO'
										  WHEN 14 THEN 'NPPA'
										  --WHEN 96 THEN 'INFO'   --acred instant. 53 Coloquio
										  --WHEN 96 THEN 'ININ'   --acred instant. Humano
										  WHEN 96 THEN 'MKSC'   --acred instant. COCKTAIL Y BRINDIS 2017
										  ELSE 'INPY' -- Cod 7
										  END)


	SET @fecha = GETDATE()
	SET @id_sucursal = ISNULL((SELECT Id_Sucursal FROM Cbtes_Tipos WHERE Id_Tipo_Cbte = @id_tipo_cbte),0);
	SET @cant = 1
	SET @comprobante_nro = ISNULL((SELECT (MAX(comprobante_nro)+1) FROM Cbtes WHERE Id_Tipo_Cbte = @id_tipo_cbte),1);
	SET @imp_total = 0
	SET @id_lista = (SELECT Id_Lista_Precio FROM Clientes WHERE id_cliente=@id_cliente);
	SET @Email = (SELECT Email FROM Clientes WHERE id_cliente=@id_cliente);




	/*Busco proxima transacción*/
	SET @id_trans = (SELECT (MAX(Id_trans)+1) FROM Transacciones);
	/*FIN Busco proxima transacción*/

	/*Configuro otras Variables*/
	SET @descripcion = (@id_tipo_cbte+' '+CONVERT(VARCHAR(10), @id_sucursal)+'-'+CONVERT(VARCHAR(10), @comprobante_nro));
	SET @id_cond_pago = (SELECT id_cond_pago FROM Clientes WHERE id_cliente=@id_cliente);
	SET @Destinatario = (SELECT razon_social FROM Clientes WHERE id_cliente=@id_cliente);
	SET @Descripcion_Producto = (SELECT Descripcion_Resumida FROM Productos WHERE Id_Producto=@Id_Actividad)
	SET @cuit = (SELECT cuit FROM clientes WHERE id_cliente=@id_cliente);
	SET @imp_neto = 0;
	SET @imp_gravado = @imp_total;
	SET @imp_exento = 0;
	SET @imp_iva = 0;
	SET @imp_iva2 = 0;
	SET @imp_iva3 = 0;
	SET @imp_percepcion_iva = 0;
	SET @imp_percepcion_IB = 0;
	SET @imp_percep = 0;
	SET @Obs = @ObsOrig
	SET @lote = ''
	SET @Id_Centro_Costo = (SELECT Id_Centro_Costo FROM Productos WHERE Id_Producto = @Id_Actividad)

	IF ISNULL(@Id_Centro_Costo,'') = ''
	BEGIN
       SET @Id_Centro_Costo = @Id_Actividad
    END


	/*FIN Configuro otras Variables*/


	/*MODIFICAR_E COMIENZO INSERTAR*/
	/*Inserto Tabla: Transacciones*/

	INSERT INTO Transacciones
	(Id_Trans, Descripcion, Fecha_Mov,
	Id_Usuario)
	VALUES
	(@id_trans, @descripcion, @fecha,
	0/*Usuario*/)
	/*FIN Inserto Tabla: Transacciones*/
	
	/*Inserto Tabla: CBTES*/
	INSERT INTO Cbtes
	(id_trans, id_tipo_cbte, id_estado_cbte,
	fecha, Id_Sucursal, comprobante_nro, 
	id_cliente, imp_Iva, imp_Iva2, 
	imp_Iva3, cuit, imp_exento, 
	imp_gravado, porc_iva, porc_iva2,
	imp_neto, imp_total, imp_percepcion_iva, 
	imp_percepcion_IB, imp_percep, id_provincia, 
	periodo, periodo_iva, Fecha_venc,
	id_moneda, Id_Iva, cant_cuotas, cotizacion,
	id_cond_pago, Destinatario, 
	id_localidad, Saldo, lote,Id_Cond_Vta,Observacion,Id_Centro_Costo,Cbte_Grupo,Cantidad,Id_Lista,Email)
	VALUES
	(@id_trans, @id_tipo_cbte, @id_estado_cbte,
	@fecha,	@id_sucursal, @comprobante_nro ,
	@id_cliente, @imp_Iva, @imp_Iva2, 
	@imp_Iva2/*imp_iva3*/, @cuit, @imp_exento, 
	@imp_gravado /*imp_gravado*/, 0 /*Porc_iva*/, 0 /*Porc_iva2*/,
	@imp_gravado/*imp_neto*/, @imp_total, @imp_percepcion_iva, 
	@imp_percepcion_IB, @imp_percep, @id_provincia, 
	@fecha/*periodo*/, @fecha/*periodo_iva*/, @fecha/*periodo_iva*/,
	@id_moneda, @id_iva, 0 /*cant_cuotas*/, 1 /*cotizacion*/,
	@id_cond_pago, @Destinatario,
	@id_localidad, @imp_total/*saldo*/,@lote,@Id_Cond_Vta,@Obs,@Id_Centro_Costo,0,1,@id_lista,@Email)	
	/*FIN Inserto Tabla: CBTES*/



	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,Fecha_Venc)
	VALUES					(@id_cliente,		RTRIM(@Descripcion_Producto),@Cant,
							@id_estado_Cbte,	@Cant,						@id_trans,
							1,					@imp_total,					@imp_total,
							@imp_total,		@imp_total,					@Lote,
							@Fecha_QA,				'A',						@Id_Actividad,@Fecha_Venc)

    SET @Mensaje = 'Trans. Agregada ' + CAST(@Id_Trans as VARCHAR(14))


END

COMMIT

SELECT 0,0,0,0,@Mensaje

END TRY  
BEGIN CATCH  
    -- Execute error retrieval routine.  
    EXECUTE usp_GetErrorInfo;  
	ROLLBACK
END CATCH;   



