PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  PCP/Estoque/Custos
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Movimentação de estoque
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário CAMILLAFS CAMILLAFS em 23/11/2020, 14:22 h
Local: RJ  Registro: 01/03/2020  Postagens: 1
Gente, boa tarde. Poderiam me ajudar montar um relatório de estoque.

Preciso de um relatório que não tem movimentação de 2018 pra trás, pois irei bloquear estes. Sendo que existem produtos cadastrados em mais de um armazem.

Até havia realizado a query, abaixo:

SELECT CD_EMPR, B1_COD,B1_CONINI,B1_CONTA,B1_DATREF,B1_DESC, B1_GRUPO,B1_MCUSTD,B1_MRP,B1_POSIPI, B1_SUBGRUP,B1_TIPO,
B1_UCALSTD,B1_UCOM,B1_UM,B1_UPRC,B1_UREV,B1_XCLASSE,B1_XDESCC FROM V_BI_SB1
WHERE B1_UCOM < = ‘20181231‘
AND D_E_L_E_T_ = ‘ ‘
AND B1_MSBLQL = ‘2‘
AND CD_EMPR IN (‘xx‘,‘xx‘)

Sendo que essa query está puxando os produtos com todos os armazéns, sendo que tem armazém em que há movimentação de estoque.

Então teria que ser um relatório somente do armazém que não tem estoque.

Como que eu conseguiria puxar um relatório somente do produto com o armazém zerado.    

Podem me ajudar, por favor?

Sou nova nisso,rs.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GU_ZAMPIER GU_ZAMPIER em 16/12/2020, 10:33 h
Local: SP  Registro: 03/09/2018  Postagens: 34
SELECT *
FROM SB1010 AS SB1
LEFT JOIN SB2010 as SB2 on B1_COD = B2_COD
WHERE SB1.D_E_L_E_T =‘‘ AND SB2.D_E_L_E_T=‘‘
AND B1_MSBLQL =‘2‘
--AND B1_LOCPAD IN (‘ARMAZENS‘,‘PADRÕES‘)
AND B1_UCOM =<‘20181231‘
AND B2_QATU = 0

Dessa forma vai puxar tudo que está zerado em qualquer armazém, se tiver só alguns armazéns que você queira filtrar, é só colocar ali no B1_LOCPAD.

Eu não entendi direito o que você queria, mas acredito que isso vai te ajudar um pouco até filtrar do modo que você quer.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 16/12/2020, 11:51 h
Local: SP  Registro: 20/08/2010  Postagens: 670
veja se isto te atende:

SELECT
     B1.B1_COD, B1.B1_DESC, B1_GRUPO, B1_POSIPI,
     COALESCE(D2.DTULTMOV,‘        ‘) ULTVENDA,
     COALESCE(D1.DTULTMOV,‘        ‘) ULTCOMPRA,
     COALESCE(D3.DTULTMOV,‘        ‘) ULTMOVEST
FROM
     SB1010 B1
-- NOTAS DE SAIDA
LEFT JOIN
     (     SELECT
               D2_COD, MAX(D2_EMISSAO) DTULTMOV
          FROM
               SD2010
          WHERE
               D_E_L_E_T_ = ‘ ‘
               AND D2_FILIAL = ‘ ‘
          GROUP BY
               D2_COD
     ) D2 ON D2.D2_COD = B1.B1_COD
-- NOTAS DE ENTRADA
LEFT JOIN
     (     SELECT
               D1_COD, MAX(D1_DTDIGIT) DTULTMOV
          FROM
               SD1010
          WHERE
               D_E_L_E_T_ = ‘ ‘
               AND D1_FILIAL = ‘ ‘
          GROUP BY
               D1_COD
     ) D1 ON D1.D1_COD = B1.B1_COD
-- MOVIMENTOS INTERNOS
LEFT JOIN
     (     SELECT
               D3_COD, MAX(D3_EMISSAO) DTULTMOV
          FROM
               SD3010
          WHERE
               D_E_L_E_T_ = ‘ ‘
               AND D3_FILIAL = ‘ ‘
          GROUP BY
               D3_COD
     ) D3 ON D3.D3_COD = B1.B1_COD
WHERE
     B1.D_E_L_E_T_ = ‘ ‘
     AND B1.B1_FILIAL = ‘ ‘
     AND COALESCE(D2.DTULTMOV,‘        ‘) < ‘2018‘
     AND COALESCE(D1.DTULTMOV,‘        ‘) < ‘2018‘
     AND COALESCE(D3.DTULTMOV,‘        ‘) < ‘2018‘
SELECT
     B1.B1_COD, B1.B1_DESC, B1_GRUPO, B1_POSIPI,
     COALESCE(D2.DTULTMOV,‘        ‘) ULTVENDA,
     COALESCE(D1.DTULTMOV,‘        ‘) ULTCOMPRA,
     COALESCE(D3.DTULTMOV,‘        ‘) ULTMOVEST
FROM
     SB1010 B1
-- NOTAS DE SAIDA
LEFT JOIN
     (     SELECT
               D2_COD, MAX(D2_EMISSAO) DTULTMOV
          FROM
               SD2010
          WHERE
               D_E_L_E_T_ = ‘ ‘
               AND D2_FILIAL = ‘ ‘
          GROUP BY
               D2_COD
     ) D2 ON D2.D2_COD = B1.B1_COD
-- NOTAS DE ENTRADA
LEFT JOIN
     (     SELECT
               D1_COD, MAX(D1_DTDIGIT) DTULTMOV
          FROM
               SD1010
          WHERE
               D_E_L_E_T_ = ‘ ‘
               AND D1_FILIAL = ‘ ‘
          GROUP BY
               D1_COD
     ) D1 ON D1.D1_COD = B1.B1_COD
-- MOVIMENTOS INTERNOS
LEFT JOIN
     (     SELECT
               D3_COD, MAX(D3_EMISSAO) DTULTMOV
          FROM
               SD3010
          WHERE
               D_E_L_E_T_ = ‘ ‘
               AND D3_FILIAL = ‘ ‘
          GROUP BY
               D3_COD
     ) D3 ON D3.D3_COD = B1.B1_COD
WHERE
     B1.D_E_L_E_T_ = ‘ ‘
     AND B1.B1_FILIAL = ‘ ‘
     AND COALESCE(D2.DTULTMOV,‘        ‘) < ‘2018‘
     AND COALESCE(D1.DTULTMOV,‘        ‘) < ‘2018‘
     AND COALESCE(D3.DTULTMOV,‘        ‘) < ‘2018‘

Assim você terá uma lista de produtos que NÃO tiveram qualquer movimentação de 2018 pra cá, mas isso não quer dizer que o armazém está zerado; são coisas distintas.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 16/12/2020, 11:53 h
Local: SP  Registro: 20/08/2010  Postagens: 670


Eita, bagunçou tudo....

Veja se isto te atende:

SELECT
     B1.B1_COD, B1.B1_DESC, B1_GRUPO, B1_POSIPI,
     COALESCE(D2.DTULTMOV,'        ') ULTVENDA,
     COALESCE(D1.DTULTMOV,'        ') ULTCOMPRA,
     COALESCE(D3.DTULTMOV,'        ') ULTMOVEST
FROM
     SB1010 B1
-- NOTAS DE SAIDA
LEFT JOIN
     (     SELECT
               D2_COD, MAX(D2_EMISSAO) DTULTMOV
          FROM
               SD2010
          WHERE
               D_E_L_E_T_ = ' '
               AND D2_FILIAL = ' '
          GROUP BY
               D2_COD
     ) D2 ON D2.D2_COD = B1.B1_COD
-- NOTAS DE ENTRADA
LEFT JOIN
     (     SELECT
               D1_COD, MAX(D1_DTDIGIT) DTULTMOV
          FROM
               SD1010
          WHERE
               D_E_L_E_T_ = ' '
               AND D1_FILIAL = ' '
          GROUP BY
               D1_COD
     ) D1 ON D1.D1_COD = B1.B1_COD
-- MOVIMENTOS INTERNOS
LEFT JOIN
     (     SELECT
               D3_COD, MAX(D3_EMISSAO) DTULTMOV
          FROM
               SD3010
          WHERE
               D_E_L_E_T_ = ' '
               AND D3_FILIAL = ' '
          GROUP BY
               D3_COD
     ) D3 ON D3.D3_COD = B1.B1_COD
WHERE
     B1.D_E_L_E_T_ = ' '
     AND B1.B1_FILIAL = ' '
     AND COALESCE(D2.DTULTMOV,'        ') < '2018'
     AND COALESCE(D1.DTULTMOV,'        ') < '2018'
     AND COALESCE(D3.DTULTMOV,'        ') < '2018'

Assim você terá uma lista de produtos que NÃO tiveram qualquer movimentação de 2018 pra cá, mas isso não quer dizer que o armazém está zerado; são coisas distintas.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal