PT
ES
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 |
| |
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) |