Pular para o conteúdo principal

Rotina: Recebimento de Mercadoria

Conferência de NF de entrada, confronto com pedido de compra, lançamento em estoque e geração de contas a pagar.


Módulos Delphi​

ArquivoPapel
source/MRC001/UMRC001.pasListagem de NFs de entrada pendentes de conferência
source/MRC002/UMRC002.pasConferência de NF de entrada (cabeçalho)
source/MRC002/UdmMRC002.pasDataModule — queries de conferência
source/MRC004/UMRC004.pasConferência de itens (divergências de quantidade/preço)
source/MRC007/UMRC007.pasDevolução de mercadoria a fornecedor
source/MRC009/UMRC009.pasEntrada de NF manual (sem pedido de compra)
source/MRC014/UMRC014.pasRelatório de entradas por período

Tabelas do Banco de Dados​

CONFERENCIANOTA — Cabeçalho da Conferência​

DDL: docs/schema/tables/CONFERENCIANOTA.sql Chave primária: (CD_EMPRESA, NR_CONFERENCIANOTA)

CampoTipoDescrição
NR_CONFERENCIANOTAINTEGERSequencial (PK)
NR_PEDIDOINTEGERPedido de compra de origem (FK → PEDIDO)
CD_PESSOAINTEGERFornecedor (FK → PESSOA)
NR_NOTAFISCALINTEGERNúmero da NF do fornecedor
CD_SERIEVARCHAR(4)Série da NF
DT_EMISSAODATEData de emissão da NF
DT_ENTRADADATEData de entrada/recebimento físico
VL_NOTANUMERIC(15,2)Valor total da NF
VL_FRETENUMERIC(15,2)Frete destacado
VL_SEGURONUMERIC(15,2)Seguro
VL_OUTRASDESPESASNUMERIC(15,2)Outras despesas
VL_DESCONTONUMERIC(15,2)Desconto global
VL_IPINUMERIC(15,2)Total de IPI
VL_ICMSNUMERIC(15,2)Total de ICMS
VL_ICMSSTNUMERIC(15,2)Total de ICMS-ST
ST_CONFERENCIACHAR(1)'A'=Aberta, 'C'=Conferida, 'F'=Finalizada/Lançada
CD_USUARIOVARCHAR(5)Usuário que conferiu
DT_CONFERENCIATIMESTAMPData/hora da conferência
NR_LANCTONOTAINTEGERNF lançada no sistema (FK → NOTA)
DS_OBSERVACAOVARCHAR(500)Observações

Regra: ST_CONFERENCIA='F' indica que a NF foi lançada em NOTA e gerou movimentação de estoque e financeiro.


ITEMCONFERENCIANOTA — Itens Conferidos​

DDL: docs/schema/tables/ITEMCONFERENCIANOTA.sql Chave primária: (CD_EMPRESA, NR_CONFERENCIANOTA, NR_ITEM)

CampoTipoDescrição
NR_ITEMINTEGERSequencial do item
CD_ITEMINTEGERProduto (FK → ITEM)
CD_ITEM_FORNECEDORVARCHAR(30)Código do produto no fornecedor
QT_PEDIDANUMERIC(15,5)Quantidade no pedido de compra
QT_NOTANUMERIC(15,5)Quantidade na NF do fornecedor
QT_LIDANUMERIC(15,5)Quantidade fisicamente contada
VL_UNITARIONUMERIC(15,4)Preço unitário na NF
VL_UNITARIO_PEDIDONUMERIC(15,4)Preço unitário no pedido (para confronto)
VL_IPINUMERIC(15,2)IPI do item
VL_ICMSNUMERIC(15,2)ICMS do item
VL_ICMSSTNUMERIC(15,2)ICMS-ST do item
PC_DESCONTONUMERIC(5,2)% de desconto no item
NR_LOTEINTEGERNúmero do lote (se controle de lote ativo)
DT_VALIDADEDATEValidade do lote
CD_LOCALINTEGERLocal de estoque de destino
ST_DIVERGENCIACHAR(1)'S'=Há divergência, 'N'=OK

MOVTOENTRADA — Histórico de Entradas​

DDL: docs/schema/tables/MOVTOENTRADA.sql

CampoTipoDescrição
NR_LANCAMENTOINTEGERSequencial (PK)
NR_CONFERENCIANOTAINTEGERConferência de origem (FK)
NR_LANCTONOTAINTEGERNF lançada (FK → NOTA)
CD_ITEMINTEGERProduto
QT_ENTRADANUMERIC(15,5)Quantidade efetivamente entrada
VL_CUSTONUMERIC(15,4)Custo unitário calculado
DT_ENTRADADATEData da entrada
ST_CANCELAMENTOCHAR(1)'N'=Normal, 'C'=Cancelado

Tabelas auxiliares no recebimento​

TabelaUso
PEDIDOPedido de compra de origem (TP_PEDIDO='E')
ITEMPEDIDOItens do pedido para confronto
NOTANF lançada ao finalizar a conferência
ITEMNOTAItens da NF lançada
ESTOQUESaldo atualizado após entrada
MOVESTOQUETrilha de auditoria da entrada
CONTASTítulo a pagar gerado (TP_CONTAS='E')

Parâmetros (PARMFATUR)​

ParâmetroTipoEfeito quando ativo
ST_CONFNOTAENTRADAS/N'S' = conferência obrigatória antes de lançar NF de entrada; 'N' = entrada direta sem conferência
ST_CONFPRECOQUANTIDADES/N'S' = alerta ao conferir se preço ou quantidade diverge do pedido
ST_BLOQCONFNOTAS/N'S' = bloqueia finalização se houver divergência não justificada
ST_LOCALESTOQUEENTRADAS/N'S' = exige informar local de destino em cada item
ST_CONFERELOTES/N'S' = exige número de lote e validade no recebimento
CD_OPERRECEBTOINTEGEROperação de estoque para entrada por recebimento (referência de PARMESTOQUE)

Stored Procedures Relevantes​

FINALIZA_CONFERENCIANOTA​

EXECUTE PROCEDURE FINALIZA_CONFERENCIANOTA(
:CD_EMPRESA,
:NR_CONFERENCIANOTA,
:CD_USUARIO
)

Responsável por:

  1. Validar divergências (se ST_BLOQCONFNOTA='S' e houver divergência → aborta)
  2. INSERT NOTA + INSERT ITEMNOTA — lança a NF no sistema
  3. INSERT MOVESTOQUE para cada item (CD_OPERACAO = CD_OPERRECEBTO)
  4. UPDATE ESTOQUE.QT_ESTOQUE (+= QT_LIDA)
  5. Recalcula VL_PRECOMEDIO (custo médio ponderado)
  6. GRAVA_CONTAS(TP_CONTAS='E') — gera título a pagar para o fornecedor
  7. Atualiza ITEMPEDIDO.QT_RECEBIDA e ST_PEDIDO do pedido de compra

GRAVA_CONTAS (TP_CONTAS='E')​

  • Parcela a obrigação conforme CD_CONDPAGTO da NF
  • INSERT CONTAS para cada parcela (TP_CONTAS='E', ST_CONTAS='T')
  • Vincula via CONTASPEDIDO.NR_PEDIDO

Fluxo Completo — Recebimento de Mercadoria​

┌──────────────────────────────────────────────────────────┐
│ 1. RECEBIMENTO FÍSICO │
│ Chegada da mercadoria na empresa │
│ Conferente abre CONFERENCIANOTA vinculada ao pedido │
│ ST_CONFERENCIA := 'A' │
│ Informa: NR_NOTAFISCAL, CD_SERIE, DT_EMISSAO │
│ Informa: VL_NOTA, VL_FRETE, VL_IPI, VL_ICMSST │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 2. CONFERÊNCIA DE ITENS (MRC004) │
│ Para cada ITEMCONFERENCIANOTA: │
│ - Lê código de barras ou digita QT_LIDA │
│ - Confronta com QT_PEDIDA e QT_NOTA │
│ - Se ST_CONFPRECOQUANTIDADE='S': │
│ Alerta se VL_UNITARIO != VL_UNITARIO_PEDIDO │
│ - Se divergência: ST_DIVERGENCIA := 'S' │
│ - Se controle de lote: informa NR_LOTE, DT_VALIDADE │
│ ST_CONFERENCIA := 'C' │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 3. TRATAMENTO DE DIVERGÊNCIAS │
│ Se ST_DIVERGENCIA='S' em algum item: │
│ - Usuário pode ajustar QT_LIDA (aceitar NF) │
│ - Ou rejeitar o item (devolução parcial) │
│ - Se ST_BLOQCONFNOTA='S': deve justificar │
│ Aprovação de preço diferente: gera novo VL_UNITARIO │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 4. FINALIZAÇÃO (FINALIZA_CONFERENCIANOTA) │
│ ST_CONFERENCIA := 'F' │
│ INSERT NOTA (TP_NOTA='E') → NR_LANCTONOTA │
│ INSERT ITEMNOTA para cada item │
│ INSERT MOVESTOQUE (entrada, CD_OPERRECEBTO) │
│ UPDATE ESTOQUE (+= QT_LIDA, recalcula VL_PRECOMEDIO) │
│ GRAVA_CONTAS(TP_CONTAS='E') — título a pagar │
│ UPDATE ITEMPEDIDO.QT_RECEBIDA │
│ Se QT_RECEBIDA = QT_PEDIDA: fecha item do pedido │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 5. DEVOLUÇÃO (opcional — MRC007) │
│ Se item rejeitado ou mercadoria com defeito: │
│ INSERT NOTA (TP_NOTA='D') — NF de devolução a forn. │
│ INSERT MOVESTOQUE (saída) — estorna entrada │
│ UPDATE CONTAS — estorna ou reduz título a pagar │
└──────────────────────────────────────────────────────────┘

Entrada sem Pedido (MRC009)​

Quando não há pedido de compra:

  • Lança NF diretamente via MRC009
  • ST_CONFNOTAENTRADA='N' → pula conferência
  • INSERT NOTA + INSERT MOVESTOQUE diretamente
  • Sem confronto com ITEMPEDIDO

Importação de XML NF-e​

Quando o fornecedor envia XML da NF-e:

  1. Sistema lê XML (chave de acesso de 44 dígitos)
  2. Consulta SEFAZ: valida autenticidade
  3. Pré-preenche CONFERENCIANOTA com dados do XML
  4. Conferente valida apenas quantidades físicas
  5. Divergências de preço são sinalizadas automaticamente

Influências em Outros Módulos​

→ Estoque e Movimentação​

  • Finalização da conferência gera entrada em MOVESTOQUE
  • UPDATE ESTOQUE.QT_ESTOQUE e recalcula VL_PRECOMEDIO

→ Contas a Pagar​

  • GRAVA_CONTAS(TP_CONTAS='E') gera título(s) a pagar para o fornecedor
  • Vinculado ao pedido de compra via CONTASPEDIDO

→ Pedido de Venda​

  • Pedido de compra (TP_PEDIDO='E') atualiza QT_RECEBIDA em ITEMPEDIDO
  • Quando todos os itens recebidos: ST_PEDIDO='A' (atendido)

→ Emissão NF-e​

  • NF de devolução a fornecedor emite NF-e (TP_NOTA='D') pelo mesmo motor fiscal
  • Cancelamento de NF de entrada usa CANCELA_NOTAFISCAL

→ Fiscal e SPED​

  • NF de entrada alimenta registros C1xx do SPED Fiscal
  • Créditos de ICMS e PIS/COFINS de entrada registrados na apuração