Histórico da Página
...
- Uma validação que executará um programa externo para verificar se a data de implantação é posterior a 30 dias da data atual e o estabelecimento no qual o usuário está incluindo ou modificando um item é valido para ele.
- Validações ao pressionar os botões Cópia e Exportar para que também não seja permitido efetuar estas operações se o estabelecimento e data não forem validos para o usuário.
- O botão Características do Item só ficará visível se o campo Folha Especificação estiver preenchido.
Passos para Configuração:
| Passo | Descrição |
| 1 | Primeiramente, muda-se a propriedade Validação dos botões Cópia e Exportar para o valor Sim. Dessa forma, os botões passarão a estar sempre habilitados, executando todas as listas de valores dos objetos da tela, fazendo assim a validação, e verificando a possibilidade de executar a funcionalidade (por exemplo, efetuar uma cópia de registro no momento em que o botão foi pressionado). |
| 2 | Após |
...
| o primeiro passo é necessário criar uma lista de valores possíveis para o campo Estabelecimento Padrão, onde será executado o método para fazer a validação de estabelecimento e data de implantação. | |
| 3 | Para que a lista de valores possa ser criada, é necessário executar a janela Lista Valores, pressionando o botão ao lado da propriedade Lista Valores. |
| 4 | Dentro da janela Lista Valores, é escolhida a opção “Retorno Externo”, depois é informado o caminho do programa de validação através do botão Pesquisa e escolhido o método interno do programa que fará a validação. |
| 5 | Pressiona-se o botão Cria Nova Regra e depois o botão Confirma para fechar a janela e concluir a criação da lista. |
| 6 | Após isso é alterada a propriedade Apelido do campo Data Implantação. Isso se deve ao fato de que os métodos da biblioteca de retorno externo do Otimizador de Telas (solib001.i) acessam os objetos através de seu apelido. Por isso é criado o apelido “data” para este campo, pois assim ele será validado no mesmo método que valida o estabelecimento. |
| 7 | Para o botão Características do Item é alterada a propriedade Invisível para Condição (fazendo assim que ele fique invisível dependendo do resultado da condição). Depois é executada a Janela Condição. |
| 8 | Na Janela Condição, é escolhido o objeto que se deseja validar (campo “cd-folh-item”) e depois é procedido da mesma forma que na Janela Lista Valores, ou seja, é escolhida a opção Retorno Externo, depois é informado o caminho do programa de validação através do botão Pesquisa e escolhido o método interno do programa que fará a validação. Pressiona-se o botão Cria Nova Regra e depois o botão Confirma para fechar a janela e concluir a criação da condição. |
| Informações | ||
|---|---|---|
| ||
Depois de concluído esse processo pode se visualizar o funcionamento do perfil em ação. |
...
| Informações | ||
|---|---|---|
| ||
Deve ser executado por um usuário que não seja administrador do SOP para as validações funcionarem corretamente. |
...
Resultado
| Teste | Descrição |
|---|---|
| 1 | Ao tentar incluir um item onde o estabelecimento não é valido para o usuário, a operação é negada. |
| 2 | Ao tentar a realização |
...
do teste 1, ou seja, incluir ou modificar um item com um estabelecimento inválido, a validação interfere não permitindo a inclusão e apresentando uma mensagem como abaixo:
|
...
O mesmo acontece com o campo Data Implantação, ao qual foi dado o apelido data. Ele também é verificado através da validação do campo cod-estabel. | ||||||
| 4 | Ao tentar incluir ou modificar um item com a data de implantação menor que trinta dias antes da data atual, a validação não permite a operação e apresenta uma mensagem como abaixo:
|
...
| |||
| 5 | A mesma coisa acontece ao pressionar os botões Cópia e Exportar quando o estabelecimento ou a data de implantação for inválido. Outra validação acontece também para o estado do botão Características do Item, nota-se que quando o campo Folha Especificação é branco, o botão fica invisível. Já quando o campo está preenchido o campo também é visível. |
...
Exemplo de Implementação
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
/*******************************************************************************
** Programa..: validaestab.p
** Objetivo..: Retorno Externo para propriedades Condicao/Lista Valores SOP
** Data......: 01/10/2002
** Notas.....: Programa de exemplo de retorno externo.
** Contém o protótipo necessário para definicao de programas de
** retorno externo e definição dos métodos
** É possível adicionar novos métodos, conforme necessidade
********************************************************************************/
/* +++ definicao da biblioteca de funcoes +++ */
{sop\solib001.i}
/* +++ prototipacao dos metodos existentes - apenas para consulta +++ */
/* +++ FUNCTION getObjectHandle RETURNS HANDLE (vAlias AS CHAR) +++ */
/* +++ FUNCTION getObjectName RETURNS CHAR (vAlias AS CHAR) +++ */
/* +++ FUNCTION getObjectValue RETURNS CHAR (vAlias AS CHAR) +++ */
/* +++ FUNCTION getCurrentObjectHandle RETURNS HANDLE ( ) +++ */
/* +++ FUNCTION getCurrentObjectName RETURNS CHAR ( ) +++ */
/* +++ FUNCTION getCurrentObjectValue RETURNS CHAR ( ) +++ */
/* +++ definicao de variaveis +++ */
DEF NEW GLOBAL SHARED VAR v_cod_usuar_corren AS CHAR NO-UNDO.
/*******************************************************************************
Procedure validaEstabData
Objetivo: Exemplo de validacao do estabelecimento atraves de tabela
e tambem da data
*******************************************************************************/
PROCEDURE validaEstabData:
/* +++ parametros necessarios sop +++ */
DEFINE OUTPUT PARAMETER pLogOk AS LOGICAL NO-UNDO.
DEFINE OUTPUT PARAMETER pDesMessage AS CHARACTER NO-UNDO.
/* +++ variaveis locais +++ */
DEFINE VARIABLE estab AS CHARACTER NO-UNDO.
DEFINE VARIABLE valordata AS DATE NO-UNDO.
/* +++ codigo da validação +++ */
ASSIGN estab = getCurrentObjectValue(). /* pegar o valor do campo cod-estabel */
FIND FIRST usuar-estab NO-LOCK
WHERE usuar-estab.cod-usuar = v_cod_usuar_corren
AND usuar-estab.cod-estab = estab NO-ERROR.
IF NOT AVAIL usuar-estab THEN DO:
ASSIGN pLogOk = NO
pDesMessage = 'Estabelecimento inválido'.
RETURN.
END.
valordata = DATE(getObjectValue('data')).
IF valordata < (TODAY - 30) THEN DO:
ASSIGN pLogOk = NO
pDesMessage = 'Data de implantação não pode menor do que 30 dias atrás'.
RETURN.
END.
ASSIGN pLogOk = YES.
RETURN.
END PROCEDURE.
PROCEDURE validaValorBranco:
/* +++ parametros necessarios sop +++ */
DEFINE OUTPUT PARAMETER pLogOk AS LOGICAL NO-UNDO.
DEFINE OUTPUT PARAMETER pDesMessage AS CHARACTER NO-UNDO.
plogok = (getcurrentObjectValue() = '').
RETURN.
END PROCEDURE. |
...
Conforme a tabela, pode ser utilizado um único método X para utilização em botões e lista de valores. O retorno desse método deve ser YES quando a validação ocorrer com sucesso. Para utilizar o mesmo método em botões, basta criar condições com o operador “<>” (diferente).
| Nota | ||
|---|---|---|
| ||
Para as customizações via SOP serem ativadas, o programa deve ser chamado conforme está parametrizado no Cadastro de Programa (bas_prog_dtsul). |
