TP_BLOQUEIO — Liberação para Vendedores
Tela de configuração: OFI001 — Parâmetros de Oficina Localização: Aba Parâmetros → campo "Liberação para Vendedores" Tabela:
PARMOFICINA.TP_BLOQUEIOTipo:CHAR(1),NOT NULL, valor padrãoGComponente:cmbTP_BLOQUEIO(combobox)
Telas impactadas
| Tela | Descrição |
|---|---|
| MOF001 | Ordem de Serviço — valida preço, quantidade, data de emissão e inserção de itens duplicados |
| MOF004 | Requisição de Oficina — valida alteração de data de emissão |
| MOF008 | Autorização de OS — exibe OS com status bloqueado (TP_BLOQUEIO IN ('F','A') na tabela ORDEMSERVICO) |
Campos envolvidos
| Campo / Variável | Onde é lido | Papel |
|---|---|---|
PARMOFICINA.TP_BLOQUEIO | Busca_Parametros em UdmMOF001.pas | Carregado para iTP_BLOQUEIO ao abrir MOF001 |
dmMOF001.iTP_BLOQUEIO | Múltiplos validate/event em UdmMOF001.pas | Variável em memória usada nas validações |
ParmOficina.Values['TP_BLOQUEIO'] | tabORDEMSERVICODT_EMISSAOValidate, cdsREQUISICAOOFICINADT_EMISSAOValidate | Leitura direta do dicionário de parâmetros |
Opções disponíveis
G — Bloqueio Geral (padrão)
| O que faz | Detalhe |
|---|---|
| Travamento de campos em itens já inclusos | Quando ST_ALTERAPEDIDO = 'S' ou 'T', campos de preço e quantidade de itens/serviços/consumos já presentes na OS ficam read-only |
| Bloqueio de inserção duplicada via código de barras | Se o produto já existe na OS e o usuário não é autorizador, a inserção é bloqueada |
| Não interfere em data de emissão | Diferente da opção V, a data de emissão pode ser alterada livremente |
Simulação passo a passo
- Acesse OFI001 → aba Parâmetros → campo Liberação para Vendedores → selecione G — Bloqueio Geral.
- Salve o parâmetro.
- Abra MOF001 e crie ou edite uma Ordem de Serviço.
- Insira um item de consumo ou serviço na OS.
- Salve a OS.
- Reabra a OS e clique no item já inserido.
- Observe que os campos de valor unitário, valor total, tabela de preço, desconto e quantidade do item existente estão bloqueados (read-only).
- Tente inserir o mesmo produto novamente pelo código de barras (quando
ST_ALTERAPEDIDO='S'ou'T'e o usuário não é autorizador): a inserção será bloqueada.
Exceção / Importante: Usuários com perfil de autorizador (
ST_AUTORIZADOR = 'S'ou cadastro ativo na tabelaAUTORIZADOR) têm o bloqueio ignorado — os campos permanecem editáveis mesmo para itens já inclusos.
V — Bloqueio de OS/Produto
| O que faz | Detalhe |
|---|---|
| Valida redução de preço em tempo real | Se o valor unitário novo for menor que o valor auxiliar (valor original carregado), lança exceção e impede a alteração |
| Valida redução de quantidade | Se a nova quantidade × valor unitário resultar em valor menor que o valor auxiliar, lança exceção |
| Bloqueia alteração de data de emissão | Usuários não autorizadores não podem alterar a data de emissão de OS nem de requisição de oficina |
| Valida valor de consumo | Se o valor total do consumo exceder o valor calculado pela função CALCULA_VALOR, bloqueia |
| Autorizadores passam livre | Usuários autorizadores (ST_AUTORIZADOR = 'S') ignoram todas as restrições |
Simulação passo a passo
- Acesse OFI001 → aba Parâmetros → campo Liberação para Vendedores → selecione V — Bloqueio de OS/Produto.
- Salve o parâmetro.
- Abra MOF001 e crie ou edite uma OS com itens.
- Tente reduzir o valor unitário de um serviço ou item de consumo para um valor menor que o original carregado.
- O sistema exibe a mensagem: "Não foi possível diminuir o valor do item/serviço. Verifique! [OFI001]" e reverte a alteração.
- Tente alterar a data de emissão da OS (como usuário não autorizador).
- O sistema exibe: "Não é possível a alteração da data de emissão para usuários não autorizadores. Verifique! [OFI001]" e reverte a alteração.
- Repita o teste em MOF004 (Requisição de Oficina) ao alterar a data de emissão — comportamento idêntico.
Exceção / Importante: Se o usuário estiver cadastrado como autorizador (registro ativo na tabela
AUTORIZADORcomST_ATIVO = 'S'), todas as restrições deVsão ignoradas. A verificação é feita porSELECT ST_ATIVO FROM AUTORIZADOR WHERE CD_AUTORIZADOR = :cd_usuario.
Regra Geral de Autorização
Independentemente da opção escolhida (G ou V), o sistema verifica se o usuário logado é autorizador:
- Se
ST_AUTORIZADOR = 'S'(configurado viaADM004 — Acesso): todas as restrições de bloqueio deste parâmetro são ignoradas. - Se não for autorizador: aplica-se a restrição conforme a opção selecionada.
Além disso, o parâmetro ST_ALTERAPEDIDO (configurado em MFA001 — Parâmetros de Faturamento, aba Ambos) determina se o bloqueio geral (G) se aplica:
'S'(Somente na venda) ou'T'(Compra e venda): o bloqueio de campos read-only é ativado.- Qualquer outro valor: os campos permanecem livres, mesmo com
TP_BLOQUEIO = 'G'.
Tabela Comparativa Resumida
| Aspecto | G — Bloqueio Geral | V — Bloqueio de OS/Produto |
|---|---|---|
| Campos read-only em itens já inclusos | Sim (quando ST_ALTERAPEDIDO ∈ {'S','T'}) | Não |
| Bloqueia redução de preço em tempo real | Não | Sim |
| Bloqueia alteração de data de emissão | Não | Sim (usuários não autorizadores) |
| Bloqueia inserção duplicada via código de barras | Sim (quando ST_ALTERAPEDIDO ∈ {'S','T'}) | Não |
| Autorizadores ignoram restrição | Sim | Sim |
| Valor padrão | G | — |
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Comentário |
|---|---|---|---|
Busca_Parametros | UdmMOF001.pas | 670 | Lê TP_BLOQUEIO de PARMOFICINA para iTP_BLOQUEIO |
HabilitaPesoQtdePeca | UdmMOF001.pas | 494 | Controla read-only de peso/quantidade quando G e ST_ALTERAPEDIDO ∈ {'S','T'} |
tabORDEMSERVITEMAfterScroll | UdmMOF001.pas | 2282 | Travamento de campos de preço/quantidade do serviço |
tabSERVICOITEMAfterScroll | UdmMOF001.pas | 3430 | Travamento de campos de peso/quantidade do item de consumo (serviço) |
tabSERVICOITEMVL_UNITARIOValidate | UdmMOF001.pas | 3824 | Bloqueio de redução de valor unitário quando V |
tabORDEMSERVITEMQT_SERVICOValidate | UdmMOF001.pas | 3906 | Bloqueio de redução via quantidade quando V |
tabORDEMSERVITEMVL_UNITARIOValidate | UdmMOF001.pas | 3977 | Bloqueio de redução de valor unitário do serviço quando V |
tabITEMCONSUMOAfterScroll | UdmMOF001.pas | 5026 | Travamento de campos do item de consumo quando G |
tabITEMCONSUMOVL_UNITARIOValidate | UdmMOF001.pas | 5188 | Bloqueio de redução de valor do item de consumo quando V |
tabORDEMSERVICODT_EMISSAOValidate | UdmMOF001.pas | 5841 | Bloqueio de alteração de data de emissão quando V |
Calcula_ValorConsumo | UdmMOF001.pas | 903 | Bloqueio de redução de valor total do consumo quando V |
edtCD_CODIGOBARRAExit | UMOF001.pas | 6512 | Bloqueio de inserção duplicada quando G |
cdsREQUISICAOOFICINADT_EMISSAOValidate | UdmMOF004.pas | 1857 | Bloqueio de data de emissão em MOF004 quando V |
btnSalvarClick (MOF001) | UMOF001.pas | 2464 | Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO |
btnExcluirClick | UMOF001.pas | 3687 | Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO |
btnPedidoClick | UMOF001.pas | 4130 | Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO |
btnFecharClick | UMOF001.pas | 4917 | Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO |
btnGeraNotaClick | UMOF001.pas | 5121 | Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO |
btnReabrirClick | UMOF001.pas | 5228 | Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO |
btnBuscarDocClick | UMOF001.pas | 6246 | Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO |
iniciar (MOF001) | UMOF001.pas | 695 | Verifica TP_BLOQUEIOOS (parâmetro distinto) |
Nota: As rotinas de MOF001 que verificam
TP_BLOQUEIO = 'F'lêem o campo da tabelaORDEMSERVICO(status de bloqueio financeiro da OS), e não o parâmetro de configuraçãoPARMOFICINA.TP_BLOQUEIO. São campos homônimos em tabelas distintas com finalidades diferentes.
Referências SQL diretas em Scripts/
Não foram encontradas referências diretas ao campo PARMOFICINA.TP_BLOQUEIO em procedures/views de Scripts/. As procedures listadas abaixo usam o nome TP_BLOQUEIO, mas referem-se ao campo homônimo nas tabelas ORDEMSERVICO, PEDIDO, PEDIDOPNEU ou a parâmetros de saída das procedures de verificação de bloqueio genérico (VERIFICA_BLOQUEIO, RETORNA_MOTIVOBLOQUEIO, etc.):
| Procedure/View | Arquivo | Contexto |
|---|---|---|
VERIFICA_BLOQUEIO | VERIFICA_BLOQUEIO.sql | Parâmetro de saída O_TP_BLOQUEIO — resultado genérico de verificação de bloqueio |
RETORNA_MOTIVOBLOQUEIO | RETORNA_MOTIVOBLOQUEIO.sql | Parâmetro de entrada I_TP_BLOQUEIO — tipo de bloqueio a consultar |
VALIDA_BLOQDESCMAXSUBGRUPO | VALIDA_BLOQDESCMAXSUBGRUPO.sql | Parâmetro I_TP_BLOQUEIO — tipo de bloqueio |
VALIDA_MODELOBLOQUEIODIASATRASO | VALIDA_MODELOBLOQUEIODIASATRASO.sql | Parâmetro I_TP_BLOQUEIO |
VALIDA_MODELOBLOQUEIOPCDESCMAX | VALIDA_MODELOBLOQUEIOPCDESCMAX.sql | Parâmetro I_TP_BLOQUEIO |
VALIDA_MODELOBLOQUEIOVLLIMITE | VALIDA_MODELOBLOQUEIOVLLIMITE.sql | Parâmetro I_TP_BLOQUEIO |
VERIFICA_BLOQUEIOPESSOA | VERIFICA_BLOQUEIOPESSOA.sql | Variável local V_TP_BLOQUEIO |
VERIFICA_BLOQUEIOSSUBGRUPO | VERIFICA_BLOQUEIOSSUBGRUPO.sql | Parâmetro de saída O_TP_BLOQUEIO |
VERIFICA_BLOQUEIOPEDIDORECAP | VERIFICA_BLOQUEIOPEDIDORECAP.sql | Variável local V_TP_BLOQUEIOPED |
FECHA_ORDEMPRODUCAORECAP | FECHA_ORDEMPRODUCAORECAP.sql | Variável V_TP_BLOQUEIO — copia bloqueio do pedido para ordem de produção |
GERA_PEDIDOCOTACAOPECA | GERA_PEDIDOCOTACAOPECA.sql | Atribui TP_BLOQUEIO = 'C' no pedido gerado |
VIEW_DOCUMENTOSBLOQUEADOS | VIEW_DOCUMENTOSBLOQUEADOS.sql | Parâmetro de saída O_TP_BLOQUEIO |
Candidatas por uso da tabela
As seguintes procedures/views fazem JOIN ou FROM na tabela PARMOFICINA, mas não referenciam o campo TP_BLOQUEIO diretamente:
PARCELA_FINANC_MNF017, PARCELA_FINANCIAMENTO, REABRE_OS, RETORNA_PRECOITEM, VIEW_ROF004, VIEW_ROF004_OFXMM, VIEW_ROF004B, VIEW_ROF004B_V2, VIEW_ROF008.
Parâmetros relacionados
| Parâmetro | Configurado em | Relação com TP_BLOQUEIO |
|---|---|---|
ST_ALTERAPEDIDO | MFA001 — Parâmetros de Faturamento, aba Ambos | Quando 'S' ou 'T', ativa o travamento de campos (read-only) na opção G |
ST_AUTORIZADOR | ADM004 — Acesso (perfil do usuário) | Quando 'S', ignora todas as restrições de G e V |
TP_BLOQUEIOOS | OFI001 — aba Parâmetros | Parâmetro distinto — controla bloqueio específico de OS (valores N, S, etc.) |
ST_TABPRECO | MFA001 — Parâmetros de Faturamento | Interage com bloqueio de preço quando ST_ALTERAPRECO = 'N' |