Pular para o conteúdo principal

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_ABRECAIXA Valor padrão: S (Sim)

Telas impactadas​

TelaUsoDetalhe
MFC001 - Controle de CaixaLeituraBloqueia todos os campos se ST_ABRECAIXA <> 'S' para o usuário logado
MFC008 - Abertura de CaixaLeituraFiltra apenas usuários com ST_ABRECAIXA = 'S' na pesquisa de usuário
MFC020LeituraVerifica se o usuário controla caixa
MFC025LeituraConsulta ST_ABRECAIXA do usuário para validação

Campos envolvidos​

CampoTabelaTipoDescrição
ST_ABRECAIXAPARMUSUARIOCHAR(1)Habilita o controle de abertura de caixa para o usuário
ST_ABRECAIXAPARMFINANCCHAR(1)Habilita o controle de caixa no nível da empresa (parâmetro global)
TP_ABERTURAPARMFINANCCHAR(1)Tipo de abertura de caixa (V=Vários usuários, U=Um usuário, etc.)

Nota: O parâmetro ST_ABRECAIXA existe em duas tabelas: PARMUSUARIO (nível usuário, configurado em ADM012) e PARMFINANC (nível empresa, configurado em FNC001). Ambos precisam ser S para que o controle de caixa seja aplicado ao usuário.

Opções disponíveis​

S - Sim (Participa do Controle de Caixa)​

O que fazDetalhe
Habilita controle de caixa para o usuárioO 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 caixaMFC008 lista apenas usuários com ST_ABRECAIXA = 'S'

Simulação passo a passo​

  1. Acesse ADM012 - Parâmetros do Usuário e selecione o usuário desejado.
  2. No campo "Abre Caixa", escolha Sim.
  3. Salve o registro.
  4. Abra MFC001 - Controle de Caixa com esse usuário.
  5. Clique em Novo — os campos de lançamento ficam habilitados (desde que exista um turno de caixa aberto).
  6. 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 procedure CONTROLE_CAIXA retorna 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 fazDetalhe
Desabilita controle de caixa para o usuárioNenhuma validação de turno é aplicada a esse usuário
Todos os campos de caixa ficam bloqueadosEm MFC001, os campos ficam desabilitados ao clicar em Novo
Usuário não aparece na pesquisa de abertura de caixaMFC008 exclui automaticamente usuários com ST_ABRECAIXA = 'N'

Simulação passo a passo​

  1. Acesse ADM012 - Parâmetros do Usuário e selecione o usuário desejado.
  2. No campo "Abre Caixa", escolha Não.
  3. Salve o registro.
  4. Abra MFC001 - Controle de Caixa com esse usuário.
  5. 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:

  1. Nível empresa (PARMFINANC.ST_ABRECAIXA): Se for N, a procedure retorna sem validar — todos os usuários operam livremente, sem restrição de turno.
  2. 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​

RotinaArquivoDescrição
TdmADM012.tabPARMUSUARIOAfterInsertUdmADM012.pasAtribui valor padrão 'S' ao criar novo registro de parâmetros
TfrmMFC001.btnNovoClickUMFC001.pasConsulta ST_ABRECAIXA do usuário; bloqueia campos se <> 'S'
TfrmMFC008.edtCD_USUARIOKeyDownUMFC008.pasFiltra lookup de usuários com ST_ABRECAIXA = 'S'
TdmMFC008.tabABERTOSCD_USUARIOValidateUdmMFC008.pasValida ST_ABRECAIXA do usuário ao informar usuário na abertura
TfrmMFC025.chkST_LIQCHEQUEPENDENTEClickUMFC025.pasConsulta ST_ABRECAIXA do usuário para validação
iniciar (MFC020)UMFC020.pasVerifica se o usuário controla caixa

Procedures SQL com referência direta ao campo​

ProcedureArquivoDescrição
CONTROLE_CAIXAScripts/CONTROLE_CAIXA.sqlValida 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:

ProcedureArquivo
PERMISSAO_CAIXAScripts/PERMISSAO_CAIXA.sql
CANCELA_NOTAFISCALScripts/CANCELA_NOTAFISCAL.sql
GERA_ETIQUETABALANCAScripts/GERA_ETIQUETABALANCA.sql
RETORNA_IMPRESSORAUSUARIOScripts/RETORNA_IMPRESSORAUSUARIO.sql
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sql
VIEW_DOCUMENTOSBLOQUEADOSScripts/VIEW_DOCUMENTOSBLOQUEADOS.sql