Como os dados são processados

O método getPedidosRecebidos() executa um único comando SQL complexo que usa CTEs (Common Table Expressions — subconsultas nomeadas) para organizar os dados em etapas.

As CTEs organizam pedidos, itens e recebimentos antes do INSERT final.

Figura 9 — As CTEs organizam pedidos, itens e recebimentos antes do INSERT final.

Etapa por etapa

1. CTE m — Pedidos no período

Seleciona movimentações do tipo PEDIDO alteradas entre o ponteiro e a data limite. Faz LEFT JOIN com stage_pedido_lx para integração LX.

2. CTE mi — Itens do pedido

Para cada pedido, soma as quantidades de cada produto (grade) nos itens ativos do pedido.

3. CTE mr — Recebimentos vinculados

Busca movimentações filhas (recebimentos) ligadas ao pedido pai, apenas com situação Finalizado.

4. CTE mri — Itens recebidos

Soma as quantidades recebidas de cada produto em cada recebimento vinculado ao pedido.

5. SELECT final — Montagem do registro

Junta pedido + itens pedidos + itens recebidos + dados da filial (nome, CNPJ, código).

Cálculo da quantidade pendente: pedido menos recebido, nunca negativo.

Figura 10 — Cálculo da quantidade pendente: pedido menos recebido, nunca negativo.

Campos calculados

Campo destino Como é calculado
QTDE_PEDIDA Soma dos itens do pedido (mi.qtde)
QTDE_RECEBIDA Soma dos itens recebidos (COALESCE(mri.qtde, 0))
QTDE_PENDENTE IF((pedida - recebida) < 0, 0, pedida - recebida)
ENTRADA_CONFIRMADA 1 se situação = FINALIZADO, senão 0
SITUACAO DESATIVO se Cancelado/Aberto, senão ATIVO
DATA_TRANSFERENCIA NOW() no momento da gravação
SKU Código do produto (mi.codigo)
CHAVE_NFE Chave da nota fiscal do pedido

Atualização de registros existentes

O INSERT usa ON DUPLICATE KEY UPDATE, ou seja:

  • Se o registro não existe (chave primária nova) → insere.
  • Se o registro já existe → atualiza apenas: QTDE_RECEBIDA, QTDE_PENDENTE, QTDE_PEDIDA, ENTRADA_CONFIRMADA, DATA_TRANSFERENCIA e SITUACAO.

Chave primária: ID_PRODUTO_GRADE + COD_FILIAL + ID_FILIAL + ID_MOVIMENTACAO_PAI + CNPJ_FILIAL

Filtros aplicados

Filtro Valor Motivo
modulo 'PEDIDO' Apenas movimentações de pedido
tipo_estoque 'PEDIDO' Confirma tipo de estoque
m.data > ponteiro AND <= limite Janela incremental
md.situacao 'ATIVO' Itens não excluídos
md.id_produto_grade IS NOT NULL Produtos com grade definida
mr.situacao 'Finalizado' Recebimentos concluídos

Revision #3
Created 2026-06-24 19:52:49 UTC by Gustavo Filgueiras
Updated 2026-06-25 12:34:53 UTC by Gustavo Filgueiras