Exemplo de Query de Transferência de Estoque

Hoje vou mostrar uma simples query, que serve para trazer os dados de entrada e saída de uma transferência do estoque.

Ao fazer uma transferência no Protheus, é gerado duas linhas na tabela SD3, uma “requisitando estoque” ( + ) e a outra “devolvendo o estoque” ( – ).

Dessa forma, para se fazer uma query, às vezes o processo acaba ficando oneroso, devido a ter que relacionar a tabela com ela mesmo, então abaixo algumas dicas quanto a isso:

  • No filtro da query, filtre as operações de Requisição (D3_CF = ‘RE4’)
  • Também filtre, transferências que não foram estornadas (D3_ESTORNO != ‘S’)
  • Se você quiser filtrar apenas um documento, pode filtrar direto no D3_DOC
  • No relacionamento, relacione os campos de Filial, NumSeq, Documento (no caso se as transferências na sua empresa sempre forem do mesmo produto, pode relacionar também o código do produto, conforme exemplo abaixo)
  • E por último, no relacionamento, filtre as operações de Devolução (D3_CF = ‘DE4’)

Abaixo a query desenvolvida como exemplo:

SELECT
    SD3R.D3_EMISSAO,
    SD3R.D3_COD,
    SD3R.D3_LOCAL,
    SD3R.D3_QUANT,
    SD3D.D3_EMISSAO,
    SD3D.D3_COD,
    SD3D.D3_LOCAL
FROM
    SD3010 SD3R
    INNER JOIN SD3010 SD3D ON (
        SD3D.D3_FILIAL = SD3R.D3_FILIAL
        AND SD3D.D3_COD = SD3R.D3_COD
        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_ = ' '
    )
WHERE
    SD3R.D3_FILIAL = '01'
    AND SD3R.D3_DOC = 'TSTDOC123'
    AND SD3R.D3_CF = 'RE4'
    AND SD3R.D3_ESTORNO != 'S'
    AND SD3R.D_E_L_E_T_ = ' '

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

Deixe uma resposta