Valuekeep Guia de Iniciação
Guia de Iniciação
Guia de Iniciação
Voltar | Lista de Artigos

Como configurar regras de negócio?

Última alteração a 18/11/2025
Este artigo é aplicável a:
PT
ES
AO
CV
MZ
ST
GW

A extensibilidade é uma vantagem importante para qualquer produto. No Valuekeep, é possível definir quais os campos que devem ser preenchidos obrigatoriamente e criar regras para garantir o correto preenchimento desses campos.

Configurador de Regras de Negócio

O configurador de regras de negócio está disponível como add-on (custo adicional) e apenas na linha Universe.

As entidades que permitem esta extensibilidade são:

  • Equipamentos (inclui as ferramentas);
  • Localizações;
  • Ordens de trabalho;
  • Pedidos;
  • Rotas;

Após a aquisição do add-on, pode aceder à funcionalidade através do menu, acedendo a Definições | Sistema |Configurador de regras de negócio.

Campos apresentados

Os campos são apresentados por ordem alfabética, sendo que os campos personalizados aparecem no final.

A definição da obrigatoriedade de um campo personalizado continua a ser feita através da opção de menu de Criação de campos personalizados.

O campo Apenas na criação afeta o cálculo do campo Fórmula de Cálculo. Se este campo estiver ativo, a fórmula de cálculo será aplicada apenas no momento de criação do registo.

O campo Fórmula de Cálculo apenas será calculado no momento da gravação do registo, o que significa que, se existir uma fórmula de cálculo associada a um campo que já é obrigatório por definição, terá de o preencher manualmente e, no momento da gravação, o valor calculado pela fórmula irá substituir o valor introduzido.

Os campos que são obrigatórios por definição não permitem remover a obrigatoriedade

Os seguintes tipos de campos personalizados não podem ser configurados na configuração de regras de negócio:

  • Email;
  • Phone;
  • EntityLookup, do tipo ValueList;
  • Enumerable;
  • Url;
  • Percentagem;

Regras de Negócio

Algumas regras que podem ser aplicadas são as seguintes:

Equipamentos/Localizações

Algumas regras aplicáveis aos equipamentos e localizações são as seguintes:

Regra Campo onde aplicar a fórmula Campo de validação Exemplo de fórmula
Se a marca estiver preenchida, o modelo também tem de estar. Modelo Fórmula requerida HasValue([BrandNaturalKey])
A data de fim de garantia é 15 dias depois da data de entrada ao serviço. Data de fim Fórmula de cálculo DateAdd('d', 15, [OnServiceDate])
A descrição do equipamento é a concatenação dos três primeiros campos da localização, seguida do texto 'MC CUSTOM'. Descrição Fórmula de cálculo 'Concat'(Substring([LocationNaturalKey], 0, 3),'MC CUSTOM')
As observações contêm 10 caracteres da descrição. Observações Fórmula de cálculo Substring([Description], 0, 10)

Pedidos e Ordens de trabalho

Os campos seguintes são os disponíveis para personalização:

Pedidos

  • Descrição;
  • Tipo de pedido
  • Tipo de ativo;
  • Nível de prioridade;
  • Motivo do pedido;
  • Estado de funcionamento;
  • Observações.

Ordens de trabalho

  • Custo real;
  • Duração real;
  • Tipo (tipo de ativo);
  • Clientes;
  • Descrição;
  • Custo esperado;
  • Duração esperada;
  • Estado de funcionamento;
  • Observações;
  • Responsável;
  • Tipo de ordem de trabalho;
  • Oficina;

Algumas regras aplicáveis aos pedidos e ordens de trabalho são as seguintes:

Regra Campo donde aplicar a fórmula Campo de validação Exemplo de fórmula Observações
Apenas deve ser possível criar ordens de trabalho para o tipo de ativo equipamento. Tipo de ativo Fórmula de validação [AssetTypeValue] == 2
Se o tipo de ordem de trabalho for “CR”. o tipo de ativo tem de ser equipamento. Tipo de ordem de trabalho Fórmula de  validação
  • Ifs([WorkOrderTypeNaturalKey] == 'JQ' && [AssetType] != [AssetTypeValue.Equipment], false, true)
  • !([WorkOrderTypeNaturalKey] == 'JQ' && [AssetType] != [AssetTypeValue.Equipment])
Quando a ordem de trabalho transita para o estado Aprovado, o campo de utilizador Orçamento tem de estar preenchido. User_Orcamento Fórmula requerida [SchemaEntityStateNaturalKey] == 'OT02' O campo de utilizador criado é do tipo short text e não está como obrigatório.
Quando a ordem de trabalho transita para o estado Executado, o campo Custo Esperado tem de ser diferente de zero. Custo Esperado Fórmula de validação Ifs([SchemaEntityStateNaturalKey] == 'OT03' && [ExpectedCost] == 0, false, true)
Quando uma ordem de trabalho transita para o estado Fechado, o campo Tipo de Reparação tem de estar preenchido. User_TipoReparacao Fórmula requerida [SchemaEntityStateNaturalKey] == 'OT04'
Quando uma ordem de trabalho alterar para o estado Em Curso, o campo Fornecedor não pode estar vazio. Fornecedor Fórmula requerida [SchemaEntityStateNaturalKey] == 'OT02'
Se a ordem de trabalho passa para o estado Fechado, o campo de utilizador Site tem de ser preenchido. User_Site Fórmula requerida [SchemaEntityStateNaturalKey] == 'OT04' O campo Site é uma entidade personalizada. Se o campo Data estiver preenchido, o campo Duração tem de ser maior do que zero.
Validar que se o campo Custo esperado estiver preenchido, a duração esperada não pode ser zero. Duração Esperada Fórmula de validação Ifs(HasValue(ExpectedCost) && [ExpectedDurationSeconds] == 0, false, true) O campo Custo esperado e o campo Duração esperada é, por defeito, sempre zero. A aplicação desta fórmula define que estes campos nunca podem ter o valor zero.
Validar que o campo Duração real é sempre maior do que zero. Duração Atual Fórmula de validação Ifs([ActualDurationSeconds] > 0, true, false)
Preenchimento das observações com base na informação de outros campos. Observações Fórmula de cálculo 'Concat'([Date],'-',[Description],'-', [WorkOrderTypeDescription],'-', [CustomerDescription],'-',[SupplierNaturalKey])

Exemplos de fórmulas de cálculo

Algumas das fórmulas de cálculo que podem ser utilizadas são as seguintes:

Exp(x) Acos(-0.1)
Floor([ActualCost]) Asin(0.1)
Ceiling([ActualCost]) Atan(0.1)
Cos([ActualCost]) Exp(x) x < 50
Sin([ActualCost]) Floor([ActualCost])
Sqrt([ActualCost]) Ceiling([ActualCost])
Tan([ActualCost]) Cos([ActualCost])
Truncate([ActualCost]) Sin([ActualCost])
Round([ActualCost], 2) Sqrt([ActualCost])
Log([ActualCost], 2) Tan([ActualCost])
Log10([ActualCost]) Truncate([ActualCost])
Ln([ActualCost]) Log([ActualCost], 2)
IEEERemainder([ActualCost],1) Log10([ActualCost])
Abs(-[ActualCost]) Ln([ActualCost])
Acos(-0.1) IEEERemainder([ActualCost],50)
Asin(-0.1) Abs(-[ActualCost])
Atan(-0.1) Acos(-0.1)
Max([ActualCost], [ActualDurationSeconds]) Asin(-0.1)
Min([ActualCost], [ActualDurationSeconds]) Atan(-0.1)
Sign(-10) Max([ActualCost], [ActualDurationSeconds])
if(in(58, [ActualCost], [ExpectedCost], [ActualDurationSeconds]), 1, 2) Min([ActualCost], [ActualDurationSeconds])
Ifs([ActualCost] > 50, 'bar', [ExpectedCost] > 75, 'baz', 'quux') if(DateDiff('mm', [Date], DateAdd('mm', 2, Now())) > 1, 'Mais que um mes', 'Menos que um mes')
Cos([ActualCost]) DateDiff('mm', [Date], DateAdd('mm', 1, Now()))
Sin([ActualCost]) DateAdd('yy', 5, [Date])
Sqrt([ActualCost]) DateAdd('yy', -5, [Date])
Tan([ActualCost]) DateAdd('dd', 15, DateAdd('mm', 8, DateAdd('yy', -5, [Date])))
Log([ActualCost], 2) Month(Now())
Log10([ActualCost]) Year(Now())
Ln([ActualCost]) Day(Now())
Substring(Now(),4, 4)
Substring('Concat'('TESTEOS1234',Now()),4, 20)

Guardar ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.
Artigos Relacionados
Que tipos de perfis de utilizador existem? Atalhos para operações O que podemos encontrar no dashboard do administrador? O que podemos encontrar no dashboard do técnico? O que podemos encontrar no dashboard do requisitante?