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

CREATE PROCEDURE dbo.CP_Stk_Valorizado @Id_Fam INT, @Con_Stock TINYINT, @id_Prov INT, @Descrip CHAR(100), @pId_Producto  CHAR(14) = ' '

AS
SET NOCOUNT ON

/*Declaracion Variables Locales*/



DECLARE @Mensaje			VARCHAR(100)
		,@UltError			INT
		,@Id_Trans			INT
		,@ID_PRODUCTO		VARCHAR(14)
		,@Importe			DECIMAL(16,2)
		,@Email_Cob			VARCHAR(256)
		,@Id_Trans_Rec		INT
		,@CursorOpen        INT
		,@Flag_Cbte_Tipo	SMALLINT
		,@Periodo           DATE 
		,@Id_sucursal	    SMALLINT
		,@Existe      	    SMALLINT
		,@DepFisico         CHAR(3)
		,@DepLogico         CHAR(3)
		,@Cantidad			DECIMAL(16,0)
		,@STK_10            INT
		,@Fecha             DATETIME


  SELECT ID_PRODUCTO INTO #STOCK FROM PRODUCTOS WHERE 1=0
		
  ALTER Table #STOCK  ADD
				DESCRIPCION	   	VARCHAR(150),
				COSTO   	   	DECIMAL(16,2),
				TOTAL    	   	INT,
				FECHA_COSTO     DATETIME,
				STK_VALORIZADO  DECIMAL(16,2)

-------OJO!!!! Siempre que se agrega o elimina una columna aca, hay que modificar la estructura de la tabla "Producteca_Stock" que usa el Stored: SPJ_Producteca_Generar_Arch_Stock								 						
BEGIN 

 

IF RTRIM(LTRIM(isnull(@descrip,''))) = '' 
   BEGIN
    set @descrip = '% %'
   END
ELSE
   BEGIN
    set @descrip = '%'+ltrim(rtrim(@Descrip))+'%' 
   END   
 
 --PRINT(@descrip)


IF ISNULL(@Id_Fam,0) = 0 AND ISNULL(@Id_Prov,0) = 0
	BEGIN
    INSERT INTO #STOCK
    SELECT P.ID_PRODUCTO AS ID_PRODUCTO ,P.DESCRIPCION_DETALLADA AS DESCRIPCION ,
			P.COSTO AS COSTO ,
			0 AS	TOTAL,
			P.Fecha_Costo AS   FECHA_ULT_COSO,
			0 AS STK_VALORIZADO  
			FROM Productos P, Prod_Familias F,Valores_Monedas M
	   WHERE P.Activo = 1
	   AND P.Vendible = 1
	   AND P.Maneja_Stock = 1
	   AND P.ID_FAMILIA = F.ID_FAMILIA
	   AND ISNULL(P.Id_Moneda_C,'PES')= M.Id_Moneda
	   AND P.Descripcion_Detallada like rtrim(Ltrim(@descrip))
    END
  ELSE
    BEGIN
	IF ISNULL(@Id_Prov,0) = 0
	   BEGIN 
	      IF ISNULL(@Id_Fam,0) <> 0
	      BEGIN
			  INSERT INTO #STOCK
			  SELECT P.ID_PRODUCTO AS ID_PRODUCTO ,
					P.DESCRIPCION_DETALLADA AS DESCRIPCION ,
					P.COSTO  * M.COTIZACION AS COSTO ,
					0 AS	TOTAL,
			        GETDATE() AS FECHA,
					P.Fecha_Costo AS   FECHA_ULT_COSO,
		        	0 AS STK_VALORIZADO 
			   FROM Productos P, Prod_Familias F,Valores_Monedas M
			   WHERE P.Activo = 1
			   AND P.Vendible = 1
			   AND P.Maneja_Stock = 1
			   AND P.ID_FAMILIA = F.ID_FAMILIA
			   AND P.Id_Familia = @Id_Fam
			   AND ISNULL(P.Id_Moneda_C,'PES')= M.Id_Moneda
			   AND P.Descripcion_Detallada like  rtrim(Ltrim(@descrip))
	      END
	   END
	 ELSE
	   BEGIN
       IF ISNULL(@Id_Prov,0) <> 0 and iSNULL(@Id_Fam,0) <> 0
		  BEGIN
		  INSERT INTO #STOCK
		  SELECT P.ID_PRODUCTO AS ID_PRODUCTO ,
						P.DESCRIPCION_DETALLADA AS DESCRIPCION ,
						P.COSTO * M.COTIZACION AS COSTO ,
     					0 AS	TOTAL,
						P.Fecha_Costo AS   FECHA_ULT_COSO,
		             	0 AS STK_VALORIZADO 
				   FROM Productos P, Prod_Familias F, Valores_Monedas M
				   WHERE P.Activo = 1
				   AND P.Vendible = 1
				   AND P.Maneja_Stock = 1
				   AND P.ID_FAMILIA = F.ID_FAMILIA
				   AND P.Id_Familia = @Id_Fam
				   AND ISNULL(P.Id_Moneda_C,'PES')= M.Id_Moneda
				   AND P.Id_Proveedor = @Id_PROV
				   AND P.Descripcion_Detallada like rtrim(Ltrim(@descrip))
		 END
		ELSE
		 BEGIN
		 INSERT INTO #STOCK
			  SELECT P.ID_PRODUCTO AS ID_PRODUCTO ,
						P.DESCRIPCION_DETALLADA AS DESCRIPCION ,
						P.COSTO  * M.COTIZACION AS COSTO ,
						0 AS	TOTAL,
						P.Fecha_Costo AS   FECHA_ULT_COSO,
			            0 AS STK_VALORIZADO 
				   FROM Productos P, Prod_Familias F, Valores_Monedas M
				   WHERE P.Activo = 1
				   AND P.Vendible = 1
				   AND P.Maneja_Stock = 1
				   AND P.ID_FAMILIA = F.ID_FAMILIA
				   AND ISNULL(P.Id_Moneda_C,'PES')= M.Id_Moneda
				   AND P.Id_Proveedor = @Id_PROV
				   AND P.Descripcion_Detallada like  rtrim(Ltrim(@descrip))
		  END
	  END
   END

   DECLARE TagCbtesCursor CURSOR FOR  

       select I.ID_PRODUCTO,sum(i.Cantidad*isnull(t.compromete_Stock,1)) AS CANTIDAD
		   from cbtes c, cbtes_tipos t, cbtes_items i, #STOCK S
		   where c.id_tipo_cbte  = t.id_tipo_cbte
		   and I.Id_Trans = c.Id_Trans
		   And c.id_Estado_Cbte <> 3
		   and I.id_Producto = S.Id_Producto 
		   And t.compromete_Stock in (1,-1)
		   AND I.FLAG_QA = 'A'
		   group by I.ID_PRODUCTO

	OPEN TagCbtesCursor

	FETCH NEXT FROM TagCbtesCursor INTO @ID_PRODUCTO,@Cantidad
	SET @CursorOpen = 0	
	SET @UltError = 0
	WHILE @@FETCH_STATUS=0 AND @UltError  = 0
	BEGIN
	
        UPDATE #STOCK SET TOTAL = @Cantidad, STK_VALORIZADO = @Cantidad * COSTO	WHERE ID_PRODUCTO =  @ID_PRODUCTO 
  
   	 	FETCH NEXT FROM TagCbtesCursor INTO @ID_PRODUCTO,@Cantidad

	END
	CLOSE TagCbtesCursor
	DEALLOCATE TagCbtesCursor

 

--		/*FIN */

END 

IF @pId_Producto <> '_'
   BEGIN
		SELECT * FROM #STOCK WHERE ID_PRODUCTO = @pId_producto  
   END
 ELSE
   BEGIN
		IF ISNULL(@Con_Stock,0) = 0   
			SELECT * FROM #STOCK  ORDER BY DESCRIPCION
		ELSE
			SELECT * FROM #STOCK WHERE TOTAL > 0   ORDER BY DESCRIPCION
   END 
   
 DROP TABLE #STOCK


 /* 

 exec CP_Stk_valorizado 0,0,0,'','_'


 FIN */