No vídeo de hoje, vamos demonstrar uma query para analisar transferência de produtos.
A dúvida de hoje, nos perguntaram, se seria possível através de uma query SQL, listar os produtos transferidos pela rotina MATA261, e identificar caso algum deles tenha sido transferido incorretamente, por exemplo, o produto era Caneta e foi transferido e o usuário colocou o código errado e virou uma Lapiseira no outro armazém.
Pensando nisso, montamos esse exemplo, onde vamos demonstrar em como fazer uma query relacionando a SD3 de saída (R) com a de entrada (D).
Segue abaixo o vídeo exemplificando:
E abaixo a query desenvolvida:
SELECT TOP 10 SD3R.D3_EMISSAO AS EMISSAO, SD3R.D3_DOC AS DOCUMENTO, SD3R.D3_COD AS R_CODIGO, SB1R.B1_DESC AS R_DESCRI, SD3R.D3_LOCAL AS R_LOCAL, SD3R.D3_QUANT AS QUANTIDADE, SD3D.D3_COD AS D_CODIGO, SB1D.B1_DESC AS D_DESCRI, SD3D.D3_LOCAL AS D_LOCAL, CASE WHEN SD3R.D3_COD = SD3D.D3_COD THEN 'Mesmo Produto' ELSE 'Produtos diferentes, verificar!' END AS OBSERVACAO FROM SD3990 SD3R INNER JOIN SD3990 SD3D ON ( SD3D.D3_FILIAL = SD3R.D3_FILIAL AND SD3D.D3_NUMSEQ = SD3R.D3_NUMSEQ AND SD3D.D3_DOC = SD3R.D3_DOC AND SD3D.D3_CF = 'DE4' AND SD3D.D_E_L_E_T_ = ' ' ) INNER JOIN SB1990 SB1R ON ( SB1R.B1_FILIAL = ' ' AND SB1R.B1_COD = SD3R.D3_COD AND SB1R.D_E_L_E_T_ = ' ' ) INNER JOIN SB1990 SB1D ON ( SB1D.B1_FILIAL = ' ' AND SB1D.B1_COD = SD3D.D3_COD AND SB1D.D_E_L_E_T_ = ' ' ) WHERE SD3R.D3_FILIAL = '01' AND SD3R.D3_CF = 'RE4' AND SD3R.D3_ESTORNO != 'S' AND SD3R.D_E_L_E_T_ = ' ' --AND SD3R.D3_COD != SD3D.D3_COD /* se quiser trazer apenas o que é diferente entre origem e destino */ ORDER BY SD3R.R_E_C_N_O_ DESC
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Top demais, é desses conteudos que gostamos rsrsr, por mais conteudos assim.