Pular para o conteúdo principal

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_BLOQUEIO Tipo: CHAR(1), NOT NULL, valor padrão G Componente: cmbTP_BLOQUEIO (combobox)


Telas impactadas​

TelaDescrição
MOF001Ordem de Serviço — valida preço, quantidade, data de emissão e inserção de itens duplicados
MOF004Requisição de Oficina — valida alteração de data de emissão
MOF008Autorização de OS — exibe OS com status bloqueado (TP_BLOQUEIO IN ('F','A') na tabela ORDEMSERVICO)

Campos envolvidos​

Campo / VariávelOnde é lidoPapel
PARMOFICINA.TP_BLOQUEIOBusca_Parametros em UdmMOF001.pasCarregado para iTP_BLOQUEIO ao abrir MOF001
dmMOF001.iTP_BLOQUEIOMúltiplos validate/event em UdmMOF001.pasVariável em memória usada nas validações
ParmOficina.Values['TP_BLOQUEIO']tabORDEMSERVICODT_EMISSAOValidate, cdsREQUISICAOOFICINADT_EMISSAOValidateLeitura direta do dicionário de parâmetros

Opções disponíveis​

G — Bloqueio Geral (padrão)​

O que fazDetalhe
Travamento de campos em itens já inclusosQuando 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 barrasSe o produto já existe na OS e o usuário não é autorizador, a inserção é bloqueada
Não interfere em data de emissãoDiferente da opção V, a data de emissão pode ser alterada livremente

Simulação passo a passo​

  1. Acesse OFI001 → aba Parâmetros → campo Liberação para Vendedores → selecione G — Bloqueio Geral.
  2. Salve o parâmetro.
  3. Abra MOF001 e crie ou edite uma Ordem de Serviço.
  4. Insira um item de consumo ou serviço na OS.
  5. Salve a OS.
  6. Reabra a OS e clique no item já inserido.
  7. 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).
  8. 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 tabela AUTORIZADOR) têm o bloqueio ignorado — os campos permanecem editáveis mesmo para itens já inclusos.


V — Bloqueio de OS/Produto​

O que fazDetalhe
Valida redução de preço em tempo realSe 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 quantidadeSe 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ãoUsuários não autorizadores não podem alterar a data de emissão de OS nem de requisição de oficina
Valida valor de consumoSe o valor total do consumo exceder o valor calculado pela função CALCULA_VALOR, bloqueia
Autorizadores passam livreUsuários autorizadores (ST_AUTORIZADOR = 'S') ignoram todas as restrições

Simulação passo a passo​

  1. Acesse OFI001 → aba Parâmetros → campo Liberação para Vendedores → selecione V — Bloqueio de OS/Produto.
  2. Salve o parâmetro.
  3. Abra MOF001 e crie ou edite uma OS com itens.
  4. Tente reduzir o valor unitário de um serviço ou item de consumo para um valor menor que o original carregado.
  5. O sistema exibe a mensagem: "Não foi possível diminuir o valor do item/serviço. Verifique! [OFI001]" e reverte a alteração.
  6. Tente alterar a data de emissão da OS (como usuário não autorizador).
  7. 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.
  8. 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 AUTORIZADOR com ST_ATIVO = 'S'), todas as restrições de V são ignoradas. A verificação é feita por SELECT 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 via ADM004 — 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​

AspectoG — Bloqueio GeralV — Bloqueio de OS/Produto
Campos read-only em itens já inclusosSim (quando ST_ALTERAPEDIDO ∈ {'S','T'})Não
Bloqueia redução de preço em tempo realNãoSim
Bloqueia alteração de data de emissãoNãoSim (usuários não autorizadores)
Bloqueia inserção duplicada via código de barrasSim (quando ST_ALTERAPEDIDO ∈ {'S','T'})Não
Autorizadores ignoram restriçãoSimSim
Valor padrãoG—

Procedures impactadas​

Rotinas Delphi com referência direta ao campo​

RotinaArquivoLinhaComentário
Busca_ParametrosUdmMOF001.pas670Lê TP_BLOQUEIO de PARMOFICINA para iTP_BLOQUEIO
HabilitaPesoQtdePecaUdmMOF001.pas494Controla read-only de peso/quantidade quando G e ST_ALTERAPEDIDO ∈ {'S','T'}
tabORDEMSERVITEMAfterScrollUdmMOF001.pas2282Travamento de campos de preço/quantidade do serviço
tabSERVICOITEMAfterScrollUdmMOF001.pas3430Travamento de campos de peso/quantidade do item de consumo (serviço)
tabSERVICOITEMVL_UNITARIOValidateUdmMOF001.pas3824Bloqueio de redução de valor unitário quando V
tabORDEMSERVITEMQT_SERVICOValidateUdmMOF001.pas3906Bloqueio de redução via quantidade quando V
tabORDEMSERVITEMVL_UNITARIOValidateUdmMOF001.pas3977Bloqueio de redução de valor unitário do serviço quando V
tabITEMCONSUMOAfterScrollUdmMOF001.pas5026Travamento de campos do item de consumo quando G
tabITEMCONSUMOVL_UNITARIOValidateUdmMOF001.pas5188Bloqueio de redução de valor do item de consumo quando V
tabORDEMSERVICODT_EMISSAOValidateUdmMOF001.pas5841Bloqueio de alteração de data de emissão quando V
Calcula_ValorConsumoUdmMOF001.pas903Bloqueio de redução de valor total do consumo quando V
edtCD_CODIGOBARRAExitUMOF001.pas6512Bloqueio de inserção duplicada quando G
cdsREQUISICAOOFICINADT_EMISSAOValidateUdmMOF004.pas1857Bloqueio de data de emissão em MOF004 quando V
btnSalvarClick (MOF001)UMOF001.pas2464Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO
btnExcluirClickUMOF001.pas3687Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO
btnPedidoClickUMOF001.pas4130Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO
btnFecharClickUMOF001.pas4917Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO
btnGeraNotaClickUMOF001.pas5121Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO
btnReabrirClickUMOF001.pas5228Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO
btnBuscarDocClickUMOF001.pas6246Verifica TP_BLOQUEIO = 'F' no registro ORDEMSERVICO
iniciar (MOF001)UMOF001.pas695Verifica TP_BLOQUEIOOS (parâmetro distinto)

Nota: As rotinas de MOF001 que verificam TP_BLOQUEIO = 'F' lêem o campo da tabela ORDEMSERVICO (status de bloqueio financeiro da OS), e não o parâmetro de configuração PARMOFICINA.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/ViewArquivoContexto
VERIFICA_BLOQUEIOVERIFICA_BLOQUEIO.sqlParâmetro de saída O_TP_BLOQUEIO — resultado genérico de verificação de bloqueio
RETORNA_MOTIVOBLOQUEIORETORNA_MOTIVOBLOQUEIO.sqlParâmetro de entrada I_TP_BLOQUEIO — tipo de bloqueio a consultar
VALIDA_BLOQDESCMAXSUBGRUPOVALIDA_BLOQDESCMAXSUBGRUPO.sqlParâmetro I_TP_BLOQUEIO — tipo de bloqueio
VALIDA_MODELOBLOQUEIODIASATRASOVALIDA_MODELOBLOQUEIODIASATRASO.sqlParâmetro I_TP_BLOQUEIO
VALIDA_MODELOBLOQUEIOPCDESCMAXVALIDA_MODELOBLOQUEIOPCDESCMAX.sqlParâmetro I_TP_BLOQUEIO
VALIDA_MODELOBLOQUEIOVLLIMITEVALIDA_MODELOBLOQUEIOVLLIMITE.sqlParâmetro I_TP_BLOQUEIO
VERIFICA_BLOQUEIOPESSOAVERIFICA_BLOQUEIOPESSOA.sqlVariável local V_TP_BLOQUEIO
VERIFICA_BLOQUEIOSSUBGRUPOVERIFICA_BLOQUEIOSSUBGRUPO.sqlParâmetro de saída O_TP_BLOQUEIO
VERIFICA_BLOQUEIOPEDIDORECAPVERIFICA_BLOQUEIOPEDIDORECAP.sqlVariável local V_TP_BLOQUEIOPED
FECHA_ORDEMPRODUCAORECAPFECHA_ORDEMPRODUCAORECAP.sqlVariável V_TP_BLOQUEIO — copia bloqueio do pedido para ordem de produção
GERA_PEDIDOCOTACAOPECAGERA_PEDIDOCOTACAOPECA.sqlAtribui TP_BLOQUEIO = 'C' no pedido gerado
VIEW_DOCUMENTOSBLOQUEADOSVIEW_DOCUMENTOSBLOQUEADOS.sqlParâ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âmetroConfigurado emRelação com TP_BLOQUEIO
ST_ALTERAPEDIDOMFA001 — Parâmetros de Faturamento, aba AmbosQuando 'S' ou 'T', ativa o travamento de campos (read-only) na opção G
ST_AUTORIZADORADM004 — Acesso (perfil do usuário)Quando 'S', ignora todas as restrições de G e V
TP_BLOQUEIOOSOFI001 — aba ParâmetrosParâmetro distinto — controla bloqueio específico de OS (valores N, S, etc.)
ST_TABPRECOMFA001 — Parâmetros de FaturamentoInterage com bloqueio de preço quando ST_ALTERAPRECO = 'N'