Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

RotinaTabelaTipo de implementaçãoDocumentação técnica
Cadastro de DespesasNT3Formulário de cadastroDT JURSXB - Consulta em Cascata - Garantias e Despesas
Cadastro de GarantiasNT2

Formulário de cadastro

DT JURSXB - Consulta em Cascata - Garantias e Despesas

Pré-cadastro de processosNUQ

Formulário de cadastro

DT JURSXB - Consulta em Cascata - Envolvidos e Instâncias

Pré-cadastro de processosNT9

Formulário de cadastro

Visualização no Grid

DT JURSXB - Consulta em Cascata - Envolvidos e Instâncias

Alteração de processosNUQ

Formulário de cadastro

Visualização no Grid

DT JURSXB - Consulta em Cascata - Envolvidos e Instâncias

Alteração de processosNT9

Formulário de cadastro

Visualização no Grid

DT JURSXB - Consulta em Cascata - Envolvidos e Instâncias

Prazos e TarefasNTA

Formulário de cadastro

DT JURSXB - Prazos/Tarefas - Campos customizados

Cadastros Básicos

Formulário de cadastro

Visualização no Grid

DT JURSXB -  Cadastros Básicos - Rotinas Customizadas

03. Utilização de filtros

A seguir veremos como será a utilização dos filtros nas consultas a partir da JURSXB onde podemos utilizar das seguintes formas:

...

  • Filtro por campo do formulário
    • Expressão: JURSXB("SB1","SB1T10",{"B1_DESC","B1_COD"},.T.,.T.,"@#U_JQRYF301(oJson)")
    • Explicação: O filtro por campo do formulário executará a função inserida, passando os valores do formulário via parâmetro, tal função deverá retornar uma condição que por sua vez será utilizada para complementar a busca pelo registro. Importante ressaltar que é necessário a indicação do @# antes da função e seu parâmetro oJson.
      Exemplo de retorno de uma função: " B1_DESC like '%PRODUTO%' ".


04. Utilização de filtros

...

por posicionamento na memória ( Somente posicionamento da NSZ )

  1. Consulta

...

05. Utilização de filtros pelos campos do formulário

  1. Consulta da JURSXB - Consulta padrão
    1. Nessa etapa estaremos criando a consulta que o campo customizado executará.
    2. Nesse exemplo o posicionamento ocorrerá baseado no código do assunto jurídico em que o usuário estiver editando.
    3. Exemplo de consulta JURSXB considerando o filtro de campos:
    4. Observações: 
      1. Após criar / editar a consulta padrão, é necessário vincular ao campo que executará a consulta.
  2. Exemplo de uso:
    1. Por meio do posicionamento da NSZ pelo código do assunto jurídico, o campo de consulta executará a condição da JURSXB, onde os envolvidos (NT9) que serão retornados são apenas os envolvidos do processo em que o usuário está editando.
    2. Envolvidos cadastrados no processo.
      Image Added
    3. Já o campo de consulta, está realizando esse filtro retornando os envolvidos vinculados nesse processo.
      Image Added

05. Utilização de filtros por função

  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. Exemplo de consulta JURSXB considerando o filtro de campos:
      Image Added
    4. Observações: 
      1. 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.
    2. Seguindo a mesma regra da etapa anterior, precisamos criar a função que executará o filtro.
    3. A partir disso o usuário pode criar a condição SQL desejada.
    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:

      Bloco de código
      languagejava
      themeRDark
      linenumberstrue
      //-------------------------------------------------------------------
      /*/{Protheus.doc} CT1JUR_NW
      Função montagem da query que será usada para filtrar os registros da consulta padrão
      
      @return cQuery - Condição da Query sem AND no início
      /*/
      //--------------------------------------------------------------------   
      User Function CT1JUR_NW()
      Local cQuery   := ""   
      Local c_Ccusto := IIF(Empty(M->NSZ_CCUSTO),NSZ->NSZ_CCUSTO,M->NSZ_CCUSTO)
      
          cQuery := "CT1_RES = '" + c_Ccusto +"' AND CT1_BLOQ <> '1' AND CT1_NORMAL <> '2'" 
      
      Return cQuery 
    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.
  3. Exemplo de uso:
    1. Quando for realizada a pesquisa por meio do campo de consulta, será executado a condição retornada da função que o usuário definiu na consulta padrão.
      Image Added
    2. Importante: Essa funcionalidade não contempla a atualização de filtros em tempo real pelo formulário, para utilizar os dados do formulário é necessário configurar a consulta padrão citada na seção 06.
      Image RemovedJá o campo de consulta, está realizando esse filtro retornando os envolvidos vinculados nesse processo.
      Image Removed

06. Utilização de filtros pelos campos do formulário

  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. 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:

      Bloco de código
      languagejava
      themeRDark
      linenumberstrue
      //-------------------------------------------------------------------
      /*/{Protheus.doc} JQRYF301
      Função montagem da query que será usada para filtrar os registros da consulta padrão
      
      @param oJson -  Objeto JSON contendo os campos do formulário para Totvs Departamento Jurídico.
      				Esse Objeto vem por padrão NIL no caso de execução via Protheus.
      
      @return cQuery - Condição da Query sem AND no início
      /*/
      //--------------------------------------------------------------------  
      USER FUNCTION JQRYF301(oJson)
      Local cQuery    := ""
      Local oModel    := FWModelActive()
      
      Default oJson   := Nil
      
          If oJson == Nil .Or. Empty(oJson:toJson())
              If isBlind()
                  // Caso seja Totvs Departamento Jurídico e Visualização do GRID, usar o posicione da tabela (NUQ)
                  cQuery := retWhere(AllTrim(NUQ->NUQ_XCARAC), AllTrim(NUQ->NUQ_XNATUR))
              Else
                  // Caso seja Protheus, usar o modelo para pegar o valor do campo atualizado
                  cQuery := retWhere(AllTrim(oModel:GetValue("NUQDETAIL", "NUQ_XCARAC")))
              EndIf
          Else
              // Caso seja Totvs Departamento Jurídico, usar campos do formulário pelo oJson
              If !Empty(oJson["NUQ_XCARAC"])
                  cQuery := retWhere(UPPER(oJson["NUQ_XCARAC"]), AllTrim(oJson["NUQ_XNATUR"]))
              EndIf
          EndIf
      
      Return cQuery  
      
      //-------------------------------------------------------------------
      /*/{Protheus.doc} retWhere
      Função para centralizar a regra de negócio na montagem da Query
      
      @param cNUQXCarac - Campo customizado de descrição
      @param cNatut     - Campo customizado de natureza
      
      @return cReturn - Condição da Query sem AND no início
      /*/
      //-------------------------------------------------------------------- 
      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" é utilizada como boas práticas para evitar a repetição da regra de negócio que envolva a montagem da query, centralizando esse comportamento. Obs: A função estática "retWhere" não precisa ser nomeada dessa forma, o nome dessa função é livre para a implementação.
    7. Observações sobre os cenários possíveis de uso:
      1. A função isBlind() verifica a existência de uma interface Protheus na execução, caso exista a interface o valor retornado será .F., caso contrário será .T. como em cenários do Totvs Departamento Jurídico.
      2. Se o oJson estiver vazio e isBlind() = verdadeiro: Indica ambiente Totvs Departamento Jurídico e Visualização pelo GRID, utilizando posicionamento via tabela desejada (No exemplo acima é NUQ) para obter os valores dos campos.
      3. Se o oJson estiver vazio e isBlind() = falso: Indica ambiente Protheus, utilizando o modelo ativo (FWModelActive) para obter os campos atualizados.
      4. Se o oJson estiver preenchido: Indica ambiente Totvs Departamento Jurídico, utilizando os campos do formulário através do parâmetro oJson.
      5. Para todos os cenários indicamos o uso da função Empty() para validar o valor antes de inserir na query, evitando comportamentos indesejados.
  3. 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
  4. Exemplo de uso considerando grid: 

...

JURSXB() - Configurações para consulta específica

JUR0093_Campos adicionais no TOTVS Jurídico Departamentos