CONTEÚDO


01. Visão Geral

No módulo de Jurídico Departamentos (SIGAJURI), foi criado uma interface personalizável para as telas de consultas padrão, a fim de permitir pesquisa sem diferenciação por acentuação ou caixa alta/baixa. Estas consultas utilizam uma chamada da função JURSXB(). Este documento tem o objetivo de  apresentar que é possível personalizar o comportamento das consultas que usam esta função, caso necessário. Veja a seguir os parâmetros da função.


02. Parâmetros da função JURSXB()

Para utilizar esta função, é necessário configurar alguns parâmetros, como vemos na tabela a seguir:

JURSXB( A, B, C, D, E, F, G , H , I , J )


Parâmetro

Tipo

Descrição

ObrigatórioExemplo
AStringNome da tabela.x"SA2"
BStringNome da consulta específicax"JURSA2"
CArrayCampos que devem ser exibidos na tela da consulta.
{"A2_COD","A2_LOJA","A2_NOME"}
DLógicoDefine se o botão Visualizar será apresentado.
.T.
ELógicoDefine se o botão Incluir será apresentado.
.T.
FStringFiltro (where) que será concatenado na query
""
GStringNome da rotina/fonte que será usado para visualização ou inclusão de registros a partir da consulta padrão.
"MATA020"
HLógicoIndica se a consulta apresentará dados na sua abertura. Caso configure .F. os valores serão retornados somente ao realizar uma busca no campo de pesquisa.
.T.
INuméricoPercentual de redução da view quando é informado o fonte.
0
JLógicoDefine se o botão Alterar será apresentado.
.T.

03. Como configurar?

Para realizar as configurações é necessário acessar o configurador (SIGACFG), conforme apresentado a seguir:


1 - Acesse o módulo do Configurador

No menu acesse Base de Dados > Dicionário > Base de Dados. Em seguida, no menu lateral, selecione o item Consultas Padrão:


2 - Utilize o botão de lupa para buscar a consulta que deseja configurar.


Digite o nome do Alias da consulta padrão e clique no botão Buscar:


3 - Acesse a consulta em modo de Alteração.

Clique no botão Alterar:


Ao acessar a tela da consulta no modo de alteração, clique em Avançar


4 - Configure os parâmetros para a função JURSXB()

No campo Expressão configure os parâmetros de acordo com a necessidade para o campo que utiliza a consulta.



Após realizar as alterações necessárias, clique no botão Finalizar.



04. Exemplo de utilização

A seguir vemos o exemplo de configuração para consulta específica do campo de Comarca (NUQ_CCOMAR), utilizado na rotina de Assuntos Jurídicos.


ExpressãoJURSXB( "NQ6", "NQ6" ,{ "NQ6_COD", "NQ6_DESC" } , .T., .T., "@#JU183F3NQ6()", "JURA005", .T., 0, .T.)




Utilizando a Consulta:


05. Utilização de filtros - Totvs Departamentos Jurídicos

A seguir veremos como será a utilização dos filtros nas consultas a partir da JURSXB. A regra a seguir vale para a utilização no portal Totvs Departamentos Jurídico. Para os filtros podemos utilizar as seguintes formas:




06. Utilização de filtros pelos campos do formulário - Totvs Departamentos Jurídicos


  1. Consulta da JURSXB - Consulta padrão
    1. Nessa etapa estaremos criando a consulta que o campo customizado executará.
    2. Esse filtro está disponível apenas para funções compiladas, incluindo customizações.
    3. Para isso é necessário passar como parâmetro da função o oJson, esse será o parâmetro que armazenará os dados do formulário no Totvs Jurídico Departamentos. Importante: Sem a passagem do parâmetro, a função não terá acesso aos dados do formulário.
    4. Exemplo de consulta JURSXB considerando o filtro de campos:
    5. Observações: 
      1. Esse filtro está disponível apenas para campos customizados.
      2. Após criar / editar a consulta padrão, é necessário vincular ao campo que executará a consulta.
  2. Função com filtro de campos
    1. Nessa etapa estaremos tratando do filtro que será executado ao consultar o campo customizado.
    2. Seguindo a mesma regra da etapa anterior, precisamos criar a função com um parâmetro oJson, o mesmo que receberá os campos e seus valores.
    3. A partir disso o usuário pode criar a condição SQL desejada, utilizando ou não os campos do formulário.
    4. Importante: O retorno dessa função deve ser uma condição SQL, sem a necessidade do AND no início
    5. Exemplo de função e retorno, considerando o filtro de campos:

      USER FUNCTION JQRYF301(oJson)
      Local cQuery    := ""
      Local oModel    := FWModelActive()
      Default oJson   := Nil
      
          If oJson == Nil .Or. Empty(oJson:toJson())
              If isBlind()
                  // Caso seja TJD + Grid, usar o posicione via NUQ
                  cQuery := retWhere(AllTrim(NUQ->NUQ_XCARAC), AllTrim(NUQ->NUQ_XNATUR))
              Else
                  // Caso seja protheus, use o modelo para pegar o campo atualizado
                  cQuery := retWhere(AllTrim(oModel:GetValue("NUQDETAIL", "NUQ_XCARAC")))
              EndIf
          Else
              // Caso seja TJD, usar campos do formulário
              If !Empty(oJson["NUQ_XCARAC"])
                  cQuery := retWhere(UPPER(oJson["NUQ_XCARAC"]), AllTrim(oJson["NUQ_XNATUR"]))
              EndIf
          EndIf
      
      Return cQuery
      
      
      Static Function retWhere(cNUQXCarac, cNatut)
      Local cReturn := ""
      
      Default cNUQXCarac := ""
      Default cNatut     := ""
      
          If cNatut == "0001" .or. cNatut == "0002"
              cReturn := "O0N_CSLDOC like '%" + cNUQXCarac + "%' and O0N_TIPO = '1'"
          ElseIf cNatut == "0003" .or. cNatut == "0004"
              cReturn := "O0N_CSLDOC like '%" + cNUQXCarac + "%' and O0N_TIPO = '2'"
          Else 
              cReturn := "O0N_CSLDOC like '%" + cNUQXCarac + "%'
          EndIf
      
      Return cReturn
    6. Observações:

      1. A função deve ser a mesma que foi inserida na consulta, na etapa anterior.
      2. A função deve retornar uma condição SQL sem o AND no início.
      3. Essa função deve estar compilada no ambiente.
      4. Para filtrar pelos valores do formulário, utilizamos o parâmetro oJson[<nome_do_campo>], como no exemplo onde está sendo filtrado pelo campo customizado NT3_XCARAC.
      5. Importante: Apenas campos caractere estão disponíveis para serem usados como filtro. Campos com X3_TIPO = 'C'.
      6. A função "retWhere" filtra por diferentes tipos conforme a natureza informada.
    7. Observações:
      1. Se o oJson estiver vazio e isBlind() = verdadeiro: Indica ambiente Web App e Grid, utilizando posicionamento via tabela NUQ para obter os valores dos campos.
      2. Se o oJson estiver vazio e isBlind() = falso: Indica ambiente Protheus, utilizando o modelo ativo (FWModelActive) para obter os campos atualizados.
      3. Se o oJson estiver preenchido: Indica ambiente Web App, utilizando os campos do formulário através do parâmetro oJson.
  1. Exemplo de uso:
    1. Ao acessar a tela de despesa, nenhum dado foi preenchido, assim o campo de consulta retorna todos os valores. Importante: Por padrão é filtrado os registros não deletados e que estejam na filial correspondente ao do usuário.
    2. Ao digitar no campo de caractere (NT3_XCARAC), onde foi digitado a palavra "requeijao" e ao consultar novamente é retornado os produtos que contenham "REQUEIJAO" em sua descrição


3.1 Exemplo de uso: 

a. Ao acessar a tela de instâncias, sem nenhum dado preenchido, o campo de consulta retorna com todos os valores disponíveis:

b. Ao digitar no campo de caractere (NUQ_XCARAC), inserindo a palavra "Banco" e consultando novamente, são retornados os dados que contenham "BANCO" em sua descrição:

c. Ao "alterar instância", é possível visualizar os campos customizados no grid de instâncias, nos detalhes do processo:

07. Assuntos relacionados



<!-- esconder o menu --> 


<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>