Relatórios

Introdução

A visualização das consultas automatizadas utilizando DataSource se dá pelo uso de classes especializadas de Visualization, ou DSV (arquivos “.idsv”). Segue abaixo um exemplo simples de como utilizar o DSV.

Criando a fonte de dados (.ids)

{
  includes: [
    -1897036629 //IQuery.ijs
  ],

  help: "Help do DataSource",

  availableFilters: [
    {
    classKey: -2008879000 /* Pedidos ou Provisões */,
    prefix: "PED",
    options: {}
    }
  ],

  availableColumns: [
    {
    classKey:  -2008879000 /* Pedidos ou Provisões */,
    prefix: "PED"
    }
  ],

  // Chamado durante a construção do DataSource.
  onCreate: function (dataSource) {
    var flt = dataSource.filters.filter("PED_EMISSAO_START")
    flt.help = "Data de Emissão Inicial"
    var flt = dataSource.filters.filter("PED_EMISSAO_END")
    flt.help = "Data de Emissão Final"
  },

  onGetQuery: function (dataSource, filters, columns) {
    var flts = filters.getIQueryFilters( "PED_*", "and" )
    var cols = columns.getIQueryColumns( "PED_*" )
    var iquery = IQuery.from( -2008879000 /* Pedidos ou Provisões */ )
    .where(flts)
    .column(cols)
    return iquery.toSql()
  }
}

É o possível testar um IDS no IDBCSql. Segue abaixo um exemplo:

var dataSource = new DataSource( 38401590 /* Pedidos.ids */ )

var filtros= dataSource.createFilters([
  { name: "PEDIDO_EMISSAO_START", value: new Date() },
  { name: "PEDIDO_EMISSAO_END", value: new Date() }
])

var colunas= dataSource.createColumns([
  { name: "PEDIDO_RECURSO.NOME"},
  {name: "PEDIDO_EMISSAO"}
])

dataSource.getDataSet( filtros, colunas )

Criando a consulta na fonte de dados (.idsq)

No IDSQ é possível retirar filtros e colunas que estão definidas no IDS ou adicionar filtros e colunas que não estão no IDS, mas que podem serem derivados a partir de um filtro ou coluna do IDS.

{
  dataSourceKey: 39050662 /* Pedidos_Exemplo.ids */,

  useAllFilters: false, // default true,
  useAllColumns: false, // default true,

  filters: [
    {name: 'PEDIDO_PESSOA'},
    {name: 'PEDIDO_EMISSAO_START'},
    {name: "PEDIDO_LOCESCRITU"}
  ],

  columns: [
    {name: 'PEDIDO_PESSOA.NOME', alias:"N_PESSOA"},
    {name: 'PEDIDO_ESTABELECI.NOME', alias:"N_ESTE"},
    {name: 'PEDIDO_EMISSAO'},
    {name: 'PEDIDO_TOTAL'}
  ]
}

Criando a visualização da fonte de dados (.idsv)

A API do IDSV é uma API aberta que varia de acordo com o tipo de Visualization. O exemplo abaixo configura o um IDSV para o Visualization do tipo Report.

{
  dataSourceQueryKey: 39050629,
  type: "report",

  // Propriedades alteráveis das variáveis do simpleLayout:
  // label , order, required e column
  filters: [
    {name: "PEDIDO_PESSOA",  required: false, order: 10, label: "Pessoa do Pedido"},
    {name: "PEDIDO_EMISSAO_START", order: 15, label: "Emissão Inicial"},
    {name: "PEDIDO_EMISSAO_END", order: 20, label: "Emissão Final"},
    {name: "PEDIDO_PROGRAMACA", order: 25, label: "Programados para"},
    {name: "PEDIDO_LOCESCRITU", order: 30, label: "Local de Escrituração"}
  ],
  columns: [
    {name: 'PEDIDO_PESSOA.NOME', label:"Pessoa do Pedido", useToGroup: true},
    {name: 'PEDIDO_ESTABELECI.NOME', label:"Estabelecimento", useToGroup: true},
    {name: 'PEDIDO_EMISSAO', label:"Emissão"},
    {name: 'PEDIDO_TOTAL', label:"Total", simpleLayoutAggregate: "sum"}
  ]
}