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

CREATE PROCEDURE [dbo].[CP_Stk_Valorizado_Fecha] @Id_Fam INT, @Con_Stock TINYINT, @id_Prov INT, @Descrip CHAR(100), @pId_Producto  CHAR(14) = ' ', @pFecha_Ref DATETIME
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),
				MONEDA          CHAR(3),
				COSTO   	   	DECIMAL(16,2),
				COTIZACION      DECIMAL(16,4),
				COSTO_PESIF   	DECIMAL(16,2),
				TOTAL    	   	INT,
				FECHA_COSTO     DATETIME,
				STK_VALORIZADO  DECIMAL(16,2)

  BEGIN 

   SELECT ID_PROVEEDOR INTO #PROVE FROM PROVEEDORES WHERE Activo = 1
   SELECT ID_FAMILIA INTO #FAMILIAS FROM Prod_Familias 

   IF @Id_Fam <> 0
      DELETE #FAMILIAS WHERE ID_FAMILIA <> @Id_Fam

   IF @id_Prov <> 0
      DELETE #PROVE WHERE ID_PROVEEDOR <> @id_Prov


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

    INSERT INTO #STOCK
    SELECT P.ID_PRODUCTO AS ID_PRODUCTO ,P.DESCRIPCION_DETALLADA AS DESCRIPCION ,
	        P.ID_MONEDA_C AS MONEDA,
			P.COSTO AS COSTO,
			ISNULL(M.Cotizacion_Ref,1) AS COTIZACION,
			P.COSTO * M.Cotizacion_Ref AS COSTO_PESIF ,
			0 AS	TOTAL, 
			P.Fecha_Costo AS   FECHA_ULT_COSO,
			0 AS STK_VALORIZADO  
			FROM Productos P, #FAMILIAS F,Valores_Monedas M,#PROVE K
	   WHERE P.Activo = 1
	   AND P.Vendible = 1
	   AND P.Maneja_Stock = 1
	   AND P.ID_FAMILIA = F.ID_FAMILIA
	   AND P.Id_Proveedor = K.Id_Proveedor
	   AND ISNULL(P.Id_Moneda_C,'PES')= M.Id_Moneda
	   AND P.Descripcion_Detallada like rtrim(Ltrim(@descrip))


   SELECT  I.ID_PRODUCTO,sum(i.Cantidad*t.compromete_Stock) AS CANTIDAD
           INTO #Inventario
		   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'
		   AND C.FECHA < dateadd(dd,1,@pFecha_Ref)
		   group by I.ID_PRODUCTO HAVING sum(i.Cantidad*isnull(t.compromete_Stock,1)) > 0
		   
		   
	

		SELECT I.ID_PRODUCTO, I.id_trans into #compra
		FROM CBTES_ITEMS I
		INNER JOIN (
			SELECT i.ID_producto, MAX(fecha_QA) AS fecha_QA
			FROM CBTES_ITEMS i, Cbtes C, Cbtes_Tipos T 
			WHERE i.FECHA_QA <  dateadd(dd,1,@pFecha_Ref)
		      And C.Id_Trans = I.Id_Trans
	          And C.Id_Estado_Cbte <> 3
	          And C.Id_Tipo_Cbte = T.Id_Tipo_Cbte
	          And T.Compromete_Compras IN (1)
	          and i.Id_cliente = 0
			
			GROUP BY i.ID_producto
		) U
		ON I.ID_producto = U.ID_pRODUCTO AND I.fecha_QA = U.fecha_QA
		,CBTES CO, Cbtes_Tipos CT
		WHERE   CO.Id_Trans = I.Id_Trans 
	          And CO.Id_Estado_Cbte <> 3
	          And CO.Id_Tipo_Cbte = CT.Id_Tipo_Cbte
	          And CT.Compromete_Compras IN (1)		
		
        Select Id_Producto,max(id_trans) as id_trans INTO #ULT_COMPRA  FROM #COMPRA GROUP BY Id_Producto 
        

			
        UPDATE #STOCK SET COSTO = I.PRECIO_GRAV
               , Fecha_Costo = I.FECHA_QA 
               , COSTO_PESIF = I.PRECIO_GRAV * S.COTIZACION
              FROM #STOCK S, Cbtes_Items I, #ULT_COMPRA U
              WHERE I.Id_Trans = U.Id_Trans
              AND I.Id_Producto = U.Id_Producto
              AND S.Id_Producto = U.Id_Producto
        
	

        UPDATE #STOCK SET TOTAL = V.Cantidad, STK_VALORIZADO = V.Cantidad * S.COSTO_PESIF	
        FROM #STOCK S, #Inventario V 
        WHERE s.ID_PRODUCTO =  v.ID_PRODUCTO 
  


 

--		/*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
 DROP TABLE #Inventario
 DROP TABLE #ULT_COMPRA
 DROP TABLE #COMPRA
 /* 

 exec CP_Stk_valorizado_fecha 0,0,0,'','25082','20221231'
 
 
 select * from cbtes where id_trans = 1414723
 






 FIN */
