MPD002 — Emissão de Pedidos de Venda (enriquecimento)
Menu: Faturamento > Movimentações > Pedidos > Emissão de Pedidos de Venda
Objetivo
Tela de movimentação para emissão de Pedidos de Venda (e Orçamentos) do módulo Faturamento. Permite montar o cabeçalho do pedido (cliente, endereços, vendedor, condição/forma de pagamento, transportador, frete, redespacho) e os itens (produto, movimentação, tabela de preço, peso/quantidade, desconto, impostos, comissão), com cálculo automático de preço, frete, impostos e comissão via procedures do Firebird. A partir do pedido salvo é possível duplicar, atender/reabrir manualmente, controlar entrega, controlar troca de carcaça de pneus e gerar a Nota Fiscal de Saída (MNF002).
Fluxo principal
- Revisar totais do pedido (valor total, desconto, despesa, frete, impostos) exibidos no rodapé, recalculados automaticamente a cada alteração de item. (Aba Pedido (totais)) —
source/MPD002/UdmMPD002.pas:947-1048 (Calcula_Totais) - Opcional: gerar a Nota Fiscal de Saída diretamente (Ctrl+S / botão Gerar Nota), duplicar o pedido, atender/reabrir manualmente ou cancelar pedido/item. (Barra de ferramentas / Aba Controle de Carcaça) —
source/MPD002/UMPD002.pas:5527-5553 (TfrmMPD002.btnGerarNotaClick)
Campos obrigatórios
| Campo | Condição | Mensagem | Fonte |
|---|---|---|---|
| Data de Emissão do Pedido (DT_PEDIDO) | sempre, ao salvar o cabeçalho | É Obrigatório informar a Data de Emissão do Pedido! | source/MPD002/UdmMPD002.pas:1454-1458 (TdmMPD002.tabPEDIDOBeforePost) |
| Pessoa Física/Jurídica (CD_PESSOA) | sempre, ao salvar o cabeçalho | É Obrigatório informar a Pessoa Física / Jurídica! | source/MPD002/UdmMPD002.pas:1459-1464 (TdmMPD002.tabPEDIDOBeforePost) |
| Data de Entrega (DT_ENTREGA) | quando parâmetro ST_DTENTREGA='S' | É Obrigatório informar Data de Entrega! | source/MPD002/UdmMPD002.pas:1465-1473 (TdmMPD002.tabPEDIDOBeforePost) |
| Endereço da Pessoa (CD_ENDERECO) | sempre, ao salvar o cabeçalho | É Obrigatório informar o Endereço da Pessoa Física / Jurídica! | source/MPD002/UdmMPD002.pas:1474-1479 (TdmMPD002.tabPEDIDOBeforePost) |
| Condição de Pagamento (CD_CONDPAGTO) | sempre, ao salvar o cabeçalho | É Obrigatório informar a Condição de Pagamento! | source/MPD002/UdmMPD002.pas:1480-1485 (TdmMPD002.tabPEDIDOBeforePost) |
| Data de Vencimento (DT_VENCIMENTO) | quando a condição de pagamento é do tipo Vencto Digitado (ST_CONDPAGTO='D') | É Obrigatório informar a Data de Vencimento para a Condição de Pagamento do Tipo Vencto Digitado! | source/MPD002/UdmMPD002.pas:1486-1492 (TdmMPD002.tabPEDIDOBeforePost) |
| Forma de Pagamento (CD_FORMAPAGTO) | sempre, ao salvar o cabeçalho | É Obrigatório informar a Forma de Pagamento! | source/MPD002/UdmMPD002.pas:1493-1498 (TdmMPD002.tabPEDIDOBeforePost) |
| Vendedor (CD_VENDEDOR) | quando ST_BLOQUEIOVENDEDOR='S' e ST_VARIOSVENDEDORES<>'S' | É Obrigatório informar um Vendedor! | source/MPD002/UdmMPD002.pas:1506-1511 (TdmMPD002.tabPEDIDOBeforePost) |
| Redespachante (CD_REDESPACHO) | quando o checkbox de Redespacho está marcado | É Obrigado Informar um Redespachante! | source/MPD002/UdmMPD002.pas:1513-1518 (TdmMPD002.tabPEDIDOBeforePost) |
| Transportador (CD_TRANSPORTADOR) | quando parâmetro ST_OBRIGATRANSPORTADOR='S' | É obrigatório informar o transportador, Verifique! [MFA001] | source/MPD002/UMPD002.pas:2007-2013 (TfrmMPD002.btnSalvarClick) |
| Produto do item (CD_ITEM) | sempre, ao salvar o item | É Obrigatório informar o Produto do Pedido! | source/MPD002/UMPD002.pas:6464-6469 (Valida_CamposItemPedido) |
| Movimentação do item (CD_MOVIMENTACAO) | sempre, ao salvar o item | É Obrigatório informar a Movimentação do Produto no Pedido! | source/MPD002/UMPD002.pas:6471-6476 (Valida_CamposItemPedido) |
| Tabela de Preço do item (CD_TABPRECO) | quando não é transferência e parâmetro ST_TABPRECO é 'T', 'V', ou 'S' com item que possui tabela | É Obrigatório informar a Tabela de Preço do Produto no Pedido! | source/MPD002/UMPD002.pas:6478-6486 (Valida_CamposItemPedido) |
| Peso do produto (PS_PEDIDO) | quando a unidade do item é por peso (TP_UNIDADE='P') | É Obrigatório informar o Peso do Produto no Pedido! | source/MPD002/UMPD002.pas:6488-6494 (Valida_CamposItemPedido) |
| Quantidade do produto (QT_PEDIDA) | quando a unidade do item é por quantidade (TP_UNIDADE='Q') ou item do tipo 'T' | É Obrigatório informar Quantidade do Produto no Pedido! | source/MPD002/UMPD002.pas:6496-6510 (Valida_CamposItemPedido) |
| Valor Unitário do item (VL_UNITARIO) | sempre, ao salvar o item | É Obrigatório informar o Valor Unitário do Produto no Pedido! | source/MPD002/UMPD002.pas:6519-6524 (Valida_CamposItemPedido) |
| Valor Total do item (VL_TOTAL) | sempre, ao salvar o item | É Obrigatório informar o Valor Total do Produto no Pedido! | source/MPD002/UMPD002.pas:6526-6531 (Valida_CamposItemPedido) |
Mensagens: causa e ação
C-2082
Causa: Ao validar a condição de pagamento do pedido, a procedure VERIFICA_CREDITO identificou um motivo de bloqueio de crédito para o cliente (ex.: limite excedido, inadimplência).
Ação: O usuário decide se confirma a continuidade do pedido mesmo com a ressalva de crédito; se recusar, o sistema gera o erro W-2083 (Cliente Bloqueado) e impede salvar.
Fonte: source/MPD002/UdmMPD002.pas:2178-2189 (TdmMPD002.tabPEDIDOCD_CONDPAGTOValidate)
I-1820
Causa: O parâmetro ST_COBRANCAAUTOFRETE está ativo e o pedido ficou abaixo do valor isento de frete configurado para o cliente/empresa.
Ação: Mensagem informativa: o frete calculado (fixo ou percentual) já foi somado automaticamente ao pedido; não é necessária ação, salvo se o valor estiver incorreto (revisar cadastro de frete).
Fonte: source/MPD002/UMPD002.pas:2454-2492 (TfrmMPD002.btnSalvarClick)
W-0780
Causa: Ao clicar para gerar a Nota Fiscal de Saída direto do pedido, o usuário logado não possui o menu MNF002 liberado no cadastro de acesso.
Ação: Solicitar ao administrador a liberação do menu MNF002 (Emissão de Nota Fiscal de Saída) para o usuário.
Fonte: source/MPD002/UMPD002.pas:5538-5540 (TfrmMPD002.btnGerarNotaClick)
W-1585
Causa: Ao consultar o histórico financeiro do cliente (aberto automaticamente quando há contas pendentes, conforme ST_MOSTRARDEVENDO), o usuário não tem acesso ao menu CFC004.
Ação: Liberar o acesso ao menu CFC004 (Histórico de Cliente/Fornecedor) para o usuário.
Fonte: source/MPD002/UMPD002.pas:7659-7661 (TfrmMPD002.edtCD_PESSOAExit)
W-1689
Causa: Ao clicar em Consultar SCPC/SEPROC para o cliente do pedido, o usuário não tem o menu CFC005 liberado.
Ação: Liberar o acesso ao menu CFC005 (Integração SCPC/Vídeo-Cheque/SEPROC) para o usuário.
Fonte: source/MPD002/UMPD002.pas:5033-5035 (TfrmMPD002.btnConsultaSCPCClick)
W-1690
Causa: Ao clicar no botão de Cadastro Rápido de Pessoa (Ctrl+F10) para incluir um cliente novo direto do pedido, o usuário não tem o menu TFA083 liberado.
Ação: Liberar o acesso ao menu TFA083 (Cadastro Rápido de Pessoa) para o usuário.
Fonte: source/MPD002/UMPD002.pas:8004-8006 (TfrmMPD002.btnTFA083Click)
W-2083
Causa: O usuário optou por não continuar diante do aviso de bloqueio de crédito (C-2082) exibido ao validar a condição de pagamento.
Ação: Regularizar o crédito/situação do cliente e tentar novamente, confirmando a mensagem de continuidade se aplicável.
Fonte: source/MPD002/UdmMPD002.pas:2185-2188 (TdmMPD002.tabPEDIDOCD_CONDPAGTOValidate)
W-2096
Causa: O produto está com controle de estoque por local (ST_ESTOQUE='N') e o saldo físico disponível no tipo de local/local informado é insuficiente para a quantidade pedida (parâmetro ST_SOLICITALOCALPED='Q').
Ação: Reduzir a quantidade, escolher outro local de armazenagem com saldo, ou aguardar reposição de estoque.
Fonte: source/MPD002/UdmMPD002.pas:4622-4637 (TdmMPD002.ValidaEstoque)
W-2097
Causa: O produto está com controle de estoque comprometido (ST_ESTOQUE='C') e o saldo comprometido do tipo de local/local informado é insuficiente para a quantidade pedida.
Ação: Reduzir a quantidade, escolher outro local, ou verificar reservas de outros pedidos que estejam consumindo o saldo comprometido.
Fonte: source/MPD002/UdmMPD002.pas:4605-4620 (TdmMPD002.ValidaEstoque)
Alteração Bloqueada!
Causa: O valor da parcela calculada para o pedido ficou abaixo do valor mínimo de parcela (VL_MINPARCELAPEDIDO) e o usuário recusou a confirmação para continuar mesmo assim.
Ação: Ajustar a condição de pagamento/quantidade de parcelas ou o valor do pedido para que a parcela fique acima do mínimo permitido (MFA001), ou confirmar a mensagem de continuidade.
Fonte: source/MPD002/UMPD002.pas:3102-3104 (TfrmMPD002.btnSalvarClick)
Este Pedido não foi Atendido Manualmente. Reabertura Cancelada!
Causa: O usuário clicou em Reabrir Pedido, mas o pedido não possui a marcação 'ATENDIDO MANUALMENTE' em DS_BLOQUEIO, ou seja, não foi atendido por esta função.
Ação: A função Reabrir só se aplica a pedidos atendidos manualmente pelo botão Atender desta tela; não usar para pedidos faturados normalmente.
Fonte: source/MPD002/UMPD002.pas:5057-5058 (TfrmMPD002.btnReabrirClick)
Regras de negócio
MPD002.R001(verregras/MPD002/MPD002.R001.md)MPD002.R002(verregras/MPD002/MPD002.R002.md)MPD002.R003(verregras/MPD002/MPD002.R003.md)MPD002.R004(verregras/MPD002/MPD002.R004.md)MPD002.R005(verregras/MPD002/MPD002.R005.md)MPD002.R006(verregras/MPD002/MPD002.R006.md)MPD002.R007(verregras/MPD002/MPD002.R007.md)MPD002.R008(verregras/MPD002/MPD002.R008.md)MPD002.R009(verregras/MPD002/MPD002.R009.md)MPD002.R010(verregras/MPD002/MPD002.R010.md)MPD002.R011(verregras/MPD002/MPD002.R011.md)MPD002.R012(verregras/MPD002/MPD002.R012.md)MPD002.R013(verregras/MPD002/MPD002.R013.md)MPD002.R014(verregras/MPD002/MPD002.R014.md)MPD002.R015(verregras/MPD002/MPD002.R015.md)MPD002.R016(verregras/MPD002/MPD002.R016.md)MPD002.R017(verregras/MPD002/MPD002.R017.md)MPD002.R018(verregras/MPD002/MPD002.R018.md)MPD002.R019(verregras/MPD002/MPD002.R019.md)MPD002.R020(verregras/MPD002/MPD002.R020.md)MPD002.R021(verregras/MPD002/MPD002.R021.md)MPD002.R022(verregras/MPD002/MPD002.R022.md)
Perguntas frequentes
P: Por que aparece a mensagem 'Cliente Bloqueado' ao tentar salvar o pedido?
R: O sistema roda a verificação de crédito (VERIFICA_CREDITO) ao validar a condição de pagamento; se detectar um motivo de bloqueio (ex.: limite/inadimplência) e o usuário recusar a pergunta de continuidade, o pedido é bloqueado com essa mensagem. Verifique a situação financeira do cliente em CFC004/MFA001.
Fonte: source/MPD002/UdmMPD002.pas:2174-2190 (TdmMPD002.tabPEDIDOCD_CONDPAGTOValidate)
P: Deu a mensagem 'A Condição de Pagamento deve ser do tipo Saída [TFC002]!' ao salvar, o que fazer?
R: A condição de pagamento selecionada está cadastrada em TFC002 apenas para operações de Entrada (compra). É preciso usar/cadastrar uma condição de pagamento do tipo Saída para vendas.
Fonte: source/MPD002/UMPD002.pas:2100-2114 (TfrmMPD002.btnSalvarClick)
P: Por que não consigo excluir/cancelar o pedido ou um item?
R: É necessário que o usuário tenha permissão de cancelamento (ADM012, campo Permissão Oficina) e que o pedido/item não esteja Atendido ou Parcialmente Atendido; também não é possível se o pedido estiver vinculado a uma Ordem de Carregamento com nota fiscal válida.
Fonte: source/MPD002/UMPD002.pas:1545-1546 (TfrmMPD002.btnExcluirClick), source/MPD002/UMPD002.pas:1561-1564 (TfrmMPD002.btnExcluirClick)
P: Por que o sistema pede login e senha de um 'autorizador' ao salvar o pedido?
R: O pedido caiu em uma regra de bloqueio calculada pela procedure VERIFICA_BLOQUEIO (ex.: valor alto, cliente com restrição) e o parâmetro ST_LOGINBLOQUEIO está ativo, exigindo que um usuário cadastrado como Autorizador (TFA008) informe login e senha para liberar.
Fonte: source/MPD002/UMPD002.pas:2787-2808 (TfrmMPD002.btnSalvarClick)
P: O produto tem saldo em estoque, mas o sistema acusa saldo insuficiente. Por quê?
R: Dependendo do parâmetro ST_ALERTAESTOQUENEGATIVO, o sistema pode comparar com o saldo comprometido (que desconta reservas de outros pedidos/volumes) em vez do saldo físico. Verifique o saldo comprometido do item e, se necessário, ajuste o parâmetro em MFA001.
Fonte: source/MPD002/UdmMPD002.pas:6053-6057 (TdmMPD002.ValidaEstoqueNegativo)
P: Por que não consigo digitar um valor unitário menor que o da tabela de preço?
R: O parâmetro MFA001 ST_TABPRECO está como 'L' (liberado só para autorizador) ou 'A' (acima do preço), bloqueando valores abaixo do preço de tabela para usuários sem permissão de Alterar Preço (TFA008).
Fonte: source/MPD002/UMPD002.pas:6727-6747 (Valida_CamposItemPedido)
P: Ao cancelar o pedido, o sistema fica pedindo para escolher um Motivo e não deixa prosseguir sem isso. É normal?
R: Sim, o cancelamento de pedido exige a seleção obrigatória de um motivo cadastrado (tabela MOTIVO); a tela repete a pesquisa até que um motivo seja escolhido.
Fonte: source/MPD002/UMPD002.pas:1654-1664 (TfrmMPD002.btnExcluirClick)
P: Apareceu 'Produto não pode ser Alterado, pois já foi guardado [MEQ029]'. O que significa?
R: O item já está vinculado a um volume/romaneio de produção (VOLUMEPEDIDOITEM), processo controlado pela tela MEQ029. É preciso desfazer/estornar essa vinculação antes de alterar peso, quantidade ou excluir o item aqui na MPD002.
Fonte: source/MPD002/UdmMPD002.pas:3448-3453 (TdmMPD002.tabITEMPEDIDOPS_PEDIDOValidate)
P: Deu a mensagem 'Usuário não possui acesso a Emissão de Nota Fiscal de Saída! [MNF002]'. Como resolver?
R: Ao clicar para gerar a nota diretamente do pedido, o sistema verifica se o usuário tem o menu MNF002 liberado; é preciso liberar esse acesso no cadastro de usuário/menu.
Fonte: source/MPD002/UMPD002.pas:5538-5540 (TfrmMPD002.btnGerarNotaClick)
P: Por que o campo Vendedor fica travado (somente leitura) depois de escolher o endereço?
R: Quando o parâmetro ST_VENDEDOR é 'A' ou 'P' e o vendedor foi preenchido automaticamente (pelo endereço ou pela regra de vendedor padrão), o campo fica bloqueado para edição manual, para impedir troca indevida do vendedor vinculado à venda.
Fonte: source/MPD002/UdmMPD002.pas:2013-2020 (TdmMPD002.tabPEDIDOCD_ENDERECOValidate)
Dúvidas em aberto (o código não responde)
- O que cada letra do parâmetro PARMFATUR.TP_CAMPOSBLOQPED (além de 'P', que bloqueia o campo Pessoa) controla? — O código da MPD002 só trata explicitamente a letra 'P' para travar CD_PESSOA; não há tratamento de outras letras neste módulo, então não é possível confirmar pelo código lido o que mais esse parâmetro configura.
- Qual é a regra completa de cálculo/seleção do frete por região/transportador (CALCULA_FRETEGERAL)? — A MPD002 apenas monta os parâmetros e interpreta o resultado (CalculaValorTransporte em UdmMPD002.pas); a lógica de cálculo em si está na procedure Firebird CALCULA_FRETEGERAL (Scripts/), não lida nesta sessão.
- Quais são exatamente as mensagens e condições de bloqueio retornadas por VERIFICA_BLOQUEIO e VERIFICA_ESTOQUENEGATIVOPEDIDO? — A MPD002 apenas exibe o texto (O_DS_BLOQUEIO/O_DS_MENSSAGEM) devolvido pelas procedures Firebird; as regras internas de cada motivo de bloqueio não foram lidas nesta sessão.
- Qual o cenário completo de uso da lógica de Substituição Tributária (CD_ITEMSTPED/CD_MOVSTPED) no botão Duplicar Pedido? — Trecho de btnDuplicarClick trata um fluxo bastante específico (aparentemente de um cliente/negócio particular) de geração de item de ICMS-ST e rateio de parcelas; o objetivo de negócio completo não fica claro apenas pelo código, sem contexto do parâmetro correspondente em MFA001.