CD_IMPNOTA - Extrato (Impressora de Nota Fiscal)
Tela de configuração: ADM012 - Parâmetros do Usuário
Localização: Aba "Impressoras do Usuário"
Campo: PARMUSUARIO.CD_IMPNOTA
Tipo: INTEGER (FK → IMPRESSORA.CD_IMPRESSORA)
Componente: edtCD_IMPNOTA
Label na UI: "Extrato" (internamente usado para impressora de Nota Fiscal)
Telas impactadas
| Tela | Descrição | Impacto |
|---|
| ADM012 | Parâmetros do Usuário | Cadastro direto do parâmetro |
| RFI001 | Emissão de Cupom/ECF | Busca a impressora padrão do cupom via CD_IMPNOTA; sem valor lança JException |
| LNF043 | Modelo 043 — Nota Fiscal | Resolve impressora deNota via JOIN com IMPRESSORA |
| jCaixa | Abertura/controle de caixa | Carrega impressora padrão do operador |
| ADM013 | Duplicação de Usuário | Copia CD_IMPNOTA do usuário origem |
Campos envolvidos
| Campo | Tabela | Tipo | Restrição |
|---|
CD_IMPNOTA | PARMUSUARIO | DOM_INTEGER | FK → IMPRESSORA.CD_IMPRESSORA |
Behaviour do campo
| O que faz | Detalhe |
|---|
| Armazena o código da impressora padrão para notas fiscais do usuário | Valor pesquisável via <F9> na tela ADM012 |
| Valida existência da impressora ao salvar | tabPARMUSUARIOCD_IMPNOTAValidate verifica se CD_IMPRESSORA existe na tabela IMPRESSORA |
Preenche DS_IMPNOTA (nome da impressora) automaticamente | Exibido como descrição ao lado do campo (join na query do data module) |
| É opcional (campo nullable) | Pode ficar vazio; a exception ocorre somente quando a rotina consumidora exige o valor |
Simulação passo a passo
- Acesse a tela ADM012 — Parâmetros do Usuário.
- Selecione a aba "Impressoras do Usuário".
- Localize o campo "Extrato" (
edtCD_IMPNOTA).
- Pressione
<F9> sobre o campo.
- Selecione a impressora desejada na grade (colunas: Nome / Código) e confirme.
- Salve o registro (
Ctrl+S ou botão Salvar).
Resultado esperado: O código da impressora é gravado em PARMUSUARIO.CD_IMPNOTA e a descrição (nome) é exibida automaticamente ao lado do campo. Se o código informado não existir na tabela IMPRESSORA, uma exceção "A Impressora não está Cadastrada [ADM008]!" é lançada.
Excecao / Importante: O label na tela diz "Extrato", mas o campo é consumido como impressora de Nota Fiscal (TP_IMPRESSORA = 'N') nas rotinas de emissão. O campo real de extrato é CD_IMPEXTRATO (registrado no mesmo data module, consulta com alias DS_IMPEXTRATO).
Rules de validação
| Regra | Efeito |
|---|
| Código vazio | DS_IMPNOTA é limpo; nenhuma exception no save (campo nullable) |
Código informado e inexistente em IMPRESSORA | JException → "A Impressora não está Cadastrada [ADM008]!" |
| FK constraint | RPARMUSUARIO_IMPNOTA impede gravação de código inexistente a nível de banco |
Procedures impactadas
| Rotina | Arquivo | Impacto |
|---|
edtCD_IMPNOTAKeyDown | source/ADM012/UADM012.pas:621 | Pesquisa de impressora via <F9> na ADM012 |
tabPARMUSUARIOCD_IMPNOTAValidate | source/ADM012/UdmADM012.pas:347 | Valida existência da impressora no momento do save |
Conecta_Impressora | source/LNF043/ULNF043.pas:325 | JOIN IMPRESSORA via CD_IMPNOTA para conectar impressora de nota |
Modelo_Cupom | source/RFI001/URFI001.pas:118 | JOIN IMPRESSORA via CD_IMPNOTA; lança exception se vazio |
CarregarCaixa | source/jCaixa/UCaixa.pas:312 | LEFT JOIN para carregar impressora padrão do caixa |
TfrmADM013.btnDuplicaUsuarioClick | source/ADM013/UADM013.pas:471 | Copia CD_IMPNOTA ao duplicar usuário |
| Procedure | Arquivo | Impacto |
|---|
RETORNA_IMPRESSORAUSUARIO | Scripts/RETORNA_IMPRESSORAUSUARIO.sql:22 | Retorna CD_IMPNOTA e nome da impressora de nota para TP_IMPRESSORA = 'N' |
Candidatas por uso da tabela PARMUSUARIO
As procedures abaixo acessam PARMUSUARIO mas não citam CD_IMPNOTA literalmente — impacto não confirmado:
CANCELA_NOTAFISCAL, CONTROLE_CAIXA, GERA_ETIQUETABALANCA, PERMISSAO_CAIXA, TRGPARMFATUR_BU, VALIDA_BLOQDESCMAXSUBGRUPO, VALIDA_CODIGOBARRA, VALIDA_LIBERACAOUSUARIO, VALIDA_MODELOBLOQUEIODIASATRASO, VALIDA_MODELOBLOQUEIOPCDESCMAX, VALIDA_MODELOBLOQUEIOVLLIMITE, VERIFICA_BLOQUEIO, VIEW_DOCUMENTOSBLOQUEADOS.
Parametros relacionados
| Parâmetro | Tela | Relação |
|---|
CD_IMPCHEQUE | ADM012 | Impressora padrão para cheques (mesma aba) |
CD_IMPRECIBO | ADM012 | Impressora padrão para recibos |
CD_IMPDUPLICATA | ADM012 | Impressora padrão para duplicatas |
CD_IMPETIQUETA | ADM012 | Impressora padrão para etiquetas |
CD_IMPPEDIDO | ADM012 | Impressora padrão para pedidos |
CD_IMPRECEITA | ADM012 | Impressora padrão para receitas médicas |
CD_IMPEXTRATO | ADM012 | Impressora padrão para extratos (corresponde funcionalmente ao label "Extrato" da UI) |
TP_CAIXA | ADM012 | Define o tipo de caixa; pode influenciar quais impressoras são utilizadas |