SELECT
 IdProduto,
 ISNULL((SELECT Forn_cadFornecedor.NomeFantasia FROM Forn_cadFornecedor WHERE Forn_cadFornecedor.IdFornecedor=(SELECT TOP 1 IdCLiForn FROM Estq_auxMovimentoEstoque WHERE IdProduto=Estq_cadProdutos.IdProduto AND Sentido=1 AND IdCliForn IS NOT NULL AND IdCliForn>0 ORDER BY Data DESC)),'Nao Informado') as Fornecedor,
 Estq_cadProdutos.IdSetorProduto,
 Estq_cadProdutos.IdClassProd3,
 Estq_cadProdutos.IdClassProd4,
 Estq_cadProdutos.IdClassProduto,  
 Codigo,
 CSTIPI,
 IPI,
 CSTPIS,
 PIS,
 CSTCOFINS,
 COFINS,
 CFOP,
 Origem,
 ST,
 ICMS,
  ISNULL (Estq_cadClassProd4.Descricao, 'Sem NCM') AS NCM,
  (CASE WHEN Estq_cadProdutos.tipoICMS=1 THEN 'Alíquota ICMS'
      WHEN Estq_cadProdutos.tipoICMS=2 THEN 'Isento de ICMS'
     WHEN Estq_cadProdutos.tipoICMS=3 THEN 'Substituição Tributária'
    WHEN Estq_cadProdutos.tipoICMS IS NULL OR Estq_cadProdutos.tipoICMS='' THEN 'Sem ICMS' END) AS TipoICMS,

 Estq_cadProdutos.Descricao,

 Estq_cadSetores.Descricao as Setor,  

 Estq_cadProdutos.LocalArm, Estq_cadProdutos.Observacoes,  (SELECT TOP 1 (custoTotal/Qtde) as Custo FROM Estq_auxMovimentoEstoque

 WHERE

 Estq_auxMovimentoEstoque.IdProduto = Estq_cadProdutos.IdProduto

 AND Sentido=1 AND custoTotal IS NOT NULL AND custoTotal > 0 ORDER BY Data DESC, IdMovimentoEstoque Desc) as Custo,

 Estq_cadClassProduto.Descricao as Classificacao,  

 Unidade,  

 Minimo,  

 (CASE when (SELECT SUM((CASE when Sentido=1 then Convert(decimal(18,4),Qtde) else (-1)*Convert(decimal(18,4),Qtde) end)) as Atual  

 FROM Estq_auxMovimentoEstoque  

 WHERE IdProduto=Estq_cadProdutos.IdProduto) Is Null  then 0.000000 else (SELECT SUM((CASE when Sentido=1 then Convert(decimal(18,4),Qtde) else (-1)*Convert(decimal(18,4),Qtde) end)) as Atual  

 FROM Estq_auxMovimentoEstoque WHERE IdProduto=Estq_cadProdutos.IdProduto) end) as Atual,

 PrecoVenda,

 PrecoDePara,

 (SELECT PRECO FROM Estq_cadPrecosProdutos WHERE ProdutoID = Estq_cadProdutos.IdProduto AND DescricaoPrecoID = (SELECT DescricaoPrecoID FROM Estq_cadDescricaoPrecos WHERE Mnemonico = 'ATACADO')) as PrecoAtacado,

 (SELECT PRECO FROM Estq_cadPrecosProdutos WHERE ProdutoID = Estq_cadProdutos.IdProduto AND DescricaoPrecoID = (SELECT DescricaoPrecoID FROM Estq_cadDescricaoPrecos WHERE Mnemonico = 'ESPECIAL')) as PrecoEspecial,

 CodigoForn as CodReferencia FROM Estq_cadProdutos  

 LEFT JOIN Estq_cadClassProduto ON Estq_cadProdutos.IdClassProduto=Estq_cadClassProduto.IdClassProduto  

 LEFT JOIN Estq_cadSetores ON Estq_cadProdutos.idSetorProduto =Estq_cadSetores.IdSetorProduto

 LEFT JOIN Estq_cadClassProd4 ON Estq_cadClassProd4.IdClassProd4= Estq_cadProdutos.IdClassProd4

 LEFT JOIN NF_cadNatureza ON NF_cadNatureza.IdNatureza= Estq_cadProdutos.IdNatureza



WHERE Estq_cadProdutos.Ativado=1 ORDER BY IdProduto DESC