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.