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

CREATE PROCEDURE [dbo].[SP_Fact_Proforma_Reemplazar]  @pId_Trans INT

AS
SET NOCOUNT ON

DECLARE
	@pFecha				DATETIME,
	@pId_Tipo_Cbte		CHAR(4),
	@pId_Tipo_Cli       Smallint 

	SET @pId_Tipo_Cli = (select k.Id_Tipo_Cli from Clientes K,Cbtes C where C.Id_cliente = K.Id_cliente and Id_Trans = @pId_Trans)
	SET @pFecha = (SELECT Fecha from Cbtes where Id_Trans = @pId_Trans)
	SET @pId_Tipo_Cbte  = 'CUP'

/*Declaracion Variables Locales*/
  DECLARE  @Mensaje			VARCHAR(100)
	      ,@UltError	    INT
		  ,@Id_Trans		INT
		  ,@Id_Cliente		INT
		  ,@Importe			DECIMAL(16,2)
		  ,@Email_Cob   	VARCHAR(256)
		  ,@Comprobante_Nro   INT
		  ,@CursorOpen        INT
		  ,@Descrip_Cbte      VARCHAR(100)
		  ,@Result_Stored_Invocado  INT
		  ,@JSON_Parametros_Stored_Invocado VARCHAR(8000)

  DECLARE @Respuesta Table (
				ErrorNumber		INT,
				ErrorSeverity	INT,
				ErrorState		INT,
				ErrorProcedure  VARCHAR(1000),
				ErrorLine		INT,
				ErrorMessage	VARCHAR(1000)
				)

	IF @pId_Tipo_Cli <> 1010
		BEGIN
			SET @Mensaje = 'Debe ser Socio Vicalicio +70'
			ROLLBACK
			SELECT	99	    	        AS ErrorNumber 
					,0					AS ErrorSeverity  
					,0					AS ErrorState 
					,0					AS ErrorProcedure  
					,0					AS ErrorLine		
					,@Mensaje			AS ErrorMessage
			RETURN 1
		END

	BEGIN TRY


     /*Recorrer los tagueados */

	DECLARE TagCbtesCursor CURSOR FOR
		SELECT A.ID_TRANS AS Id_Trans 
				FROM Cbtes_Aplica A, CBTES C
				WHERE A.ID_trans_D = @pId_Trans AND A.Id_Trans = C.Id_Trans
				AND C.Id_Tipo_Cbte = 'CPRO'

	OPEN TagCbtesCursor

	FETCH NEXT FROM TagCbtesCursor INTO @Id_Trans
	SET @CursorOpen = 0	
	SET @UltError = 0
	WHILE @@FETCH_STATUS=0 AND @UltError  = 0
	BEGIN
            SET @CursorOpen = 1
			Set @Comprobante_Nro = (Select Prox_Nro from Cbtes_Tipos where Id_Tipo_Cbte = @pId_Tipo_Cbte)
			Update Cbtes_Tipos Set Prox_Nro = @Comprobante_Nro+1  where Id_Tipo_Cbte = @pId_Tipo_Cbte

			Update Cbtes Set Id_Tipo_Cbte = @pId_Tipo_Cbte, Comprobante_Nro = @Comprobante_Nro, Fecha = @pFecha,
			                 Fecha_Venc = @pFecha, Periodo_Iva = @pFecha, Periodo = @pFecha where Id_trans = @Id_Trans

            SET @Descrip_Cbte = dbo.CF_Descrip_Cbte(@Id_Trans)
            Update Clientes_CtaCte set Fecha = @pFecha, Fecha_Vence = @pFecha, Descripcion = @Descrip_Cbte where Id_trans = @Id_Trans
							 
		   SET @JSON_Parametros_Stored_Invocado =	'{' +
											dbo.CF_Json_ParsearVariable('FlagUsarTrans', 0, 'INT') + ',' +
											dbo.CF_Json_ParsearVariable('Id_Trans', @Id_Trans, 'INT') + ',' +
											dbo.CF_Json_ParsearVariable('ModoDebug', 0, 'INT') + ',' +
											dbo.CF_Json_ParsearVariable('FlagRegenerar', 1, 'TINYINT') + 
											'}'
	        DELETE @Respuesta
	        INSERT INTO @Respuesta						
        	EXEC @Result_Stored_Invocado = dbo.CPJ_Cbtes_Ctas_Contables_Generar @JSON_Parametros_Stored_Invocado						 

 	    	IF @Result_Stored_Invocado <> 0
			BEGIN
				SELECT * FROM @Respuesta	
				RETURN 4569
			END

  			FETCH NEXT FROM TagCbtesCursor INTO @Id_Trans 

	END
	CLOSE TagCbtesCursor
	DEALLOCATE TagCbtesCursor
	SET @CursorOpen = 0	

    SET @JSON_Parametros_Stored_Invocado =	'{' +
											dbo.CF_Json_ParsearVariable('FlagUsarTrans', 0, 'INT') + ',' +
											dbo.CF_Json_ParsearVariable('Id_Trans', @pId_Trans, 'INT') + ',' +
											dbo.CF_Json_ParsearVariable('ModoDebug', 0, 'INT') + ',' +
											dbo.CF_Json_ParsearVariable('FlagRegenerar', 1, 'TINYINT') + 
											'}'
	        DELETE @Respuesta
	        INSERT INTO @Respuesta						
        	EXEC @Result_Stored_Invocado = dbo.CPJ_Cbtes_Ctas_Contables_Generar @JSON_Parametros_Stored_Invocado						 

 	    	IF @Result_Stored_Invocado <> 0
			BEGIN
				SELECT * FROM @Respuesta	
				RETURN 4569
			END



	/******************************fin del proceso***********************************************/



	SELECT	 0				AS ErrorNumber 
			,0				AS ErrorSeverity  
			,0				AS ErrorState 
			,0				AS ErrorProcedure  
			,0				AS ErrorLine		
			,@Mensaje		AS ErrorMessage
END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo
	
      IF @CursorOpen = 1
	     BEGIN 
		 	CLOSE TagCbtesCursor
	        DEALLOCATE TagCbtesCursor
         END
		 	
	RETURN 9999
END CATCH

RETURN 0


