ST_PERMISSAOOFICINA — Permissao de Acesso a Oficina
Tela de configuracao: ADM012 — Parametros do Usuario
Aba: Oficina
Componente:chklstST_PERMISSAOOFICIONA(CheckList)
Tabela:PARMUSUARIO.ST_PERMISSAOOFICINA
Tipo:VARCHAR(240)
Valor padrao no schema:'ND'
Valor padrao na insercao:'N'(Sem acesso a oficina)
Este parametro armazena uma cadeia de caracteres onde cada letra representa uma permissao especifica do modulo de Oficina. O usuario final marca/desmarca opcoes em um checklist na aba "Oficina" da tela ADM012.
Telas impactadas
| Tela | Modulo | Impacto |
|---|---|---|
| MOF001 | Oficina | Verifica 'N', 'B', 'A', 'C' para habilitar/bloquear operacoes na oficina |
| MPD002 | Pedidos de Venda | Verifica 'D' para permitir cancelamento de pedido |
| MPD020 | Pedidos (DataModule) | Funcao PermiteCancelar verifica 'D' |
| MPD097 | Pedidos (DataModule) | Verifica 'R' para ativar ST_PERMITEREMOCAO |
| ADM013 | Duplicacao de Usuario | Copia o valor ao duplicar usuario |
Campos envolvidos
| Campo | Tabela | Tipo | Padrao Schema | Padrao Insert |
|---|---|---|---|---|
ST_PERMISSAOOFICINA | PARMUSUARIO | VARCHAR(240) | 'ND' | 'N' |
Opcoes disponiveis
Visao geral das permissoes
| Letra | O que faz | Comportamento |
|---|---|---|
| N | Sem acesso a oficina | Bloqueia todo acesso ao modulo de oficina. Mutuamente exclusivo com as demais opcoes. |
| B | Manter Servicos | Permite inclusao/alteracao de ordens de servico. |
| A | Manter Pecas | Permite inclusao/alteracao de pecas na oficina. |
| C | Reabrir OS | Permite reabertura de ordens de servico. |
| D | Cancelar Pedidos | Permite cancelar pedidos de venda (incluindo quando e o ultimo item do pedido). |
| R | Permitir Remocao | Permite remocao de itens do pedido. |
N — Sem acesso a oficina (bloqueio total)
| O que faz | Detalhe |
|---|---|
| Comportamento | Bloqueia completamente o acesso do usuario ao modulo de oficina (MOF001). |
| Editavel / Bloqueado | Mutuamente exclusivo: se marcado, nenhuma outra opcao pode estar ativa. |
| Exige | Nenhuma outra permissao de oficina marcada (B, A, C, D, R). |
| Restricao | Validacao no BeforePost rejeita a gravacao se 'N' estiver marcado junto com qualquer outra opcao. |
Simulacao passo a passo
- Acesse ADM012 — Parametros do Usuario.
- Selecione a aba "Oficina".
- Marque a opcao "Sem acesso a oficina" no checklist.
- Desmarque todas as demais opcoes (B, A, C, D, R).
- Salve o registro.
Resultado esperado: O usuario correspondente nao tera acesso ao modulo de oficina. Ao tentar abrir MOF001, o acesso e negado.
Excecao / Importante: Se
'N'estiver marcada e qualquer outra opcao (B, A, C, D, R) tambem estiver marcada, o sistema exibe o erro: "Caso o Parametro 'Sem acesso a oficina' esteja Marcado e necessario que os seguintes Parametros Estejam Desmarcados." e nao permite salvar.
B — Manter Servicos
| O que faz | Detalhe |
|---|---|
| Comportamento | Permite ao usuario manter (incluir/alterar) ordens de servico na oficina. |
| Editavel / Bloqueado | Editavel. Nao pode coexistir com 'N'. |
| Exige | 'N' desmarcado. Pelo menos uma permissao (B, A, C, D ou R) deve estar ativa. |
| Restricao | Se 'N' estiver desmarcado, ao menos uma das demais opcoes deve estar marcada. |
Simulacao passo a passo
- Acesse ADM012 — Parametros do Usuario.
- Selecione a aba "Oficina".
- Desmarque a opcao "Sem acesso a oficina" (
'N'). - Marque a opcao "Manter Servicos" (
'B'). - Salve o registro (
<Ctrl+S>ou botao Salvar).
Resultado esperado: O usuario podera incluir e alterar ordens de servico na oficina (MOF001). Internamente, stManterServicos sera definido como True.
A — Manter Pecas
| O que faz | Detalhe |
|---|---|
| Comportamento | Permite ao usuario manter (incluir/alterar) pecas na oficina. |
| Editavel / Bloqueado | Editavel. Nao pode coexistir com 'N'. |
| Exige | 'N' desmarcado. |
| Restricao | Pode ser combinado com B, C, D, R. |
Simulacao passo a passo
- Acesse ADM012 — Parametros do Usuario.
- Selecione a aba "Oficina".
- Desmarque a opcao "Sem acesso a oficina" (
'N'). - Marque a opcao "Manter Pecas" (
'A'). - Salve o registro (
<Ctrl+S>ou botao Salvar).
Resultado esperado: O usuario podera incluir e alterar pecas na oficina. Internamente, stManterPecas sera definido como True.
C — Reabrir Ordens de Servico
| O que faz | Detalhe |
|---|---|
| Comportamento | Permite ao usuario reabrir ordens de servico na oficina. |
| Editavel / Bloqueado | Editavel. Nao pode coexistir com 'N'. |
| Exige | 'N' desmarcado. |
| Restricao | Pode ser combinado com B, A, D, R. |
Simulacao passo a passo
- Acesse ADM012 — Parametros do Usuario.
- Selecione a aba "Oficina".
- Desmarque a opcao "Sem acesso a oficina" (
'N'). - Marque a opcao "Reabrir OS" (
'C'). - Salve o registro (
<Ctrl+S>ou botao Salvar).
Resultado esperado: O usuario podera reabrir ordens de servico. Internamente, stReabrir sera definido como True.
D — Cancelar Pedidos
| O que faz | Detalhe |
|---|---|
| Comportamento | Permite ao usuario cancelar pedidos de venda. Sem 'D', a acao de cancelar o ultimo item do pedido e rejeitada com erro. |
| Editavel / Bloqueado | Editavel. Nao pode coexistir com 'N'. |
| Exige | 'N' desmarcado. |
| Restricao | Se ausente e o usuario tenta cancelar o ultimo item de um pedido, o sistema exibe: "O usuario nao possui permissao para cancelar pedidos. Verifique! [ADM012]". |
Simulacao passo a passo
- Acesse ADM012 — Parametros do Usuario.
- Selecione a aba "Oficina".
- Desmarque a opcao "Sem acesso a oficina" (
'N'). - Marque a opcao "Cancelar Pedidos" (
'D'). - Salve o registro (
<Ctrl+S>ou botao Salvar). - Teste: Na tela de pedidos (MPD002), tente excluir o ultimo item — o sistema deve solicitar confirmacao e permitir o cancelamento.
Resultado esperado: O usuario podera cancelar pedidos quando for o ultimo item (o que cancela o pedido inteiro). A funcao PermiteCancelar() em MPD020 retorna True.
Excecao / Importante: Sem
'D', ao tentar cancelar o ultimo item do pedido, o sistema dispara a excecao: "O usuario nao possui permissao para cancelar pedidos. Verifique! [ADM012]" (fonte:MPD002btnExcluirClick).
R — Permitir Remocao de Itens
| O que faz | Detalhe |
|---|---|
| Comportamento | Habilita a remocao de itens do pedido. Ativa ParmUsuario.ST_PERMITEREMOCAO = True. |
| Editavel / Bloqueado | Editavel. Nao pode coexistir com 'N'. |
| Exige | 'N' desmarcado. |
| Restricao | Detectado via AnsiContainsText(Resultado, 'R') no MPD097. |
Simulacao passo a passo
- Acesse ADM012 — Parametros do Usuario.
- Selecione a aba "Oficina".
- Desmarque a opcao "Sem acesso a oficina" (
'N'). - Marque a opcao "Permitir Remocao" (
'R'). - Salve o registro (
<Ctrl+S>ou botao Salvar).
Resultado esperado: O usuario podera remover itens de pedidos. O parametro interno ParmUsuario.ST_PERMITEREMOCAO sera definido como True.
Regras de Validacao
Exclusividade de 'N'
Regra aplicada no BeforePost de PARMUSUARIO (UdmADM012.pas:284-316):
- Se
'N'(Sem acesso) estiver marcado: Todas as demais opcoes (B, A, C, D, R) devem estar desmarcadas. O sistema rejeita a gravacao caso contrario. - Se
'N'estiver desmarcado: Pelo menos uma das demais opcoes (B, A, C, D, R) deve estar marcada. O sistema rejeita a gravacao se nenhuma estiver ativa.
Exemplos de combinacoes
| Combinacao | Descricao | Situacao |
|---|---|---|
N | Sem acesso a oficina | Valida — default na insercao |
D | Apenas cancelamento de pedidos | Valida |
BAD | Manter servicos + Manter pecas + Cancelar pedidos | Valida |
BACDR | Todas as permissoes ativas | Valida |
CR | Reabrir OS + Permitir remocao | Valida |
ND | 'N' (sem acesso) + 'D' (cancelar) | Invalida — mutuamente exclusivos |
NBA | 'N' com outras permissoes ativas | Invalida — 'N' exige exclusividade |
`` (vazio, sem 'N') | Nenhuma permissao ativa | Invalida — sem 'N', ao menos uma e obrigatoria |
Procedures impactadas
Rotinas Delphi com referencia direta ao campo
| Rotina | Arquivo | Uso |
|---|---|---|
TdmADM012.tabPARMUSUARIOAfterInsert | source/ADM012/UdmADM012.pas:253 | Define valor padrao 'N' na insercao |
TdmADM012.tabPARMUSUARIOBeforePost | source/ADM012/UdmADM012.pas:284-316 | Valida exclusividade de 'N' vs demais opcoes no checklist |
Verifica_Permissoes | source/ADM012/UdmADM012.pas:604 | Le o valor do campo para sincronizar o checklist na tela |
TfrmADM013.btnDuplicaUsuarioClick | source/ADM013/UADM013.pas:474 | Copia o valor ao duplicar usuario |
retornaPermissaoUsuario | source/MOF001/UdmMOF001.pas:6099 | Consulta 'N', 'B', 'A', 'C' para definir permissoes da oficina (stOfi, stManterServicos, stManterPecas, stReabrir) |
TfrmMPD002.btnExcluirClick | source/MPD002/UMPD002.pas:1747 | Verifica 'D' antes de cancelar pedido; lanca excecao se ausente |
retornaPermissaoUsuario | source/MPD002/UdmMPD002.pas:5109 | Consulta 'D' para definir stPermissaoCancelamento |
TdmMPD020.PermiteCancelar | source/MPD020/UdmMPD020.pas:2994 | Usa POSITION('D' IN ST_PERMISSAOOFICINA) > 0 para validar cancelamento |
Busca_Parametros | source/MPD097/UdmMPD097.pas:522 | Consulta 'R' para ativar ST_PERMITEREMOCAO |
RParmUsuario (record) | source/MEQ072/UdmMEQ072.pas:40 | Declara campo no record de parametro do usuario |
RParmUsuario (record) | source/MPD097/UdmMPD097.pas:43 | Declara campo no record de parametro do usuario |
Referencias SQL diretas ao campo em Scripts/
Nao foram encontradas referencias diretas ao campo ST_PERMISSAOOFICINA nos scripts SQL do diretorio Scripts/.
Candidatas por uso da tabela PARMUSUARIO
As rotinas abaixo usam a tabela PARMUSUARIO mas nao referenciam ST_PERMISSAOOFICINA literalmente. Validar antes de afirmar impacto direto:
CANCELA_NOTAFISCAL.sql, CONTROLE_CAIXA.sql, GERA_ETIQUETABALANCA.sql, PERMISSAO_CAIXA.sql, RETORNA_IMPRESSORAUSUARIO.sql, TRGPARMFATUR_BU.sql, VALIDA_BLOQDESCMAXSUBGRUPO.sql, VALIDA_CODIGOBARRA.sql, VALIDA_LIBERACAOUSUARIO.sql, VALIDA_MODELOBLOQUEIODIASATRASO.sql, VALIDA_MODELOBLOQUEIOPCDESCMAX.sql, VALIDA_MODELOBLOQUEIOVLLIMITE.sql, VERIFICA_BLOQUEIO.sql, VIEW_DOCUMENTOSBLOQUEADOS.sql.