Pular para o conteúdo principal

NR_BEEP - Tipo de beep sonoro emitido pelas mensagens do checkout MNF017

Tela: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Faturamento → Opção 2 → campo BEEP de Mensagem [MNF017] (label lblNR_BEEP em UMFA001.dfm:3963-3976, combo cmbNR_BEEP em UMFA001.dfm:4643-4671, botão de teste btnNR_BEEP em UMFA001.dfm:4672-4685). Tabela: PARMFATUR.NR_BEEP Tipo: Numérico (inteiro) — DOM_INTEGER DEFAULT 0 NOT NULL no DDL (docs/schema/tables/PARMFATUR.sql:217); TIntegerField no client. Apesar de ser inteiro, o valor não é uma quantidade/frequência — é um código de tipo de som Windows passado direto para a API MessageBeep(UINT uType). Valor padrão: 0 (definido no DDL; o AfterInsert de tabPARMFATUR em UdmMFA001.pas:434-... não atribui default explicitamente — o banco assume 0 = "Aviso Sonoro Padrão" / MB_OK).

O que o parâmetro faz​

NR_BEEP define qual som do Windows será tocado pela função MsgBeep() do módulo MNF017 (Caixa/Checkout) ao exibir mensagens de erro, alerta, informação ou grave na barra de status edtMensagem do checkout. O valor é repassado diretamente para a função da Win32 API MessageBeep(iBeep), cujos códigos oficiais são:

ValorConstante WindowsSom associado (esquema "Sons" do Windows)
0MB_OK"Aviso Sonoro Padrão" (beep padrão do sistema)
16MB_ICONHAND / MB_ICONERROR"Parada Crítica" (Critical Stop)
48MB_ICONEXCLAMATION / MB_ICONWARNING"Exclamação"
64MB_ICONINFORMATION / MB_ICONASTERISK"Asterisco"

Os valores acima são exatamente os oferecidos pelo combo em MFA001 (UMFA001.dfm:4662-4666):

'Aviso Sonoro Padrão' 0
'Asterisco' 64
'Exclamação' 48
'Parada Crítica' 16

Uso em runtime​

No módulo MNF017, o parâmetro é lido no iniciar via BuscaParametros para a lista ParmFatur: TStrings (UMNF017.pas:234) e consumido em 31 pontos distintos de UMNF017.pas, UdmMNF017.pas e uMNF017ConfPedido.pas, sempre no padrão:

MsgBeep('<mensagem>', StrToInt(ParmFatur.Values['NR_BEEP']), '<tipo>', <tempo_ms>)

A função MsgBeep (implementada em UMNF017.pas:2550-2596) chama MessageBeep(iBeep) nos ramos sTipo = 'E' (Erro) e sTipo = 'G' (Grave/fonte aumentada). Nos ramos 'I' (Informação) e 'A' (Alerta padrão) a função não dispara MessageBeep — apenas altera cor do texto — mesmo que o parâmetro exista, ele só é ouvido em erros e mensagens graves.

Teste interativo em MFA001​

O botão btnNR_BEEP (ao lado do combo) executa, via btnNR_BEEPClick em UMFA001.pas:2512-2515:

procedure TfrmMFA001.btnNR_BEEPClick(Sender: TObject);
begin
MessageBeep(dmMFA001.tabPARMFATURNR_BEEP.AsInteger);
end;

O operador pode, portanto, testar o som escolhido sem sair da tela de parâmetros.

Telas impactadas​

MóduloCódigoPapel
Parâmetros de FaturamentoMFA001Produtora — cadastra/edita o valor no combo cmbNR_BEEP e permite testar o som via btnNR_BEEP
Caixa/Checkout (PDV)MNF017Única consumidora real — lê ParmFatur.Values['NR_BEEP'] e passa para MessageBeep em 31 chamadas de MsgBeep, cobrindo validações de item, quantidade, produto não cadastrado, preço, local de armazenagem, gravação de nota/pedido, etc.

Procedures impactadas​

Nenhuma stored procedure em Scripts/ referencia NR_BEEP (grep em Scripts/ retornou zero matches). A lógica é 100% client-side, ligada à API MessageBeep do Windows.

Campos envolvidos​

CampoTabelaPapel
NR_BEEPPARMFATURCódigo do som Windows (este parâmetro)
CD_EMPRESAPARMFATURChave do registro — cada empresa pode ter seu próprio tipo de beep

Comportamento​

Valor = 0 (Aviso Sonoro Padrão — default do DDL)​

AspectoComportamento
API WindowsMessageBeep(MB_OK) → toca o som "Beep Padrão" do tema
Experiência no caixaSom neutro/curto a cada erro ou aviso grave disparado por MsgBeep em MNF017
ObservaçãoÉ o valor assumido por padrão após INSERT (DDL DEFAULT 0 NOT NULL)

Resultado esperado: todas as chamadas de MsgBeep('<msg>', 0, 'E', ...) no checkout tocam o beep padrão do Windows.

Valor = 16 (Parada Crítica)​

AspectoComportamento
API WindowsMessageBeep(MB_ICONHAND) → toca o som "Parada Crítica" do tema
Experiência no caixaSom mais alto/alarmante a cada erro — sugerido quando o operador precisa parar e verificar

Resultado esperado: erros no PDV disparam o som associado a "Parada Crítica" no painel de sons do Windows.

Valor = 48 (Exclamação)​

AspectoComportamento
API WindowsMessageBeep(MB_ICONEXCLAMATION)
Experiência no caixaSom de exclamação, tipicamente mais breve que "Parada Crítica"

Resultado esperado: checkout emite o som de exclamação em cada erro/grave de MsgBeep.

Valor = 64 (Asterisco)​

AspectoComportamento
API WindowsMessageBeep(MB_ICONASTERISK)
Experiência no caixaSom de notificação/informação

Resultado esperado: checkout emite o som de asterisco em cada erro/grave de MsgBeep.

Valor inválido (ex.: 99)​

AspectoComportamento
MFA001O combo cmbNR_BEEP tem Style = csDropDownList (UMFA001.dfm:4649), portanto o usuário não consegue digitar um valor fora da lista. Só por edição SQL direta.
API WindowsMessageBeep documentada aceita qualquer UINT; valores fora de 0/16/32/48/64 geralmente tocam o som padrão (MB_OK) ou silêncio, conforme o tema do Windows

Simulação passo a passo​

Pré-requisitos:

  • Empresa corrente logada no ERP.
  • Windows com sons de sistema habilitados (Painel de Controle → Sons).
  • Caixa físico com alto-falante.
  1. Abra MFA001 → Parâmetros → Faturamento → Opção 1.
  2. Localize o campo "BEEP de Mensagem [MNF017]" (label lblNR_BEEP).
  3. Escolha, por exemplo, "Parada Crítica" no combo cmbNR_BEEP. Internamente isso grava NR_BEEP = 16 em PARMFATUR.
  4. Clique no botão btnNR_BEEP ao lado — o Windows toca imediatamente o som de "Parada Crítica" (chamada MessageBeep(16) em UMFA001.pas:2514).
  5. Salve (F6). O UPDATE gerado inclui NR_BEEP = :NR_BEEP (UdmMFA001.dfm:2867).
  6. Abra MNF017 e tente, por exemplo, digitar um código de produto inexistente. A função MsgBeep('O Produto não está Cadastrado [TPO001]!', 16, 'E', 1000) é chamada (UMNF017.pas:1432), o que:
    • Pinta edtMensagem em preto com texto vermelho;
    • Chama MessageBeep(16) → som "Parada Crítica";
    • Faz Sleep(1000) (1 segundo);
    • Limpa a mensagem e retorna true.

Resultado esperado: o operador do caixa escuta o som escolhido sempre que MsgBeep é chamada com tipo 'E' (erro) ou 'G' (grave) em MNF017 — alertando auditivamente mesmo quando ele não está olhando para a tela.


Interações com outros parâmetros​

Este parâmetro é isolado — não interage com outros campos de PARMFATUR. Seu efeito depende exclusivamente de:

  • Tema/Esquema de sons do Windows: se o usuário tiver desativado os sons do sistema (Painel → Sons → "Sem sons"), qualquer valor de NR_BEEP fica silencioso.
  • Hardware de áudio da estação: caixas sem auto-falante obviamente não emitem som.
  • Tipo de mensagem em MsgBeep: apenas os ramos 'E' (erro) e 'G' (grave/fonte aumentada) chamam MessageBeep(iBeep). Os ramos 'I' (info) e 'A' (alerta) só mudam cor, ignorando o valor configurado.

Referências no Código Fonte​

Delphi — MFA001 (cadastro do parâmetro)​

ArquivoLinhasPapel
source/MFA001/UMFA001.dfm3963-3976TLabel lblNR_BEEP com Caption = 'BEEP de Mensagem [MNF017]'
source/MFA001/UMFA001.dfm4643-4671TwwDBComboBox cmbNR_BEEP com DataField = 'NR_BEEP', Style = csDropDownList, Items = 'Aviso Sonoro Padrão'#9'0' / 'Asterisco'#9'64' / 'Exclamação'#9'48' / 'Parada Crítica'#9'16'
source/MFA001/UMFA001.dfm4672-4685TBitBtn btnNR_BEEP — botão de teste do som, OnClick = btnNR_BEEPClick
source/MFA001/UMFA001.pas531-533Declarações cmbNR_BEEP: TwwDBComboBox, btnNR_BEEP: TBitBtn, lblNR_BEEP: TLabel
source/MFA001/UMFA001.pas829Assinatura procedure btnNR_BEEPClick(Sender: TObject)
source/MFA001/UMFA001.pas2512-2515Corpo: MessageBeep(dmMFA001.tabPARMFATURNR_BEEP.AsInteger) — toca o som escolhido para teste
source/MFA001/UdmMFA001.pas274Declaração tabPARMFATURNR_BEEP: TIntegerField
source/MFA001/UdmMFA001.pas434-...tabPARMFATURAfterInsert não atribui default (depende do DDL DEFAULT 0)
source/MFA001/UdmMFA001.dfm286, 1923-1925, 2440, 2612, 2867, 3166SELECT/INSERT/UPDATE de PARMFATUR incluindo o campo e definição do TIntegerField

Delphi — MNF017 (consumidora real — 31 chamadas)​

ArquivoLinhasPapel
source/MNF017/UMNF017.pas107Assinatura function MsgBeep(sMensagem: String; iBeep: Integer; sTipo: String; iTempo: Integer): Boolean
source/MNF017/UMNF017.pas234Leitura do parâmetro para ParmFatur: TStrings via BuscaParametros(..., 'PARMFATUR', ..., 'CD_EMPRESA')
source/MNF017/UMNF017.pas480, 794, 840, 1025, 1044, 1054, 1182, 1211, 1300, 1416, 1432, 1524, 1530, 1571, 1583, 1601, 1614, 1853, 1871 (+ outras ~11 chamadas)Chamadas MsgBeep('<msg>', StrToInt(ParmFatur.Values['NR_BEEP']), '<tipo>', <tempo>) em validações de item, quantidade, produto, preço, local de armazenagem, cupom/pedido
source/MNF017/UMNF017.pas2550-2596Implementação de MsgBeep — chama MessageBeep(iBeep) em sTipo='E' (linha 2561) e sTipo='G' (linha 2581)
source/MNF017/UdmMNF017.pas1076MsgBeep('Produto não tem local de armazenagem [TPO001]!', StrToInt(ParmFatur.Values['NR_BEEP']), 'E', 1000)
source/MNF017/uMNF017ConfPedido.pas1218, 1222, 1895, 1899Mensagens de confirmação de gravação de nota/pedido (tipo 'I' — não toca beep, apenas lê o parâmetro por simetria de assinatura)

DDL​

  • docs/schema/tables/PARMFATUR.sql:217 — NR_BEEP DOM_INTEGER DEFAULT 0 NOT NULL.

SQL — Procedures​

Nenhuma stored procedure em Scripts/ referencia NR_BEEP (grep retornou zero matches). A regra inteira é executada no lado cliente, chamando diretamente a Win32 API MessageBeep.