Versões comparadas

Chave

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

Sintaxe: GetDescription() → self:cTexto

Aviso

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

...

Informações

Objeto oSchema

Serão feitos tratamentos internos neste objeto.

Ele possui apenas dois métodos para uso externo, usados em conjunto com os métodos da nova classe, sendo eles:

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


Método AddProperty() - Método do objeto oSchema que adiciona uma propriedade ao schema.

Parâmetros:

NomeTipoObrigatórioDefaultDescrição
cNameCaracterX
Nome da propriedade
cDescriptionCaracterX
Descrição da propriedade
cTypeCaracterX
Tipo da propriedade
cDisplayNameCaracterX
Nome de exibição da propriedade
cRealNameCaracter

Nome da propriedade no Protheus (Nome real do campo da tabela)

Exemplos de uso estarão abaixo nos métodos criados para a classe IntegratedProvider.

Obs: O nome real é necessário para que o filtro seja feito com base no nome real do campo, caso contrário, o mesmo levará em consideração a propriedade name.

GetSchema()

Retorna a Estrutura de dados.

Exemplos de uso:

Bloco de código
method getSchema() as object class SEDTReportsBusinessObject
	self:oSchema:aliasToSchema("SED") //Alias utilizado para retorno dos dados
return self:oSchema
Bloco de código
method getSchema() as object class SEDTReportsBusinessObject
	self:oSchema:addProperty("Descrição", "Descrição da Natureza", "string", "Descrição", "ED_DESCRIC")
	self:oSchema:addProperty("Código", "Código da Natureza", "string", "Natureza", "ED_CODIGO")
return self:oSchema

Sintaxe: GetSchema() → objeto self:oSchema

GetData()

Retorna o Objeto de dados.

Parâmetros: 

...

Nome

...

cComboValues

Caracter
Ao ser utilizado o método self:setIsCBoxLookup() documentado abaixo, com o segundo parâmetro igual a .T., o cComboValues receberá o valor do combobox do campo a partir da SX3Valores do key-label (Formato igual ao combobox da SX3, ex.: "D MG 01=Filial BH" separado por ; caso tenha mais de uma opção)
lIsRequiredLógico
.F.Indica que será obrigatório informar um valor para o campo

Exemplos de uso estarão abaixo nos métodos criados para a classe IntegratedProvider.


Obs: O nome real é necessário para que o filtro seja feito com base no nome real do campo, caso contrário, o mesmo levará em consideração a propriedade name.

GetSchema()

Retorna a Estrutura de dados.

Exemplos de uso:

Bloco de código
method getSchema() as object class SEDTReportsBusinessObject
	self:oSchema:aliasToSchema("SED") //Alias utilizado para retorno dos dados
return self:oSchema
Bloco de código
method getSchema() as object class SEDTReportsBusinessObject
	self:oSchema:addProperty("Descrição", "Descrição da Natureza", "string", "Descrição", "ED_DESCRIC")
	self:oSchema:addProperty("Código", "Código da Natureza", "string", "Natureza", "ED_CODIGO")
return self:oSchema

Sintaxe: GetSchema() → objeto self:oSchema

GetData()

Retorna o Objeto de dados.

Parâmetros: 

Nome

TipoObrigatórioDefaultDescrição
nPageNumérico
Página atualNúmero da página atual
oFilterObjeto

Objeto do Filtro

Exemplos de uso:

Bloco de código
method getData(nPage as numeric, oFilter as object) as object class SEDTReportsBusinessObject
	// Objeto de filtro nulo pois o recurso não se encontra ativo
	self:oData:aliasToData("SED", oFilter)
return self:oData
Bloco de código
method getData(nPage as numeric, oFilter as object) as object class SEDTReportsBusinessObject
local cQuery as character
local cAlias as character

cQuery := "SELECT ED_DESCRIC FROM " + RetSqlName('SED') + " WHERE D_E_L_E_T_ = ' '"

if oFilter:hasFilter()
    cQuery += " AND " + oFilter:getSQLExpression()
endif

cAlias := MPSysOpenQuery(cQuery)

while !(cAlias)->(Eof())
    self:oData:appendData({"Descrição": (cAlias)->ED_DESCRIC})
    (cAlias)->(DBSkip())
enddo

(cAlias)->(DBCloseArea())

return self:oData


Sintaxe: GetData() → objeto self:oData

SetDisplayName()

Define o nome do relatório.

Exemplo

...

Exemplos de uso:

Bloco de código
method getData(nPage as numeric, oFilter as object) as object class SEDTReportsBusinessObject
	// Objeto de filtro nulo pois o recurso não se encontra ativo
	self:oData:aliasToData("SED", oFilter)
return self:oData
Bloco de código
method getData(nPage as numeric, oFilter as object) as object class SEDTReportsBusinessObject
local cQuery as character
local cAlias as character

cQuery := "SELECT ED_DESCRIC FROM " + RetSqlName('SED') + " WHERE D_E_L_E_T_ = ' '"

if oFilter:hasFilter()
    cQuery += " AND " + oFilter:getSQLExpression()
endif

cAlias := MPSysOpenQuery(cQuery)

while !(cAlias)->(Eof())
    self:oData:appendData({"Descrição": (cAlias)->ED_DESCRIC})
    (cAlias)->(DBSkip())
enddo

(cAlias)->(DBCloseArea())

return self:oData

Sintaxe: GetData() → objeto self:oData

SetDisplayName()

Define o nome do relatório.

Exemplo de uso:

Bloco de código
SetDisplayName("Naturezas")

...

GetDescription()

Retorna a descrição do relatório.

Sintaxe: GetDescription() → self:cTexto

Aviso
titleFiltros
Filtros ainda não disponibilizados para construção dos relatórios

relatório.

Sintaxe: GetDescription() → self:cTexto

Aviso
titleFiltros
Os filtros serão setados na interface do novo TReports


Implementação do LookUp dos campos

Com os métodos documentados a seguir será possível adicionar o LookUp dos campos na interface do TReports, seu uso é opcional.

Padrão Key-Label

Key - Chave do LookUp (Valor que será procurado na tabela do schema)

Label - Label de exibição do Lookup. (Nome amigável que será apresentado na interface do TReports)

Método self:setIsCBoxLookup()

Informações

Método deverá ser utilizado no new() da nova classe criada, exemplo completo estará no final da documentação.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
lKeyLabelLógicoX.F.Indica que o filtro lookup será do tipo key-label
lX3Lógico
.F.Indica que utilizará o SX3 para recuperar os valores do key-label dos campos

Exemplo de uso:

Bloco de código
self:setIsCBoxLookup(.T., .T.)

Sintaxe: self:SetIsCBoxLookUp(<lKeyLabel>, <lX3>) → nil

Método self:oScheam:setComboValues()

Informações

Método deverá ser utilizado no getSchema() da nova classe criada, exemplo completo estará no final da documentação.

Utilização com o método addProperty() documentado acima

Exemplo de uso:

Bloco de código
self:oSchema:addProperty("Filial", "Filial", "string", "Filial", "B1_FILIAL", "D MG 01=Filial BH; D MG 02=Filial Uberaba", .F.)


Exemplos de criação da nova classe:

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"}

// FiltroOs nulofiltros enquantoserão nãosetados tiverna implementaçãointerface do novo TReports
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 A2_NOME, A2_COD 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	//Os filtros serão setados na interface do novo TReports
	if oFilter:hasFilter()
	    cQuery += " AND " + oFilter:getSQLExpression()
	endif

	cAlias := MPSysOpenQuery(cQuery)

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

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

method getSchema() as object class SA2TReportsBusinessObject
	self:oSchema:addProperty("Nome", "Nome do Fornecedor", "string", "Fornecedor", "A2_NOME")
	self:oSchema:addProperty("Codigo", "Codigo do Fornecedor", "string", "Cod do Fornecedor", "A2_COD")
return self:oSchema
Bloco de código
titleExemplo 3
collapsetrue
#include "msobject.ch"
#include "totvs.framework.treports.integratedprovider.th"

namespace custom.materiais.produtos.integratedprovider

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

method new() class SB1TReportsBusinessObject
_Super:new()
self:appendArea("Materiais")
self:appendArea("Faturamento")
return self

method getDisplayName() as character class SB1TReportsBusinessObject
return "Produtos"

method getDescription() as character class SB1TReportsBusinessObject
return "Produtos do Protheus"

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

cQuery := "SELECT B1_COD, B1_DESC, B1_TIPO, B1_UM FROM " + RetSQLName("SB1") + " WHERE D_E_L_E_T_ = ' '"

//Os seráfiltros possívelserão adicionarsetados filtrona apósinterface ado implementaçãonovo 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({"Filial": (cAlias)->B1_FILIAL,; 
            "Codigo": (cAlias)->B1_COD,; 
            "Descricao": (cAlias)->B1_DESC,;
            "Tipo": (cAlias)->B1_TIPO, ;
            "Unidade": (cAlias)->B1_UM, ;
            "Revisao": FwTimeStamp(6, StoD((cAlias)->B1_UREV)) }) //O campo data deverá ser enviado no formato correto
    (cAlias)->(DBSkip())
enddo

(cAlias)->(DBCloseArea())

return self:oData

method getSchema() as object class SB1TReportsBusinessObject
self:oSchema:addProperty("Codigo", "Código", "string", "Código", "B1_COD")
self:oSchema:addProperty("Descricao", "Descrição", "string", "Descricao","B1_DESC")
self:oSchema:addProperty("Tipo", "Tipo", "string", "Tipo","B1_TIPO")
self:oSchema:addProperty("Unidade", "Unidade de medida", "string", "Unidade","B1_UM")
self:oSchema:addProperty("Revisao", "Revisao", "date", "Revisao","B1_UREV") 
return self:oSchema