Páginas filhas
  • TOTVS Construção Gestão de Imóveis - Shopping - Relatórios - Relatório Dinâmico

Versões comparadas

Chave

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

Introdução

...

O relatório dinâmico visa de forma transparente e simples, permitir que sejam inseridos parâmetros componentes que irão compor a saída do relatório, isto é, seu resultado final apresentado. Desta forma, temos uma interface que pode ser confeccionada e customizada em poucos passos, trazendo um dinamismo e maior rapidez na execução dos relatórios do sistema.  Dessa forma podem ser passados parâmetros como de seleção por contratos, subunidades, cliente/fornecedor, entre outros.

Como utilizar

...

O relatório dinâmico deve ser acessado em Shopping / Relatórios / Relatório Dinâmico. Este menu possui permissão, então o usuário deve ter a sua respectiva permissão habilitada para utilizá-lo.

...

Existem duas opções de tipo de retorno de parâmetroscomponentes:

  • Multi Record: Quando há a necessidade que em determinado parâmetro seja selecionado vários registros. Identificado pela inicial MRE_
  • Lookup: Quando há a seleção somente de um registro em determinado parâmetro. Identificado pela inicial LKP_

As tabelas disponíveis para passagem de parâmetros para execução do relatório dinâmico são as seguintes:

...

...

TabelaParâmetro Multirecord INParâmetro Multirecord FilterParâmetro Lookup INParâmetro Lookup Filter
XCOMPRADOR MRE_ XCOMPRADOR_INMRE_ XCOMPRADOR_FILTERLKP_ XCOMPRADOR_INLKP_ XCOMPRADOR_FILTER

XCLIENTE

MRE_ XCLIENTE_INMRE_ XCLIENTE_FILTERLKP_ XCLIENTE_INLKP_ XCLIENTE_FILTER

XLOCADOR

MRE_ XLOCADOR_INMRE_ XLOCADOR_FILTERLKP_XLOCADOR_INLKP_ XLOCADOR_FILTER

XLOCATARIO

MRE_ XLOCATARIO_INMRE_ XLOCATARIOFILTERLKP_ XLOCATARIO_INLKP_XLOCATARIO_FILTER

XIDLAN

MRE_ XIDLAN_INMRE_XIDLAN_FILTERLKP_ XIDLAN_INLKP_ XIDLAN_FILTER

XIMOVEL

MRE_ XIMOVEL_INMRE_ XIMOVEL_FILTERLKP_ XIMOVEL_INLKP_XIMOVEL_FILTER

XCONTRATOLOC

MRE_ XCONTRATOLOC_INMRE_ XCONTRATOLOC_FILTERLKP_XCONTRATOLOC_INLKP_ XCONTRATOLOC_FILTER

XEMPREENDIMENTO

MRE_ XEMPREENDIMENTO_INMRE_ XEMPREENDIMENTO_FILTERLKP_ XEMPREENDIMENTO_INLKP_ XEMPREENDIMENTO_FILTER

XUNIDADE

MRE_ XUNIDADE_INMRE_ XUNIDADE_FILTERLKP_ XUNIDADE_INLKP_ XUNIDADE_FILTER

XSUBUNIDADE

MRE_ XSUBUNIDADE_INMRE_ XSUBUNIDADE_FILTERLKP_ XSUBUNIDADE_INLKP_ XSUBUNIDADE_FILTER

Como fazer (Relatório com Sentença SQL IN)

...

Dada as tabelas acima, eu quero que o meu relatório me permita escolher os contratos de locação que irão fazer parte do resultado dele. Este relatório possui uma sentença SQL com uma clausula IN, então neste caso devemos proceder da seguinte maneira

Para isso então estou dizendo que deve existir o parâmetro MRE_XCONTRATOLOC_IN no relatório como mostra a imagem abaixo:

Image Modified

...

WHERE 
-

...

Na minha cláusula WHERE eu preciso utilizar sempre a função string_split. dessa forma, passamos os parâmetros como abaixo:


Bloco de código
languagesql
WHERE 
-
IN
(SELECT value AS parametro FROM STRING_SPLIT(:MRE_XCONTRATOLOC_IN, ','))


Para entender mais sobre essa função, consulte a página abaixo:


Informações

Central de Atendimento - Consultas com IN




Surgiu a necessidade no cliente VIPASA de uma tela que contenha vários filtros:

  • Seleção por LUC
  • Seleção por contrato
    • filtro por numero de contrato
    • filtro por cliente/fornecedor
  • Seleção por competência ( data inicio e fim )
  • Seleção por data do contrato ( data inicio e fim )
  • Busca por lançamentos ( Texto para buscar no histórico de lançamentos )


A proposta desta demanda está em evolução.

Os componentes são desenhados automaticamente na tela, de acordo com os parâmetros definidos no relatório.
O objetivo, neste momento, é testar apenas os parâmetros visuais — ainda não há o repasse desses parâmetros para a execução do relatório.

Inicialmente, foram criados alguns parâmetros específicos, mas é possível que outros surjam ao longo do desenvolvimento. Os parâmetros definidos até o momento são:
DateTime
Texto
*Int *( até foi implementando para não aceitar texto)
*Lookup *( definir o nome do parametro para que seja exibido o lookup)
*LookupMultiRecord *( definir o nome do parametro para que seja exibido o Lookup multiplo record)

  • XCOMPRADOR
  • XCLIENTE
  • XLOCADOR
  • XLOCATARIO
  • XIDLAN
  • XIMOVEL
  • XCONTRATOLOC
  • XEMPREENDIMENTO
  • XUNIDADE
  • XSUBUNIDADE
  • Definir para lookup:
    LKP_XCONTRATOLOC, deverá apresentar o lookup na tela de contrato de locação. ( precisa ser "LKP_XCONTRATOLOC")

Definir para lookup:
MRE_XCONTRATOLOC, deverá apresentar o lookup multiplo na tela de contrato de locação. ( precisa ser "MRE_XCONTRATOLOC")




Criação de novos parametros, que podem ser utilizado no relatório dinâmico,pois antes não estava implementado
1-Criação de parametro decimal
2-Criação de parametro Float / Duplo
3-Aplicação do parametro :MRE_XCONTRATOLOC_IN :
Aplicação do MultiRecord, nessa versão sofreu modificações, deve ser utilizado como "IN" na sentença SQL. que por sua vez,
segue essa documentação,como premissa,

...


ou seja a sentença sql devera esta da seguinte forma:
....
WHERE
(SELECT value AS parametro FROM STRING_SPLIT(:MRE_XCONTRATOLOC_IN, ','))

4-Aplicação do lookup:
Lookup tem em sua maioria 2 valores como chave, e para que seja passado esse valores para a sentença sql, ela deverá conter o valor definido exemplo:
SELECT * FROM XALGCONTRATOLOC
WHERE CODCONTLOC =:CODCONTLOC AND CODCOLCONTLOC=:CODCOLCONTLOC
Caso existe o parametro LKP_XCONTRATOLOC definido no relatório, não será necessário criar o parametro no relatório, pois internamente é verificado se a setença
tem o parametro que compoem a chave primaria, no caso CODCOLCONTLOC, sendo assim é aplicado a o valor do lookup automaticamente.
(sempre é necessário definir o parametro na sentença sql, para ser aplicado autmaticamente, caso contrario, será aplicado apenas o CODCONTLOC)

5- Aplicação de filter, criação apenas do parametro de relatório, onde é aplicado no resultado do relatório ao filtro.
MRE_XCONTRATOLOC_FILTER.

6-criado validação, para que quando o usuário definir algum _filter, os campos precisam estar na sentença sql, caso contrato não tem filtro,
dessa forma, será exibido mensagem de erro. ( só exibe caso o usuário informe os valores no multi record)

O relatório não pode ser gerado porque a sentença SQL não contém os campos [] definidos no filtro [MRE_XIDLAN_FILTER], informado como parâmetro.

O relatório possui o parâmetro definido [

{0}

], porém ele não está presente na sentença SQL.