Pular para o conteúdo principal

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​

  1. 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)
  2. 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​

CampoCondiçãoMensagemFonte
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 (ver regras/MPD002/MPD002.R001.md)
  • MPD002.R002 (ver regras/MPD002/MPD002.R002.md)
  • MPD002.R003 (ver regras/MPD002/MPD002.R003.md)
  • MPD002.R004 (ver regras/MPD002/MPD002.R004.md)
  • MPD002.R005 (ver regras/MPD002/MPD002.R005.md)
  • MPD002.R006 (ver regras/MPD002/MPD002.R006.md)
  • MPD002.R007 (ver regras/MPD002/MPD002.R007.md)
  • MPD002.R008 (ver regras/MPD002/MPD002.R008.md)
  • MPD002.R009 (ver regras/MPD002/MPD002.R009.md)
  • MPD002.R010 (ver regras/MPD002/MPD002.R010.md)
  • MPD002.R011 (ver regras/MPD002/MPD002.R011.md)
  • MPD002.R012 (ver regras/MPD002/MPD002.R012.md)
  • MPD002.R013 (ver regras/MPD002/MPD002.R013.md)
  • MPD002.R014 (ver regras/MPD002/MPD002.R014.md)
  • MPD002.R015 (ver regras/MPD002/MPD002.R015.md)
  • MPD002.R016 (ver regras/MPD002/MPD002.R016.md)
  • MPD002.R017 (ver regras/MPD002/MPD002.R017.md)
  • MPD002.R018 (ver regras/MPD002/MPD002.R018.md)
  • MPD002.R019 (ver regras/MPD002/MPD002.R019.md)
  • MPD002.R020 (ver regras/MPD002/MPD002.R020.md)
  • MPD002.R021 (ver regras/MPD002/MPD002.R021.md)
  • MPD002.R022 (ver regras/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.