CD_LEITOR - Código do Leitor de Código de Barras
Tela de configuração: ADM012 — Parâmetros do Usuário
Localização: Aba "Parâmetros do Usuário"
Tabela:PARMUSUARIO.CD_LEITOR
Tipo:INTEGER(DOM_INTEGER)
FK:RPARMUSUARIO_PARMCODBARRASERIAL→PARMCODBARRASERIAL(CD_LEITOR)
Lookup:<F9>— pesquisa na tabelaPARMCODBARRASERIAL
Componente:edtCD_LEITOR(TDBEdit)
Telas impactadas
| Tela | Descrição | Impacto |
|---|---|---|
| ADM012 | Parâmetros do Usuário | Tela principal de configuração do campo |
| ADM017 | Cadastro de Leitores (PARMCODBARRASERIAL) | Tela onde os leitores são cadastrados; registro deve existir aqui antes de ser vinculado no ADM012 |
| ADM013 | Duplicação de Usuário | Ao duplicar um usuário, o CD_LEITOR é copiado para o novo registro |
Campos envolvidos
| Campo | Tabela | Tipo | Observação |
|---|---|---|---|
CD_LEITOR | PARMUSUARIO | INTEGER | FK para PARMCODBARRASERIAL |
DS_LEITOR | PARMUSUARIO | VARCHAR | Campo descritivo (populado via JOIN, não editável no ADM012) |
CD_LEITOR | PARMCODBARRASERIAL | INTEGER PK | Tabela de origem dos leitores válidos |
DS_LEITOR | PARMCODBARRASERIAL | VARCHAR | Descrição do leitor |
DS_PORTA | PARMCODBARRASERIAL | VARCHAR | Porta do leitor |
Opções disponíveis
| O que faz | Detalhe |
|---|---|
| Editável | Campo livre para digitação de código ou seleção via <F9> |
| Obrigatório | Não — pode ficar vazio (campo nullable no schema) |
| Validação | Se preenchido, o código deve existir em PARMCODBARRASERIAL, senão gera exceção |
| FK | RPARMUSUARIO_PARMCODBARRASERIAL → PARMCODBARRASERIAL(CD_LEITOR) |
Vinculação a um leitor (valor preenchido)
Simulação passo a passo
- Acesse
[ADM012]— Parâmetros do Usuário. - Selecione o registro do usuário desejado.
- No campo Código do Leitor, pressione
<F9>. - Na tela de pesquisa, localize o leitor desejado pela descrição (ex: "Leitor USB Logitech 1200").
- Selecione o leitor e confirme.
- O campo é preenchido com o código do leitor (ex:
1) e a descrição correspondente aparece na grade. - Salve o registro.
Resultado esperado: O usuário passa a ter um leitor de código de barras associado. Processos de leitura de código que consultam este parâmetro usarão o leitor configurado.
Exceção / Importante: O leitor selecionado deve estar previamente cadastrado na tela
ADM017(Cadastro de Leitores). Se o código digitado ou selecionado não existir emPARMCODBARRASERIAL, o sistema gera a exceção: "O Leitor não está Cadastrado [ADM017]!".
Leitor não configurado (campo vazio)
Simulação passo a passo
- Acesse
[ADM012]— Parâmetros do Usuário. - Selecione o registro do usuário desejado.
- Limpe o campo Código do Leitor deixando-o em branco.
- Salve o registro.
Resultado esperado: O usuário fica sem leitor associado. Operações que dependem de leitor usarão o leitor padrão do sistema ou não terão restrição de dispositivo.
Duplicação de usuário: Ao duplicar um usuário via
ADM013, o valor deCD_LEITORé copiado integralmente para o novo registro. Se o usuário original tinha leitor configurado, o novo também terá.
Regra Geral de Validação
Se CD_LEITOR preenchido:
→ SELECT DS_LEITOR FROM PARMCODBARRASERIAL WHERE CD_LEITOR = :valor
→ Se encontrou: preenche campo descritivo DS_LEITOR
→ Se não encontrou: Raise Exception "O Leitor não está Cadastrado [ADM017]!"
Se CD_LEITOR vazio:
→ Limpa campo descritivo DS_LEITOR
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Ação |
|---|---|---|
edtCD_LEITORKeyDown | source/ADM012/UADM012.pas:775 | Abre pesquisa <F9> em PARMCODBARRASERIAL para selecionar leitor |
tabPARMUSUARIOCD_LEITORValidate | source/ADM012/UdmADM012.pas:467 | Valida existência do leitor em PARMCODBARRASERIAL, preenche DS_LEITOR ou gera exceção |
TfrmADM013.btnDuplicaUsuarioClick | source/ADM013/UADM013.pas:472 | Copia CD_LEITOR ao duplicar usuário |
Candidatas por uso da tabela (sem referência direta ao campo em Scripts/)
As procedures abaixo utilizam a tabela PARMUSUARIO, mas não foi encontrada referência direta ao campo CD_LEITOR nos scripts SQL do repositório. Devem ser validadas caso a contexto de leitura do parâmetro seja expandido:
CANCELA_NOTAFISCAL(Scripts/CANCELA_NOTAFISCAL.sql)CONTROLE_CAIXA(Scripts/CONTROLE_CAIXA.sql)GERA_ETIQUETABALANCA(Scripts/GERA_ETIQUETABALANCA.sql)PERMISSAO_CAIXA(Scripts/PERMISSAO_CAIXA.sql)RETORNA_IMPRESSORAUSUARIO(Scripts/RETORNA_IMPRESSORAUSUARIO.sql)VALIDA_CODIGOBARRA(Scripts/VALIDA_CODIGOBARRA.sql— usaPARMUSUARIOno contexto de validação; pode lerCD_LEITORem runtime)VALIDA_LIBERACAOUSUARIO(Scripts/VALIDA_LIBERACAOUSUARIO.sql)VERIFICA_BLOQUEIO(Scripts/VERIFICA_BLOQUEIO.sql)VIEW_DOCUMENTOSBLOQUEADOS(Scripts/VIEW_DOCUMENTOSBLOQUEADOS.sql)
Tabela Comparativa Resumida
| Configuração | Comportamento |
|---|---|
| Vazio | Nenhum leitor vinculado ao usuário; processos usam leitor padrão ou não restringem dispositivo |
| Preenchido | Leitor específico vinculado; deve existir em ADM017; validação obrigatória no save |