ST_ABRECAIXA - Habilita Controle de Abertura de Caixa por Usuário
Tela de configuração: ADM012 - Parâmetros do Usuário Localização: Parâmetros do Usuário → Campo "Abre Caixa" Tabela:
PARMUSUARIO.ST_ABRECAIXAValor padrão:S(Sim)
Telas impactadas
| Tela | Uso | Detalhe |
|---|---|---|
| MFC001 - Controle de Caixa | Leitura | Bloqueia todos os campos se ST_ABRECAIXA <> 'S' para o usuário logado |
| MFC008 - Abertura de Caixa | Leitura | Filtra apenas usuários com ST_ABRECAIXA = 'S' na pesquisa de usuário |
| MFC020 | Leitura | Verifica se o usuário controla caixa |
| MFC025 | Leitura | Consulta ST_ABRECAIXA do usuário para validação |
Campos envolvidos
| Campo | Tabela | Tipo | Descrição |
|---|---|---|---|
ST_ABRECAIXA | PARMUSUARIO | CHAR(1) | Habilita o controle de abertura de caixa para o usuário |
ST_ABRECAIXA | PARMFINANC | CHAR(1) | Habilita o controle de caixa no nível da empresa (parâmetro global) |
TP_ABERTURA | PARMFINANC | CHAR(1) | Tipo de abertura de caixa (V=Vários usuários, U=Um usuário, etc.) |
Nota: O parâmetro
ST_ABRECAIXAexiste em duas tabelas:PARMUSUARIO(nível usuário, configurado em ADM012) ePARMFINANC(nível empresa, configurado em FNC001). Ambos precisam serSpara que o controle de caixa seja aplicado ao usuário.
Opções disponíveis
S - Sim (Participa do Controle de Caixa)
| O que faz | Detalhe |
|---|---|
| Habilita controle de caixa para o usuário | O sistema verifica se existe turno aberto antes de permitir lançamentos |
Requer PARMFINANC.ST_ABRECAIXA = 'S' | O parâmetro da empresa também precisa estar ativo |
| Usuário aparece na pesquisa de abertura de caixa | MFC008 lista apenas usuários com ST_ABRECAIXA = 'S' |
Simulação passo a passo
- Acesse ADM012 - Parâmetros do Usuário e selecione o usuário desejado.
- No campo "Abre Caixa", escolha Sim.
- Salve o registro.
- Abra MFC001 - Controle de Caixa com esse usuário.
- Clique em Novo — os campos de lançamento ficam habilitados (desde que exista um turno de caixa aberto).
- Em MFC008 - Abertura de Caixa, o usuário aparece na lista de usuários disponíveis para abertura de turno.
Resultado esperado: O usuário participa ativamente do controle de caixa — pode abrir turnos e realizar lançamentos, sujeito às regras de turno aberto.
Exceção / Importante: Mesmo com
ST_ABRECAIXA = 'S', o usuário precisa ter um turno de caixa aberto (via MFC008) para realizar lançamentos. Caso não haja turno aberto, a procedureCONTROLE_CAIXAretorna a mensagem "O Caixa não está aberto!" ou "O Caixa não está aberto para o usuário X!", bloqueando a operação.
N - Não (Não Participa do Controle de Caixa)
| O que faz | Detalhe |
|---|---|
| Desabilita controle de caixa para o usuário | Nenhuma validação de turno é aplicada a esse usuário |
| Todos os campos de caixa ficam bloqueados | Em MFC001, os campos ficam desabilitados ao clicar em Novo |
| Usuário não aparece na pesquisa de abertura de caixa | MFC008 exclui automaticamente usuários com ST_ABRECAIXA = 'N' |
Simulação passo a passo
- Acesse ADM012 - Parâmetros do Usuário e selecione o usuário desejado.
- No campo "Abre Caixa", escolha Não.
- Salve o registro.
- Abra MFC001 - Controle de Caixa com esse usuário.
- Clique em Novo — todos os campos permanecem desabilitados; não é possível realizar lançamentos de caixa.
Resultado esperado: O usuário fica completamente excluído do módulo de caixa — não pode abrir turnos, não aparece na lista de abertura e não realiza lançamentos em MFC001.
Regra Geral de Funcionamento
O controle de caixa obedece a uma lógica de dois níveis, implementada na procedure CONTROLE_CAIXA:
- Nível empresa (
PARMFINANC.ST_ABRECAIXA): Se forN, a procedure retorna sem validar — todos os usuários operam livremente, sem restrição de turno. - Nível usuário (
PARMUSUARIO.ST_ABRECAIXA): Se a empresa controla caixa (PARMFINANC.ST_ABRECAIXA = 'S'), o sistema verifica o parâmetro do usuário:S→ O usuário está sujeito às regras de turno (precisa de caixa aberto).- Qualquer outro valor → Nenhuma validação de turno é feita para esse usuário (ele "não participa" do caixa).
Além disso, a procedure PERMISSAO_CAIXA valida o tipo de operação (TP_CAIXA do usuário — configurado também em ADM012) para verificar se o usuário pode realizar operações específicas de caixa (entrada, saída, etc.).
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Descrição |
|---|---|---|
TdmADM012.tabPARMUSUARIOAfterInsert | UdmADM012.pas | Atribui valor padrão 'S' ao criar novo registro de parâmetros |
TfrmMFC001.btnNovoClick | UMFC001.pas | Consulta ST_ABRECAIXA do usuário; bloqueia campos se <> 'S' |
TfrmMFC008.edtCD_USUARIOKeyDown | UMFC008.pas | Filtra lookup de usuários com ST_ABRECAIXA = 'S' |
TdmMFC008.tabABERTOSCD_USUARIOValidate | UdmMFC008.pas | Valida ST_ABRECAIXA do usuário ao informar usuário na abertura |
TfrmMFC025.chkST_LIQCHEQUEPENDENTEClick | UMFC025.pas | Consulta ST_ABRECAIXA do usuário para validação |
iniciar (MFC020) | UMFC020.pas | Verifica se o usuário controla caixa |
Procedures SQL com referência direta ao campo
| Procedure | Arquivo | Descrição |
|---|---|---|
CONTROLE_CAIXA | Scripts/CONTROLE_CAIXA.sql | Valida turno de caixa aberto: primeiro lê PARMFINANC.ST_ABRECAIXA (empresa), depois PARMUSUARIO.ST_ABRECAIXA (usuário) |
Candidatas por uso da tabela
As procedures abaixo referenciam a tabela PARMUSUARIO, mas não citam o campo ST_ABRECAIXA diretamente. Impacto funcional direto não confirmado:
| Procedure | Arquivo |
|---|---|
PERMISSAO_CAIXA | Scripts/PERMISSAO_CAIXA.sql |
CANCELA_NOTAFISCAL | Scripts/CANCELA_NOTAFISCAL.sql |
GERA_ETIQUETABALANCA | Scripts/GERA_ETIQUETABALANCA.sql |
RETORNA_IMPRESSORAUSUARIO | Scripts/RETORNA_IMPRESSORAUSUARIO.sql |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql |
VIEW_DOCUMENTOSBLOQUEADOS | Scripts/VIEW_DOCUMENTOSBLOQUEADOS.sql |