Versões comparadas

Chave

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

Ler documentação sobre os serviços que utilizarão essa classe: TReports - Protheus como Fonte de Dados

Aviso

Classe deverá ser utilizada com a linguagem TL++

...

Classe disponibilizada para a construção do Objeto de Negócio para integração com o TReports, sendo possível utilizá-la como um facilitador para a geração de relatórios.

Utilização da Nova Classe

...

Informações

Objetos oData e oSchema são tratados internamente, nesta documentação haverá exemplos de métodos destes objetos, apenas eles serão utilizados externamente.

Sintaxe: self:New() → objeto self

GetSchema()

Retorna o Schema de dados.

Informações
titleMétodo AliasToSchema()

self:oSchema:AliasToSchema() - Método do objeto objeto oSchema que transforma o alias em um schema, todos os campos serão enviados.

Método disponível para uso externo, outros tratamentos do objeto oSchema é feito internamente.

...

Bloco de código
method getSchema() as object class SEDTReportsBusinessObject
	self:oSchema:addProperty("Descrição", "Descrição da Natureza", "C", "ED_DESCRIC")
	self:oSchema:addProperty("Código", "Código da Natureza", "C", "ED_CODIGO")
return self:oSchema

Sintaxe: self:GetSchema() → objeto self:oSchema

GetData()

Retorna o Objeto de dados.

...

Bloco de código
method getData(nPage as numeric, oFilter as object) as object class SEDTReportsBusinessObject
	self:oData:aliasToData("SED", oFilter) //Exemplo sem uso do filtro
return self:oData

Sintaxe: self:GetData() → objeto self:oData

SetDisplayName()

Define o nome do relatório.

Exemplo de uso:

Bloco de código
self:SetDisplayName("Naturezas")

Sintaxe: self:SetDisplayName(<cTexto>) → nil

GetDisplayName()

Retorna o nome do relatório.

Sintaxe: self:GetDisplayName() → self:cTexto

AppendArea()

Adiciona uma área a qual o relatório pertence.

...

Exemplo de uso:

Bloco de código
self:AppendArea("Financeiro")

Sintaxe: self:AppendArea(<cArea>) → nil

GetAreas()

Retorna a área que os relatórios pertencem.

Sintaxe: self:GetAreas() → self:aArray

SetDescription()

Define a descrição do relatório.

Sintaxe: self:SetDescription(<cTexto>) → nil

GetDescription()

Retorna a descrição do relatório.

Sintaxe: self:GetDescription() → self:cTexto

Exemplos completos:

Bloco de código
titleExemplo 1
collapsetrue
#include "msobject.ch"
#include "totvs.framework.treports.integratedprovider.th"

namespace custom.financeiro.naturezas.integratedprovider

@totvsFrameworkTReportsIntegratedProvider(active=.T.)
class SEDTReportsBusinessObject from totvs.framework.treports.integratedprovider.IntegratedProvider
    public method new() as object
    public method getDisplayName() as character
    public method getAreas() as array
    public method getData() as object
    public method getSchema() as object
endclass

method new() as object class SEDTReportsBusinessObject
	_Super:new()
	self:setDescription("Naturezas financeiras do Protheus")
return self

method getDisplayName() as character class SEDTReportsBusinessObject
return "Naturezas"

method getAreas() as array class SEDTReportsBusinessObject
return {"Financeiro"}

method getData(nPage as numeric, oFilter as object) as object class SEDTReportsBusinessObject
	self:oData:aliasToData("SED", oFilter)
return self:oData

method getSchema() as object class SEDTReportsBusinessObject
	self:oSchema:aliasToSchema("SED")
return self:oSchema

Bloco de código
titleExemplo 2
collapsetrue
#include "msobject.ch"
#include "totvs.framework.treports.integratedprovider.th"

namespace custom.financeiro.fornecedores.integratedprovider

@totvsFrameworkTReportsIntegratedProvider(active=.T.)
class SA2TReportsBusinessObject from totvs.framework.treports.integratedprovider.IntegratedProvider
    public method new() as object
    public method getAreas() as array
    public method getDescription() as character
    public method getData() as object
    public method getSchema() as object
endclass

method new() as object class SA2TReportsBusinessObject
	_Super:new()
	self:setDisplayName("Fornecedores")
return self

method getDescription() as character class SA2TReportsBusinessObject
return "Fornecedores do Protheus"

method getAreas() as array class SA2TReportsBusinessObject
return {"Financeiro", "Contas a pagar"}

method getData(nPage as numeric, oFilter as object) as object class SA2TReportsBusinessObject
	local cQuery as character
	local cAlias as character

	cQuery := "SELECT * FROM " + RetSqlName('SA2') + " WHERE D_E_L_E_T_ = ' '"
	
	//Só será possível adicionar filtro após a implementação do TReports pois o mesmo irá pelo body da requisição
	if oFilter:hasFilter()
	    cQuery += " AND " + oFilter:getSQLExpression()
	endif

	cAlias := MPSysOpenQuery(cQuery)

	while !(cAlias)->(Eof())
	    self:oData:appendData({"Nome": (cAlias)->A2_NOME})
	    (cAlias)->(DBSkip())
	enddo

	(cAlias)->(DBCloseArea())
return self:oData

method getSchema() as object class SA2TReportsBusinessObject
	self:oSchema:addProperty("Nome", "Nome do Fornecedor", "C", "A2_NOME")
	self:oSchema:addProperty("Código", "Código do Fornecedor", "C", "A2_COD")
return self:oSchema

...