|
Bem Vindo, Visitante
|
Todos os Fórums
PCP/Estoque/Custos
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Movimentação de estoque |
|
Versão: |
12.1.25 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
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. |
|
|
Mensagem do
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.
|
|
|
Mensagem do
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.
|
|
|
Mensagem do
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
|
|