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

CREATE PROCEDURE [dbo].[CP_Cbtes_Rec_Fin]
@pId_Trans				INT
AS

/*Declaracion Variables Locales*/
DECLARE @Id_Cta_Contable	INT
DECLARE @Fecha				DATETIME
DECLARE @Debe				DECIMAL(12,2)
DECLARE @Haber				DECIMAL(12,2)
DECLARE @Observacion		VARCHAR(100)
DECLARE @Alias				SMALLINT
DECLARE @Id_Asiento			INT
DECLARE @Id_Centro_Costo	CHAR(10)
DECLARE @Item				SMALLINT

DECLARE @Descripcion_Cbte	VARCHAR(80)

DECLARE @Id_Trans_Aplicada	INT

DECLARE @Mensaje			VARCHAR(100)
/*Fin de Declaraciones Variables Locales */

PRINT 'Procedimiento: CP_Cbtes_Rec_Fin'



DECLARE @Trans TABLE (ErrorNumber	INT 
					,ErrorSeverity  INT 
					,ErrorState		INT
					,ErrorProcedure	VARCHAR(100)
					,ErrorLine		INT
					,ErrorMessage	VARCHAR(1000)
					,Id_Trans		INT
					)

INSERT INTO @Trans
	EXEC dbo.CP_Cbtes_Ctas_Contables_Generar @pId_Trans, 1

IF (SELECT TOP 1 ErrorNumber FROM @Trans) <> 0
BEGIN
	SELECT * FROM @Trans
	RETURN
END


DECLARE @Trans2 TABLE (ErrorNumber	INT 
					,ErrorSeverity  INT 
					,ErrorState		INT
					,ErrorProcedure	VARCHAR(100)
					,ErrorLine		INT
					,ErrorMessage	VARCHAR(1000)
					,Id_Trans		INT
					,Id_Tipo_Cbte	CHAR(4)
					,Id_Estado_Cbte SMALLINT
					,Comprobante_Nro INT				
					)


INSERT INTO @Trans2
	EXEC dbo.CP_Cbtes_Grabar_Numero @pId_Trans

IF (SELECT TOP 1 ErrorNumber FROM @Trans) <> 0
BEGIN
	SELECT * FROM @Trans2
	RETURN
END

BEGIN TRY
	BEGIN TRAN
	
	SET @Id_Trans_Aplicada = ISNULL((SELECT ISNULL(Id_Trans, 0) FROM Cbtes_Aplica WHERE Id_Trans_D = @pId_Trans), 0)
	
	SET @Descripcion_Cbte = (dbo.CF_Cbte_Descrip(@pId_Trans))
	
	UPDATE Transacciones SET Descripcion = SUBSTRING((Descripcion + ' ' + @Descripcion_Cbte), 1, 50) WHERE Id_Trans = @pId_Trans
	UPDATE Valores SET Id_Estado_Valor = 4  WHERE Id_Trans = @pId_Trans
	UPDATE Valores_Mov SET Id_Estado_Valor = 4 WHERE Id_Trans = @pId_Trans
	UPDATE Cajas_Mov SET Id_Estado_Mov_Caja = 2, Descripcion = @Descripcion_Cbte WHERE Id_Trans = @pId_Trans
		
	IF(@Id_Trans_Aplicada <> 0)
	BEGIN
		--Actualizar Estados/Descripcion/Saldo en Cbtes, Clientes_ctaCte, Valores, Valores_Mov, Cajas_Mov		
		UPDATE Cbtes SET Id_Estado_Cbte = 2, Saldo = 0 WHERE Id_Trans = @pId_Trans
		UPDATE Cbtes_Items SET Id_Estado_Cbte = 2 WHERE Id_Trans = @pId_Trans
		UPDATE Clientes_CtaCte SET Id_Estado_Cbte = 2, Descripcion = @Descripcion_Cbte, Saldo = 0 WHERE Id_Trans = @pId_Trans
	END
	ELSE
	BEGIN
		UPDATE Cbtes SET Id_Estado_Cbte = 1 WHERE Id_Trans = @pId_Trans
		UPDATE Clientes_CtaCte SET Id_Estado_Cbte = 1, Descripcion = @Descripcion_Cbte WHERE Id_Trans = @pId_Trans
	END
	
	COMMIT

	SET @Mensaje = @Descripcion_Cbte

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

END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo;  
	ROLLBACK
END CATCH

PRINT 'FIN Procedimiento: CP_Cbtes_Rec_Fin'
