Pular para o conteúdo principal

Rotina: Pedido de Venda

Detalhamento completo da rotina de pedido de venda: tabelas, campos, parâmetros, stored procedures e influências em outros módulos.


Módulo Delphi Principal​

ArquivoLinhasResponsabilidade
source/MPD002/UMPD002.pas8.021Form principal — cabeçalho, itens, abas
source/MPD002/UdmMPD002.pas—DataModule — queries, lógica de negócio
source/MPD002/UAUTORIZACAO.pas—Aprovação/autorização de pedidos
source/MPD002/UPARCELAPRAZOMEDIO.pas—Parcelamento e prazo médio
source/MPD002/UMPD002CUSTOMINIMO.pas—Validação de custo mínimo
source/MPD002/UMPD002CUSTOPEDIDO.pas—Cálculo de custo do pedido
source/MPD002/UMPD002FrmContEntrega.pas—Controle de entrega
source/MPD002/UMPD002FrmFator.pas—Fator/Markup
source/MPD002/UMPD002FrmCaixaMaster.pas—Caixa master (embalagem)
source/MPD002/UMPD002MENSAGEM.pas—Mensagens ao cliente
source/MPD002/UMPD002SERIAL.pas—Controle de número de série
source/LPD001/ULPD001.pas—Layout de impressão do pedido
source/CPD001/UCPD001.pas—Consulta de pedidos com filtros

Tabelas do Banco de Dados​

PEDIDO — Cabeçalho​

DDL: docs/schema/tables/PEDIDO.sql

CampoTipoObrigDescrição
CD_EMPRESAINTEGER✓Empresa (PK)
NR_PEDIDOINTEGER✓Número sequencial (PK)
TP_PEDIDOCHAR(1)✓'S'=Saída/Venda, 'E'=Entrada/Compra, 'O'=Orçamento, 'T'=Transferência (PK)
CD_PESSOAINTEGER✓Cliente (FK → PESSOA)
CD_ENDERECOINTEGER✓Endereço de cobrança (FK → ENDERECOPESSOA)
CD_ENDENTREGAINTEGEREndereço de entrega se diferente
CD_ENDCOBRANCAINTEGEREndereço de cobrança específico
CD_VENDEDORINTEGERVendedor responsável (FK → VENDEDOR)
CD_CONDPAGTOINTEGER✓Condição de pagamento (FK → CONDPAGTO)
CD_FORMAPAGTOVARCHAR(2)✓Forma de pagamento (FK → FORMAPAGTO)
CD_JUROINTEGERTabela de juros (FK → JURO)
CD_TRANSPORTADORINTEGERTransportador (FK → PESSOA)
ST_PEDIDOCHAR(1)✓'P'=Pendente, 'A'=Atendido, 'C'=Cancelado, 'N'=Normal
DT_PEDIDODATE✓Data de emissão
HR_PEDIDOTIMEHora da emissão (DEFAULT CURRENT_TIME)
DT_ENTREGADATEData prometida de entrega
DT_VENCIMENTODATEVencimento do pagamento
DT_FATURADODATEPreenchido quando a NF é emitida
DT_EXPEDIDODATEData de expedição/saída física
DT_LIBERADODATEData de liberação para faturamento
DT_CANCELAMENTODATEData do cancelamento
NR_DIASENTREGAINTEGERPrazo de entrega em dias
VL_TRANSPORTADORNUMERIC(15,2)Valor do frete
VL_REDESPACHONUMERIC(15,2)Valor de redespacho
PC_COMISSAOGERALNUMERIC(3,2)% comissão geral do pedido
CD_USUARIOVARCHAR(5)Usuário que criou (FK → USUARIO)
DS_OBSERVACAOVARCHAR(240)Observações gerais
DS_BLOQUEIOVARCHAR(32000)Motivo do bloqueio (preenchido automaticamente)

Chave primária: (CD_EMPRESA, NR_PEDIDO, TP_PEDIDO)


ITEMPEDIDO — Itens​

DDL: docs/schema/tables/ITEMPEDIDO.sql

CampoTipoObrigDescrição
CD_EMPRESAINTEGER✓Empresa (PK)
NR_PEDIDOINTEGER✓Número do pedido (PK, FK → PEDIDO)
TP_PEDIDOCHAR(1)✓Tipo do pedido (PK, FK → PEDIDO)
CD_ITEMINTEGER✓Produto (PK, FK → ITEM)
CD_MOVIMENTACAOINTEGERTipo de movimento (FK → MOVIMENTACAO)
TP_ITEMCHAR(1)'P'=Produto, 'S'=Serviço, 'T'=Terceiro
QT_PEDIDANUMERIC(15,2)✓Quantidade pedida
QT_ATENDIDANUMERIC(15,2)Quantidade efetivamente atendida
PS_PEDIDONUMERIC(15,3)Peso pedido
PS_ATENDIDONUMERIC(15,3)Peso atendido
VL_UNITARIONUMERIC(15,4)✓Preço unitário
VL_TOTALNUMERIC(15,2)(QT_PEDIDA × VL_UNITARIO) − VL_DESCONTO + VL_DESPESA
VL_DESCONTONUMERIC(15,2)Desconto concedido no item
VL_DESPESANUMERIC(15,2)Despesa adicional no item
VL_JURONUMERIC(15,2)Juros do item
PC_COMISSAONUMERIC(3,2)% comissão do item
PC_COMISEMPRNUMERIC(3,2)% comissão adicional da empresa
ST_ITEMPEDIDOCHAR(1)'N'=Não atendido, 'A'=Atendido, 'P'=Parcial
ST_ENTREGACHAR(1)Status de entrega ('A'=Aguardando, 'E'=Entregue)
ST_TERCEIROCHAR(1)'S'/'N' — produto de terceiro
DT_ENTREGADATEData de entrega física do item
CD_TABPRECOINTEGERTabela de preço usada (FK → TABPRECO)
CD_LOCALINTEGERLocal de estoque (FK → LOCALESTOQUE)
CD_TIPOLOCALINTEGERTipo de local de estoque

Chave primária: (CD_EMPRESA, NR_PEDIDO, TP_PEDIDO, CD_ITEM) ON DELETE CASCADE: se o PEDIDO for deletado, os itens são deletados junto.


PARCELAPEDIDO — Parcelas​

DDL: docs/schema/tables/PARCELAPEDIDO.sql Habilitado por: PARMFATUR.ST_PARCELAPEDIDO = 'S'

CampoTipoObrigDescrição
CD_EMPRESAINTEGER✓Empresa (PK)
NR_PEDIDOINTEGER✓Pedido (PK, FK → PEDIDO)
TP_PEDIDOCHAR(1)✓Tipo (PK, FK → PEDIDO)
NR_PARCELAINTEGER✓Sequencial da parcela (PK)
DT_VENCIMENTODATE✓Data de vencimento
VL_PARCELANUMERIC(15,2)✓Valor da parcela
QT_DIASINTEGERDias até vencimento
CD_FORMAPAGTOVARCHAR(2)Forma de pagamento desta parcela
VL_JUROPARCELANUMERIC(15,2)Juros da parcela

Regra: SUM(VL_PARCELA) = VL_TOTAL do PEDIDO (com tolerância de centavos) Regra: cada VL_PARCELA >= PARMFATUR.VL_MINPARCELAPEDIDO


PEDIDONOTA — Rastreamento Pedido → Nota​

DDL: docs/schema/tables/PEDIDONOTA.sql Preenchida por: stored procedure GERA_NOTAPEDIDO

CampoTipoDescrição
CD_EMPRESAINTEGEREmpresa da nota
NR_LANCAMENTOINTEGERNúmero de lançamento da NF (FK → ITEMNOTA)
TP_NOTACHAR(1)Tipo da NF
CD_SERIEVARCHAR(4)Série da NF
CD_ITEMINTEGERItem da NF (FK → ITEMNOTA)
CD_EMPRPEDINTEGEREmpresa do pedido
NR_PEDIDOINTEGERNúmero do pedido
TP_PEDIDOCHAR(1)Tipo do pedido
QT_ATENDIDANUMERIC(15,2)Qtd atendida por esta NF (pedido parcial)
PS_ATENDIDONUMERIC(15,3)Peso atendido
VL_UNITARIONUMERIC(15,4)Valor na nota (pode diferir do pedido)

Uso: permite rastrear qual NF atendeu qual pedido, inclusive parcialmente.


CONTASPEDIDO — Rastreamento Pedido → Título Financeiro​

DDL: docs/schema/tables/CONTASPEDIDO.sql

CampoTipoDescrição
CD_EMPCONTAINTEGEREmpresa da conta (FK → CONTAS)
NR_LANCCONTAINTEGERLançamento da conta (FK → CONTAS)
CD_PESSOACONTAINTEGERPessoa da conta
CD_TIPOCONTAINTEGERTipo de conta
NR_PARCELACONTAINTEGERParcela
CD_EMPPEDIDOINTEGEREmpresa do pedido
NR_PEDIDOINTEGERNúmero do pedido
TP_PEDIDOCHAR(1)Tipo do pedido
VL_COMPENSADONUMERIC(15,4)Valor compensado
DT_LANCAMENTODATEData do lançamento

Uso: vincula a duplicata gerada pelo faturamento ao pedido de origem. Permite saber de qual pedido veio cada cobrança.


Tabelas de Configuração e Suporte​

TabelaDDLPapel na Rotina
PARMFATURdocs/schema/tables/PARMFATUR.sql~274 parâmetros que controlam todo o comportamento
CONDPAGTOdocs/schema/tables/CONDPAGTO.sqlDefine prazos, parcelas, taxas de juro, desconto máx
FORMAPAGTO—Meios de pagamento disponíveis
JURO—Tabelas de taxa de juros e multa
PESSOA—Cliente, dados de crédito, bloqueio
ENDERECOPESSOA—Endereços (cobrança e entrega)
VENDEDOR—Dados do vendedor, % comissão
ITEM—Cadastro do produto
TABPRECO—Tabela de preço de venda
MOVIMENTACAO—Tipo de movimento de estoque
LOCALESTOQUE—Local/posição no armazém

Stored Procedures​

GERA_NOTAPEDIDO​

Scripts/GERA_NOTAPEDIDO.sql

Entrada:
I_CD_EMPRESA INTEGER — empresa
I_NR_PEDIDO INTEGER — pedido
I_TP_PEDIDO CHAR(1) — 'S' ou 'E'

Saída:
O_NR_NOTAFISCAL INTEGER — número da NF gerada
O_NR_LANCAMENTO INTEGER — lançamento na NOTAFISCAL
O_CD_SERIE VARCHAR(10) — série da NF
O_DS_MENSAGEM VARCHAR(1000) — erro ou sucesso

O que faz:

  1. Lê itens do PEDIDO/ITEMPEDIDO
  2. Calcula impostos (CALCULA_IMPOSTOPEDIDO)
  3. Insere em NOTAFISCAL + ITEMNOTA
  4. Insere em PEDIDONOTA (rastreamento)
  5. Atualiza PEDIDO.DT_FATURADO e ST_PEDIDO = 'A'
  6. Gera contas a receber (CONTAS/CONTASDUPLICA)
  7. Baixa estoque via MOVIMENTACAO

GERA_NOTAFISCALPEDIDO​

Scripts/GERA_NOTAFISCALPEDIDO.sql

Versão estendida que trata romaneio/carregamento (expedição em lotes).


CALCULA_IMPOSTOPEDIDO​

Scripts/CALCULA_IMPOSTOPEDIDO.sql

Entrada:
V_CD_EMPRESA INTEGER — empresa
V_NR_PEDIDO INTEGER — pedido
V_TP_PEDIDO CHAR(1)
V_CD_ITEM INTEGER — item específico
V_SG_UFEMPRESA VARCHAR(2) — UF da empresa (para DIFAL)
V_CD_EMPRNOTA INTEGER
V_VL_SIMULACAO NUMERIC — valor simulado (opcional)

Saída:
V_PC_IMPOSTO — % imposto total
V_VL_IMPOSTO — valor imposto total
V_VL_RETIDO — valor retido (ST)
V_VL_SUBSTITUICAO — valor substituição tributária
V_VL_TOTAL — total com imposto
V_VL_IPI — IPI
V_VL_ICMS — ICMS
V_VL_PIS — PIS
V_VL_COFINS — COFINS
...+ outros

Usado em:

  • Preview de impostos no pedido (quando PARMFATUR.ST_IMPOSTOPEDIDO = 'S')
  • Cálculo definitivo na emissão da NF

Outras Procedures Relacionadas​

ProcedureScriptAção
CALCULA_IMPOSTOPEDIDO_V2Scripts/Versão otimizada com menos subqueries
CALCULA_IMPOSTOPEDIDOTOTALScripts/Totalização de impostos de todos os itens
CALCULA_COMISSAOScripts/Calcula e grava comissão do vendedor
ATUALIZA_PEDIDONOTAScripts/Atualiza rastreamento após faturamento parcial
ATUALIZA_PEDIDOROMANEIOScripts/Atualiza romaneio/expedição
GERA_CONTROLEENTREGAPEDIDOScripts/Gera controle de entrega pós-expedição
ATUALIZA_NOTAPEDIDOORIGEMDESTScripts/Atualiza origem/destino na nota

Parâmetros (PARMFATUR)​

Tabela PARMFATUR tem ~274 campos por empresa. Os relevantes para Pedido de Venda:

Habilitação​

ParâmetroTipoEfeito quando 'S'
ST_PEDVENDAS/NHabilita a rotina de pedidos de venda. Se 'N', o menu não abre MPD002
ST_BLOQUEIOPEDS/NBloqueia criação de qualquer novo pedido (freeze comercial)
ST_BLOQVENDEDORS/NVendedor não pode criar pedidos (gerente libera)

Estoque​

ParâmetroTipoEfeito
ST_ESTOQUENEGATIVOS/N'S' = permite vender sem estoque. 'N' = bloqueia item sem saldo
ST_ALERTAESTOQUENEGATIVOS/NAvisa mas não bloqueia quando estoque negativo
ST_SOLICITALOCALPEDS/N'S' = obriga selecionar local de estoque no item (CD_LOCAL em ITEMPEDIDO)
ST_CAIXAMASTERS/NValida se quantidade pedida é múltipla da caixa master do produto
ST_VALIDAITEMEMPRESA0/1Verifica se o produto pertence a esta empresa

Comercial / Crédito​

ParâmetroTipoEfeito
VL_MINIMOPEDIDONUMERICValor mínimo do pedido. Abaixo disso, não salva
PC_DESCONTOPEDNUMERIC(3,2)Desconto máximo permitido (%). Acima: requer autorização
TP_LIMITECREDITOCHAR'N'=Sem limite, 'C'=Limite por cliente (PESSOA.VL_LIMITECRED), outros=regras customizadas
ST_BLOQPEDIDOMFA006S/NBloqueia pedido se cliente tem título vencido em aberto

Pagamento​

ParâmetroTipoEfeito
ST_PARCELAPEDIDOS/N'S' = grava e exibe PARCELAPEDIDO. 'N' = parcelas só existem na NF
ST_JUROVENDAS/NCalcula juros na venda pelo CD_JURO do CONDPAGTO
VL_MINPARCELAPEDIDONUMERICCada parcela deve ter valor >= este
CD_CONDPAGTOPEDINTEGERCondição de pagamento padrão (sugestão ao abrir pedido)
CD_FORMAPAGTOPEDVARCHAR(2)Forma de pagamento padrão

Impostos​

ParâmetroTipoEfeito
ST_IMPOSTOPEDIDOS/N'S' = chama CALCULA_IMPOSTOPEDIDO já no pedido, mostrando preview de impostos. 'N' = impostos calculados só na NF

Entrega​

ParâmetroTipoEfeito
ST_DTENTREGAS/NObriga informar DT_ENTREGA antes de salvar
NR_DIASRETIRADAINTEGERDias padrão para data de retirada (soma em DT_PEDIDO)

Layout de Impressão​

ParâmetroTipoEfeito
CD_LAYPEDVENDAVARCHAR(6)Código do layout LPD* para imprimir o pedido. Ex: 'LPD001'
CD_LAYETIQUETAVARCHAR(6)Layout de etiquetas dos itens
CD_LAYORDCARREGVARCHAR(6)Layout da ordem de carregamento

Condições de Pagamento (CONDPAGTO)​

Campos que afetam diretamente o pedido:

CampoEfeito no Pedido
DS_CONDPAGTOExibida na seleção do pedido
ST_CONDPAGTO'D'=duração fixa, 'I'=intervalo — define como calcular datas das parcelas
TP_NOTA'V'=só venda, 'C'=só compra, 'T'=todos — filtra condições disponíveis por TP_PEDIDO
CD_JUROTabela de juros aplicada automaticamente ao usar esta condição
CD_TABPRECOTabela de preço sugerida ao usar esta condição (ex: condição à vista → preço especial)
PC_MARGEMPEDIDOMargem mínima de lucro por item. Abaixo: pede autorização
VL_PEDIDOMINIMOValor mínimo para usar esta condição de pagamento
PC_DESCMAX% máximo de desconto para esta condição
ST_ATIVO'N' = não aparece na lista do pedido
PC_TAXAJUROSTaxa mensal de juros aplicada nas parcelas
ST_TAXADESTINO'S' = calcula juro por UF de destino (DIFAL)

Fluxo Completo​

┌─────────────────────────────────────────────────────────┐
│ ABERTURA DO PEDIDO (btnNovo / iniciar) │
│ │
│ Verifica PARMFATUR: │
│ ST_PEDVENDA = 'S'? → senão: fecha módulo │
│ ST_BLOQUEIOPED = 'N'? → senão: avisa bloqueio │
│ Carrega defaults: │
│ CD_CONDPAGTOPED, CD_FORMAPAGTOPED, CD_LAYPEDVENDA │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ PREENCHIMENTO DO CABEÇALHO │
│ │
│ Cliente (CD_PESSOA) │
│ → Valida PESSOA.ST_BLOQCREDITO │
│ → Se ST_BLOQPEDIDOMFA006='S': verifica títulos venc. │
│ → Se TP_LIMITECREDITO≠'N': calcula saldo de crédito │
│ │
│ Condição de Pagamento (CD_CONDPAGTO) │
│ → Filtra por TP_NOTA compatível │
│ → Aplica CONDPAGTO.CD_TABPRECO ao pedido │
│ → Aplica CONDPAGTO.CD_JURO │
│ → Verifica CONDPAGTO.VL_PEDIDOMINIMO │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ LANÇAMENTO DE ITENS (ITEMPEDIDO) │
│ │
│ Para cada item: │
│ TP_ITEM: P/S/T │
│ Busca preço em TABPRECO │
│ Calcula VL_TOTAL = (QT × VL_UNIT) − VL_DESC │
│ Valida PC_COMISSAO │
│ Valida VL_DESCONTO <= PC_DESCONTOPED │
│ Se ST_SOLICITALOCALPED='S': obriga CD_LOCAL │
│ Se ST_CAIXAMASTER='S': valida múltiplo de caixa │
│ │
│ Se TP_ITEM = 'P' (produto): │
│ Se ST_ESTOQUENEGATIVO='N': verifica saldo estoque │
│ Se ST_ALERTAESTOQUENEGATIVO='S': avisa sem bloquear │
│ Se ST_VALIDAITEMEMPRESA='1': valida item na empresa │
│ │
│ Se ST_IMPOSTOPEDIDO='S': │
│ CALCULA_IMPOSTOPEDIDO → exibe preview impostos │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ PARCELAS (PARCELAPEDIDO) │
│ │
│ Se ST_PARCELAPEDIDO='S': │
│ Gera parcelas com base em CONDPAGTO │
│ Cada parcela: DT_VENCIMENTO + VL_PARCELA │
│ Valida: SUM(VL_PARCELA) = VL_TOTAL │
│ Valida: cada VL_PARCELA >= VL_MINPARCELAPEDIDO │
│ Se ST_JUROVENDA='S': adiciona VL_JUROPARCELA │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ GRAVAÇÃO (btnSalvar) │
│ │
│ Valida VL_TOTAL >= VL_MINIMOPEDIDO │
│ tabPEDIDO.Post → INSERT/UPDATE PEDIDO │
│ tabITEM.Post → INSERT/UPDATE ITEMPEDIDO │
│ tabPARCELA.Post → INSERT/UPDATE PARCELAPEDIDO │
│ Transaction.Commit │
│ CALCULA_COMISSAO (se configurado) │
│ Exibe layout de impressão (CD_LAYPEDVENDA) │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ LIBERAÇÃO / APROVAÇÃO │
│ │
│ PEDIDO.DT_LIBERADO := SYSDATE │
│ PEDIDO.ST_PEDIDO := 'A' (ou permanece 'P' aguardando) │
│ UAUTORIZACAO.pas — autorizações de desconto/crédito │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ FATURAMENTO (MNF001 / TFA*) │
│ │
│ GERA_NOTAPEDIDO(CD_EMPRESA, NR_PEDIDO, 'S') │
│ → Cria NOTAFISCAL + ITEMNOTA │
│ → Insere PEDIDONOTA (rastreamento) │
│ → PEDIDO.DT_FATURADO := SYSDATE │
│ → Transmite NF-e à SEFAZ (jFaturamento) │
│ → Gera CONTAS (títulos a receber) │
│ → Insere CONTASPEDIDO (rastreamento financeiro) │
│ → Baixa ESTOQUE via MOVIMENTACAO │
│ → Calcula COMISSAO definitiva │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ EXPEDIÇÃO / ENTREGA │
│ │
│ PEDIDO.DT_EXPEDIDO := SYSDATE │
│ ITEMPEDIDO.ST_ENTREGA := 'E' (Entregue) │
│ ATUALIZA_PEDIDOROMANEIO → gera romaneio │
│ GERA_CONTROLEENTREGAPEDIDO → rastreia entrega │
└────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ RECEBIMENTO FINANCEIRO (Módulo Financeiro) │
│ │
│ CONTAS.ST_CONTAS = 'L' (Liquidado) │
│ Gera MOVTOCAIXA / MOVCONTA │
│ Vinculado via CONTASPEDIDO ao pedido original │
└─────────────────────────────────────────────────────────┘

Estados do Pedido (ST_PEDIDO)​

[Novo]
│
▼
'P' Pendente ─── bloqueio de crédito/estoque ──► DS_BLOQUEIO preenchido
│
│ Aprovação / Liberação
▼
'N' Normal / 'A' Atendido ──► DT_LIBERADO preenchido
│
│ GERA_NOTAPEDIDO
▼
'A' Atendido ──────────────► DT_FATURADO preenchido
│
│ Expedição
▼
(mantém 'A') ───────────────► DT_EXPEDIDO preenchido
│
│ Cancelamento
▼
'C' Cancelado ──────────────► DT_CANCELAMENTO preenchido

Influências em Outros Módulos​

→ Estoque​

  • Reserva de estoque ao salvar o pedido (saldo disponível vs. comprometido)
  • Baixa definitiva ao emitir a NF (GERA_NOTAPEDIDO → MOVIMENTACAO)
  • ITEMPEDIDO.CD_LOCAL define de qual local sai o produto
  • Sem pedido: estoque não é comprometido antes do faturamento

→ Faturamento​

  • GERA_NOTAPEDIDO converte o pedido em NF de saída (NOTAFISCAL + ITEMNOTA)
  • PEDIDONOTA mantém o rastreamento item-a-item
  • Faturamento parcial: uma NF pode atender apenas parte dos itens — PEDIDONOTA registra as quantidades

→ Notas Fiscais​

  • A NF gerada vai para NOTAFISCAL com referência ao pedido
  • ITEMPEDIDO.CD_MOVIMENTACAO define o CFOP e natureza da operação
  • Se ST_IMPOSTOPEDIDO='S': impostos já calculados no pedido são reaproveitados

→ Financeiro​

  • GERA_NOTAPEDIDO gera os títulos a receber em CONTAS
  • CONTASPEDIDO vincula cada título ao pedido de origem
  • PARCELAPEDIDO (quando ativo) é o espelho das futuras CONTAS
  • Limite de crédito do cliente (PESSOA.VL_LIMITECRED) é consumido pelo pedido pendente

→ Fiscal​

  • CALCULA_IMPOSTOPEDIDO calcula ICMS, IPI, PIS, COFINS, ST já no pedido
  • UF do cliente (ENDERECOPESSOA) influencia alíquota de DIFAL
  • Substituição tributária calculada na procedure, gravada na NF

→ Caixa e PDV​

  • Quando TP_PEDIDO='S' e condição à vista: pode receber no caixa durante o faturamento
  • Pagamento integrado via FORMAPAGTO do pedido → MOVTOCAIXA

→ Transporte​

  • PEDIDO.CD_TRANSPORTADOR define a transportadora
  • VL_TRANSPORTADOR rateado nos itens (influencia custo e NF)
  • GERA_NOTAFISCALPEDIDO gera CT-e quando há transportadora

→ Mobile (JunsoftPedidoAPK)​

  • Vendedor cria pedido no app → API PedidoController (POST /pedidos)
  • Grava direto em PEDIDO + ITEMPEDIDO via JDBC
  • Fluxo de aprovação acontece no Desktop (MPD002)

→ Portal Web​

  • Módulo pedidos/ consulta via PortalWebAPI
  • Leitura de PEDIDO + ITEMPEDIDO para exibição
  • Sem edição — apenas visualização

→ Agente de Atendimento (MCP)​

  • Ferramenta consultar_pedidos_venda — lê PEDIDO com filtros
  • Ferramenta simular_parcelamento_pedido — chama CALCULA_IMPOSTOPEDIDO e cálculo de parcelas
  • Ferramenta pesquisar_clientes — busca PESSOA para contexto do pedido

Cálculo do Valor Total​

VL_ITEM = (QT_PEDIDA × VL_UNITARIO) − VL_DESCONTO + VL_DESPESA

VL_PEDIDO = SUM(VL_ITEM)
+ VL_TRANSPORTADOR
− VL_REDESPACHO
+ VL_IMPOSTO (se ST_IMPOSTOPEDIDO='S')
+ VL_JURO (se ST_JUROVENDA='S')

Comissão do Vendedor​

Onde está salvo:
PEDIDO.PC_COMISSAOGERAL — % geral (sobrepõe por item se preenchido)
ITEMPEDIDO.PC_COMISSAO — % por item
ITEMPEDIDO.PC_COMISEMPR — % adicional da empresa

Fórmula:
VL_COMISSAO = VL_TOTAL_PEDIDO × (PC_COMISSAO / 100)

Gravada por:
procedure CALCULA_COMISSAO (Scripts/CALCULA_COMISSAO.sql)
Chamada após confirmação do pedido e/ou faturamento

Pontos de Atenção​

  1. Faturamento parcial — um pedido pode gerar múltiplas NFs. PEDIDONOTA.QT_ATENDIDA controla o saldo ainda não faturado. Verificar ITEMPEDIDO.ST_ITEMPEDIDO = 'P' (parcial).

  2. Desconto acima do limite — quando VL_DESCONTO > PC_DESCONTOPED, o sistema abre UAUTORIZACAO.pas pedindo senha de supervisor.

  3. Bloqueio de crédito — DS_BLOQUEIO é preenchido automaticamente com o motivo. O pedido fica com ST_PEDIDO = 'P' até liberação manual.

  4. PARMFATUR por empresa — cada empresa tem sua linha em PARMFATUR. Trocar empresa (MCP trocar_empresa) muda todos os parâmetros.

  5. Pedido vs. Orçamento — TP_PEDIDO = 'O' não compromete estoque, não gera NF diretamente, não gera financeiro. É convertido em 'S' quando aprovado.

  6. Impostos no pedido — ST_IMPOSTOPEDIDO='S' é custoso em performance pois chama CALCULA_IMPOSTOPEDIDO a cada item. Empresas com muitos itens costumam desativar.