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

CREATE PROCEDURE [dbo].[SP_GENERAR_REMITO] @ID_TRANS INT
AS 
DECLARE @Mensaje			VARCHAR(100)
BEGIN TRY
BEGIN TRAN


IF ((SELECT Id_Estado_cbte FROM CBTES WHERE ID_TRANS = @ID_TRANS) = 3) 
	BEGIN
	    SET @Mensaje = 'El cbte no debe estar en Estado Anulado'
		ROLLBACK
		SELECT	 1099		    	AS ErrorNumber 
				,0					AS ErrorSeverity  
				,0					AS ErrorState 
				,0					AS ErrorProcedure  
				,0					AS ErrorLine		
				,@Mensaje			AS ErrorMessage
		RETURN 1
	END

   UPDATE CBTES SET ID_ESTADO_CBTE = 18 WHERE ID_TRANS =  @ID_TRANS

   PRINT @ID_TRANS

		DECLARE @trans_nueva INTEGER
		DECLARE @NRO_CBTE INTEGER
	    DECLARE @desc varchar(50)
		DECLARE @fecha_mov datetime
		DECLARE @user smallint
		DECLARE @id_cond_vta  VARCHAR(10)
        DECLARE @id_tipo_cbte VARCHAR(4)
		DECLARE @id_Sucursal SMALLINT
		DECLARE @Id_Estado_Cbte_Rever Smallint
		 
		
	
		/*Agrego por tk 18443 - 26/11/19*/
		DECLARE @Fecha       DATETIME
		DECLARE @Periodo_Iva DATETIME
		DECLARE @Periodo     DATETIME
		DECLARE @Fecha_venc  DATETIME

		SET @id_cond_vta = (SELECT id_cond_vta from cbtes where id_trans = @ID_TRANS) 

		PRINT 'Id_cond_vta:' + CONVERT (VARCHAR (5), @id_cond_vta)

		SET @trans_nueva = (SELECT max(id_trans) from transacciones ) + 1
		SET @desc = (SELECT descripcion from transacciones where id_trans = @ID_TRANS) 
		SET @fecha_mov = (SELECT fecha_mov from transacciones where id_trans = @ID_TRANS) 
		SET @user = (SELECT id_usuario from transacciones where id_trans = @ID_TRANS) 
		SET @id_tipo_cbte = 'RM'
		SET @id_Sucursal = (SELECT id_sucursal FROM Cbtes_Tipos WHERE Id_Tipo_Cbte=@id_tipo_cbte)

		SET @Id_Estado_Cbte_Rever = (SELECT Isnull(Id_Estado_cbte,1)  From cbtes_Tipos where Id_Tipo_Cbte = @id_tipo_cbte) 
		SET @NRO_CBTE =  (SELECT Prox_Nro  From cbtes_Tipos where Id_Tipo_Cbte = @id_tipo_cbte) 
		
		
		SET @Fecha       = (SELECT Fecha       FROM Cbtes WHERE id_trans=@ID_TRANS)
		SET @Periodo_Iva = (SELECT Periodo_Iva FROM Cbtes WHERE id_trans=@ID_TRANS)
		SET @Periodo     = (SELECT Periodo     FROM Cbtes WHERE id_trans=@ID_TRANS)
		SET @Fecha_venc  = (SELECT Fecha_venc  FROM Cbtes WHERE id_trans=@ID_TRANS)

	 
		
		Update cbtes_Tipos SET Prox_Nro = @NRO_CBTE + 1 WHERE Id_Tipo_Cbte = @id_tipo_cbte

		PRINT @NRO_CBTE

        ----------------------------- Primero los insert ----------------------------------
        INSERT INTO TRANSACCIONES
			(id_trans,descripcion,fecha_mov,id_usuario)
			values (@trans_nueva,@desc,@fecha_mov,@user)

		
               SELECT * INTO #CBTES_aux_sp FROM CBTES WHERE ID_TRANS = @ID_TRANS

               SELECT * INTO #CBTES_ITEMS_aux_sp FROM CBTES_ITEMS WHERE ID_TRANS = @ID_TRANS


               -----------------------------Actualizo id_trans -----------------------------------------------

		update #CBTES_aux_sp set id_trans = @trans_nueva , id_tipo_cbte = @id_tipo_cbte, Id_Estado_Cbte = @Id_Estado_Cbte_Rever
		               ,Fecha = @Fecha, Periodo_Iva =@Periodo_Iva, Periodo = @Periodo, Fecha_Venc = @Fecha_venc 
					   ,Nro_Auto_Trib = '',Cai_Vence = NULL
					   ,Comprobante_Nro = @NRO_CBTE
					   , Id_Sucursal = @id_Sucursal
                       where id_trans = @ID_TRANS
		IF @id_Sucursal = 4
	    	update #CBTES_aux_sp set Observacion = '' where id_trans = @trans_nueva

		update #CBTES_ITEMS_aux_sp set id_trans = @trans_nueva  where id_trans = @ID_TRANS

							  
   -----------------------------agrego -----------------------------------------------

               INSERT INTO CBTES
                      SELECT * FROM  #CBTES_aux_sp WHERE ID_TRANS = @trans_nueva    

               INSERT INTO CBTES_ITEMS
                      SELECT * FROM #CBTES_ITEMS_aux_sp WHERE ID_TRANS = @trans_nueva 

   ----------------------------- update -----------------------------------------------
   
       UPDATE CBTES SET ID_ESTADO_CBTE = 16,Remito_Nro = @NRO_CBTE, id_trans_origen=@trans_nueva /*Guarda en la factura la tr. del Remito para imp. desde el RECE*/  WHERE ID_TRANS =  @ID_TRANS

   ----------------------------- borro -----------------------------------------------

               DROP TABLE #CBTES_aux_sp 
               DROP TABLE #CBTES_ITEMS_aux_sp 



COMMIT
SELECT	 0					AS ErrorNumber 
		,0					AS ErrorSeverity  
		,0					AS ErrorState 
		,0					AS ErrorProcedure  
		,@trans_nueva		AS ErrorLine		
		,@Mensaje			AS ErrorMessage

END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo;  
	ROLLBACK
END CATCH;   




-- exec CP_CBTE_ANULAR_REVERSION 37362
