Função:
Funções Operacionais
Conceito:
Funções operacionais são um conjunto de teclas, atalhos, comandos e funções que integram as telas do SAM e têm a função de agilizar os serviços de inclusão, alteração e exclusão de dados inerentes a cada tela.
Implicações:
1 - Telas de Cadastros:
1.1 - Identificação do cadastro contendo:
1.1.1 - Código do programa. Exemplo: CAS3001.
1.1.2 - Nome do programa. Exemplo: Países.
1.1.3 - Atalho [-] para minimizar.
1.1.4 - Atalho [ ] para maximizar.
1.1.5 - Atalho [X] ou tecla [Esc] para retornar ao menu do usuário.
1.2 - Aba [Registros]: Manipulação de registros do cadastro:
1.2.1 - Busca: Pesquisa sensitiva que fará uma busca imediata na base de dados a medida que se digita caracteres exibindo os registros que contém o conjunto de caracteres digitado.
1.2.2 - Lista Inicial: É a tela de abertura dos cadastros na qual serão exibidos 100 registros, por tela, contidos em cada cadastro.
1.2.3 - Lixeira: Ao ser clicada exclui o respectivo registro.
1.2.4 - Duplo Clique: Edita o respectivo registro.
1.2.5 - Navegação: Clique na linha ou deslocamento pelas teclas de [setas: < > ^ V].
1.2.6 - Paginador: Exibido na parte inferior da tela, mostra a quantidade total de registros contidos no cadastros, e quantas páginas, de 100 registros cada uma, estão disponíveis para navegação ao clique dos respectivos botões.
1.2.7 - Teclas de atalho do menu [Arquivo]:
A - F2: Será exibida a tela de inclusão para adicionar um novo registro.
B - Ctrl+F2: Será exibida a tela de inclusão para adicionar um novo registro sugerindo como dados iniciais um registro previamente selecionado na Lista Inicial.
C - F5: A Lista Inicial será recarregada (atualizada).
D - F8: Será exibida a tela com funções para manipulação de filtros de registros dos cadastros.)
1.3 - Aba [Filtrar (F8)]: Tela com funções para manipulação de filtros de registros dos cadastros:
1.3.1 - Botão [Adicionar Novo Filtro]: Permite relacionar um ou mais campos e respectivos critérios de seleção ou retirar da relação ao clicar na [Lixeira].
1.3.2 - Botão [Filtrar F8]: Executa a seleção dos registros a partir dos campos relacionados considerando seus respectivos critérios de seleção e exibindo-os na Lista Inicial.
1.3.3 - Botão [Limpar Filtros]: Exibe de forma padrão os registros do cadastro na Lista Inicial.
1.3.4 - Botão [Excluir Lista]: Permite excluir listas.
1.3.5 - Botão [Salvar Lista]: Permite salvas listas sob um dado nome.
1.3.6 - Consultas a partir de fórmulas previamente elaboradas no CAS4011 - SamDev.
A - É possível criar consultas customizadas para as listas dos cadastros do SAM através de
fórmulas. Para isso, na lista docadastro, acesse o menu: Arquivo -> Alterar consulta, depois
clique na aba Fórmula, selecione a fórmula desejada e clique em Salvar.
B - A fórmula para criar consultas personalizadas para a lista dos cadastros (F8)
funciona da seguinte forma:
B.1 - Ela vai receber como entrada um parâmetro de nome "requisicao" que é um objeto do
tipo RequisicaoDoF8, e deve devolver um objeto do tipo RespostaDoF8.
B.2 - O objeto RequisicaoDoF8 possui os seguintes atributos:
B.2.1 - Integer, tamanhoDaPagina: Quantidade de registros que serão exibidos por página.
B.2.2 - Integer, pagina: Número da página atual.
B.2.3 - List, filtros: Filtros informados pelo usuário na tela, cada filtro possui os seguintes atributos:
I - String, identificadorUnicoDaColuna: O identificador da coluna fornecido pela fórmula.
II - String, where: Um where pré montado pelo SAM para ser utilizado na SQL.
III - List, parametros: Os valores dos parâmetros do where.
B.3 - O objeto RespostaDoF8 possui os seguintes atributos:
B.3.1 - Long, qtdRegistros: Quantidade total de registros que existem na tabela considerando
os filtros informados. Esse valor será utilizado para montar o paginador da lista do cadastro.
B.3.2 - List, colunas: Contendo quais são as colunas que serão exibidas na lista do
cadastro, cada coluna possui os seguintes atributos:
I - String, identificadorUnicoDaColuna: esse é o atributo principal da coluna, ele irá
identificar a coluna na lista do cadastro e também será utilizado para montar o filtro
informado pelo usuário na tela.
II - String label: O label da coluna que será exibido na Spread do cadastro.
III - AttributeType type: O tipo da coluna.
IV - Legend[] legendas: Caso informado, o SAM irá montar um Combo nos filtros da lista do
cadastro.
V - int larguraDaColunaEmQtdCaracteres: Indica a largura da coluna na Spread do cadastro.
VI - boolean incluirColunaNosFiltrosDoF8: Indica se a coluna será exibida nos filtros da lista do
cadastro.
B.3.3- List, dados: Os dados que serão exibidos na Spread, o TableMap deve ser composto por
"identificadorUnicoDaColuna" e "valor" para cada coluna que foi informada no atributo "colunas".
B.4 - Existem 2 formas para se criar um objeto "ColunaF8":
Forma 1 - uma coluna do SAM como modelo: Para essa forma utilize o método:
ColunaF8.criarAPartirDaColunaDoSAM("nomeColunaDoSAM")
Exemplo: ColunaF8.criarAPartirDaColunaDoSAM("abe01codigo").
Forma 2 - Criar a partir de um dos construtores da própria classe, conforme abaixo:
I - public ColunaF8(String identificadorUnicoDaColuna, String label).
II - public ColunaF8(String identificadorUnicoDaColuna, String label,
boolean incluirColunaNosFiltrosDoF8).
III - public ColunaF8(String identificadorUnicoDaColuna, String label,
boolean incluirColunaNosFiltrosDoF8,
int larguraDaColunaEmQtdCaracteres, AttributeType type, Legend[] legendas).
C - IMPORTANTE:
C.1 - a tabela de dados deve conter uma coluna "id" contendo o id do registro que será editado
quando o cliente clicar na linha ou quando ele excluir a linha.
C.2 - não esqueça de sempre adicionar o where padrão do SAM na SQL.
D - Exemplo de código utilizando SQL:
class F8_Exemplo extends FormulaBase {
@Override
public FormulaTipo obterTipoFormula() {
return FormulaTipo.F8;
}
@Override
public void executar() {
RequisicaoDoF8 requisicao = get("requisicao"); // Obtem a requisição do F8
//Monta o WHERE contendo todos os filtros que por ventura o usuário tenha informado na tela
String whereFiltros = "";
List parametros = new ArrayList();
if (requisicao.getFiltros() != null && requisicao.getFiltros().size() > 0) {
for(FiltroDoF8 filtro : requisicao.getFiltros()){
whereFiltros += " AND " + filtro.getWhere();
parametros.addAll(filtro.getParametros());
}
}
//Cria um array com os parâmetros dos filtros
Parametro[] parametrosArray = parametros.toArray();
//Define a lista de colunas que serão exibidas na Spread do cadastro
//Atenção, o identificadorUnicoDaColuna deve ser o mesmo dos campos que serão retornados na SQL
List colunas = new ArrayList();
colunas.add(ColunaF8.criarAPartirDaColunaDoSAM("abe01codigo"));
colunas.add(ColunaF8.criarAPartirDaColunaDoSAM("abe01na"));
colunas.add(new ColunaF8("abe01nome", "Nome"));
//Quando a consulta é por SQL, deve-se sempre fazer duas consultas, uma para obter a quantidade total de registros e outra para obter os dados da página atual
//aqui monta a baseDaSql que será usada nas duas consultas (NÃO ESQUECER DO obterWherePadrao)
String baseDaSql =
" FROM Abe01 AS abe01 " +
" left join abe02 on abe02ent = abe01.abe01id " +
" left join abe0101 on abe0101ent = abe01.abe01id " +
" left join Aag0201 on Aag0201id = abe0101municipio " +
" left join Aag02 on Aag02id = aag0201uf " +
" left join abe30 on abe30id = abe02cp " +
" WHERE true " + obterWherePadrao("Abe01") +
" " + whereFiltros;
//Monta a SQL para obter a quantidade total de registros
String sqlCount = " SELECT count(*) as qtdTotal " + baseDaSql;
//Monta a SQL para obter os dados da página atual (NÃO ESQUECER DA COLUNA ID)
String sqlDados =
" SELECT abe01id as id, concat(abe01.abe01codigo,'9999') as abe01codigo, abe01.abe01na as abe01na, abe01.abe01nome as abe01nome, " +
baseDaSql +
" ORDER BY abe01codigo ";
//Obtendo o total de registros na tabela
Long qtdTotalDeRegistros = getAcessoAoBanco().obterLong(sqlCount, parametrosArray);
//Obtendo os dados
List dados = getAcessoAoBanco().buscarListaDeTableMap(sqlDados, true, requisicao.getPagina(), requisicao.getTamanhoDaPagina(), parametrosArray);
//Monta a resposta do F8
put("resposta", new RespostaDoF8(qtdTotalDeRegistros, colunas, dados));
}
}
E - Exemplo de código sem utilizar SQL, apenas montando a lista na mão com os dados do usuário logado:
class F8_UsuarioLogado extends FormulaBase {
@Override
public FormulaTipo obterTipoFormula() {
return FormulaTipo.F8;
}
@Override
public void executar() {
//Nesse caso não precisa nem receber a requisição, já que não vamos utilizar os filtros
List colunas = new ArrayList();
colunas.add(new ColunaF8("login", "Usuário"));
colunas.add(new ColunaF8("nome", "Nome do usuário"));
TableMap linha = new TableMap();
//a Chave do map deve sempre bater com o identificadorUnicoDaColuna de cada coluna
linha.put("login", getVariaveis().getAab10().getAab10user());
linha.put("nome", getVariaveis().getAab10().getAab10nome());
//Nunca esquecer do ID
linha.put("id", getVariaveis().getAab10().getAab10id());
List dados = new ArrayList();
dados.add(linha);
put("resposta", new RespostaDoF8(1, colunas, dados));
}
}
1.4 - Funções do menu [Arquivo]:
1.4.1 - [Incluir] - F2: Será exibida a tela de inclusão para adicionar um novo registro.
1.4.2 - [Incluir/Copiar] - Ctrl+F2: Será exibida a tela de inclusão para adicionar um novo registro sugerindo como dados iniciais um registro previamente selecionado na Lista Inicial.
1.4.3 - [Atualizar] - F5: A Lista Inicial será recarregada (atualizada).
1.4.4 - [Filtrar] - F8: Será exibida a tela com funções para manipulação de filtros de registros dos cadastros.
1.4.5 - [Alterar Consulta]: Permite que CAS1010 - Usuários autorizados a customizar montem sua 'Lista Inicial' com os dados do cadastro que deseja visualizar. A seguintes funções estão disponíveis para isso:
A - [Selecionar campos]: Seleção de campos que deseja exibir.
B - [Resetar Posicionamento]: Realinha o layout que demonstra os links entre os campos.
C - [Salvar]: Salva a consulta com a lista de campos selecionada.
D - [Cancelar]: Retorna para a Lista Inicial.
E - [Limpar Consulta]: Retornar a consulta padrão do SAM.
1.4.6 - [Campos Customizados]: Este serviço permite que CAS1010 - Usuários autorizados a customizar, possam manipular campos nas tabelas.
1.4.7 - [Sair] - ESC: Retorna ao menu do usuário abandonando a tela sem realizar qualquer operação.
1.5 - Listas Salvas: Listas compostas e salvas na Aba [Filtrar (F8)] para serem executadas a fim de exibirem os registros conforme critérios de seleção da respectiva lista.
1.6 - Funções do menu [Arquivo] da tela de edição de registros:
1.6.1 - [Salvar] - F9: Para gravar os dados do cadastro na base de dados. Esta opção opera de dois modos: (1) estando a tela em modo de inclusão, após gravar limpa-se a tela e continua no modo de inclusão para inserção de um novo registro, teclando ESC retorna para a Lista Inicial; (2) estando a tela em modo de alteração, após gravar retorna para a Lista Inicial, teclando ESC retorna para a Lista Inicial sem gravar a alteração do registro.
1.6.2 - [Salvar/Incluir] - Ctrl+F9: Para gravar os dados do cadastro na base de dados, porem após gravar a tela continua com os dados, ou seja, não será limpa, mantendo os dados para a a tela para a próxima inclusão, estando no modo de alteração, após gravar retorna para a Lista Inicial, portanto em modo de alteração, F9 ou Ctrl+F9 tem a mesma função.
1.6.3 - [Atualizar]: Para atualizar a tela com os dados do registro que atualmente encontra-se na base de dados.
1.6.4 - [Ajuda] - F1: Para exibir as instruções (manual) inerentes a tarefa.
1.6.5 - [Cancelar] - ESC: Para abandonar a tela ativa e volta para a Lista Inicial.
1.7 - Funções do menu [Operações] da tela de edição de registros:
1.7.1 - [Script de Operações]: Permite que CAS1010 - Usuários autorizados a customizar possam criar ou editar scripts que manipulam dados da tela. Estão disponíveis alguns métodos que auxiliam o desenvolvimento de scripts.
2 - Telas de Processos:
2.1 - Funções do menu [Arquivo] em telas de processos:
2.1.1 - [Ajuda] - F1: Para exibir as instruções (manual) inerentes a tarefa.
2.1.2 - [Sair] - ESC: Para abandonar a tela ativa e volta para o menu principal do usuário.
2.2 - Funções do menu [Operações] da tela de processos:
2.2.1 - [Script de Operações]: Para criar ou editar scripts que manipulam dados da tela. Estão disponíveis alguns métodos que auxiliam o desenvolvimento de scripts.
3 - Funções da Spread (Tabela da Dados): É intenso o uso de spread nas telas para manutenção de dados, pois os dados dispostos em forma de tabela (linhas e colunas) é muito confortável e intuitivo para o usuário. Alguns comandos estão disponíveis para a maioria das Spreads, são eles:
3.1 - TAB: Move o foco (cursor) para o próximo campo e, no último campo da última linha, retorna para o primeiro campo da primeira linha.
3.2 - ENTER: Move o foco (cursor) para o próximo campo e cria uma nova linha a partir do último campo da última linha.
3.3 - F5: Cria uma nova linha a partir do foco atual.
3.4 - F7: Deleta a linha em que está o foco.
3.5 - Estando o foco em certa célula ao digitar qualquer caractere entra-se em modo de inclusão de dados.
3.6 - [Insert] ou Duplo Clique na célula entra-se em modo de edição.
4 - Informações de Rodapé das Telas: Na parte inferior das tela há algumas informações que orientam o usuário sobre alguns aspectos do registro:
4.1 - Operação: indica se o usuário esta Alterando ou Incluindo um registro.
4.2 - ID: Número de identificação do registro na base de dados. Este número é de uso exclusivo do SAM e controlado pelo banco de dados.
4.3 - Inativo: Indica se o registro (cadastro) é ativo ou inativo. Um registro (cadastro) inativo não será mais usado, ou seja, uma vez marcado como inativo o mesmo não será relacionado, disponibilizado ou contado nos componente de navegação ou escolha (combos, options, etc.).
4.4 - Uso: CAS1004 - Políticas de segurança atribuída ao registro para permitir acesso ao mesmo a partir das CAS1003 - Funções do Usuário logado.
5 - Componentes de Tela: São os elementos de entrada e saída de dados nas telas. Alguns têm características relevantes como segue:
5.1 - Componentes de navegação: Aqueles vinculados a cadastros e que têm em sua extrema direita a [Lupa] e que suportam a Busca/F4, para estes uma busca simples está disponível. Esta busca acontece quando o usuário digita no componente um ou mais caracteres e tecla [TAB] fazendo com que o componente procure no cadastro ligado a ele o registro igual ou imediatamente próximo aos caracteres informado. Na Spread estando o foco (cursor) no componente teclando [Insert] ou Duplo Clique entra-se em modo de edição.
5.2 - Tela de Busca/F4: Nos componentes de navegação contidos nas telas é possível fazer um busca clicando-se na [Lupa] ou teclando F4 estando o cursor no componente. A Tela de Busca/F4 exibirá até 100 registros relativos ao cadastro ligado ao componente de navegação, e ao Duplo Clique ou Seta Acima/Abaixo seguido de ENTER no registro desejado, o mesmo será transportado para a tela chamadora exibindo-o no componente que a invocou. Para garimpar registros exibidos, a tela de Busca/F4 dispõe de uma pesquisa sensitiva, que selecionará registros a partir dos caracteres digitados, e nesta pesquisa se o usuário digitar no inicio o caractere * a busca dos caracteres digitados será não só no inicio dos textos mas no texto todo. Também é possível acessar o cadastro ligado ao componente de navegação, e isto só será possível se o Usuário Logado tiver em seu Menu a correspondente tarefa para acesso ao respectivo cadastro, tendo poderá acessar o respectivo cadastro através de dois botões disponível na parte inferior da tela de Busca/F4, não tendo acesso, os botões ficam desabilitados.
[Abrir lista]: Ao clicar neste botão, será exibida a Lista Inicial do respectivo cadastro, ligado ao componente de navegação.
[Abrir cadastro]: Ao clicar neste botão, será exibido a tela de cadastro com os dados do registro selecionado na tela de Busca/F4.
5.3 - Componente de Data: Aqueles que formatam data em [dd/mm/aaaa] ou [mm/aaaa] e que têm em sua extrema direita um [Calendário]. Clicando-se no [Calendário] ou teclando F4 estando o cursor no componente será exibido um calendário para seleção de uma data.
5.4 - Molduras com componente de opção para seleção de filtros: Aqueles que têm quatro componentes sendo um (componente de opção) em sua extrema esquerda no canto superior da moldura, dois componentes de navegação e um de seleção vinculados a cadastros nos quais o usuário informará valores de intervalo Inicial/Final ou seleção aleatória de registros. Clicando no componente de opção o usuário poderá optar em eleger um dos dois filtros a ser aplicado em sua pesquisa, ou seja, valores Inicial/Final ou seleção aleatória de registros. Filtros não selecionados indica que não entrará no processo de seleção de registros, e isso implica em melhor performace de busca para o banco de dados. Mas deve o usuário estar atento em não optar pelo filtro, pois isso, normalmente significa selecionar muitos registros, o que pode ser pior, em comparação a ter optado pelo filtro de poucos registros.
5.5 - Pesquisa de Central de Documentos: Aqueles que têm na moldura de {Documento} em sua extrema direita uma [Lupa] e um [Olho]. Clicando na [Lupa] o usuário poderá fazer pesquisa de documentos contidos na Central de Documentos e clicando no [Olho] poderá ver o registro do documento na CGS0150 - Central de Documentos.
5.6 - Critérios de Seleção: Critérios são as qualificações (critérios) e as especificações (opções do critério), previamente cadastradas, que serão atribuídas aos cadastros de CGS2001 - Entidades, CGS5001 - Itens e CGS4050 - Trabalhadores e que serão utilizados na seleção de registros nos processos, consultas e listagens.
5.7 - Campos Livres: Campos previamente cadastrados em CAS4002 - Campos e atribuídos livremente pelo usuário a CAS4001 - Tipos de Documentos e CAS4702 - Especificações. Estes campos serão exibidos normalmente dentro de uma moldura denominada {Campos Livres} e no caso de serem exibidos em Spread em colunas distintas.