Histórico da Página
...
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:
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. |
...
Aviso | ||
---|---|---|
| ||
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
...
Exemplos de criação da nova classe:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#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"}
// Os filtros serão setados na interface 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 | ||||
---|---|---|---|---|
| ||||
#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_ = ' '"
//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 | ||||
---|---|---|---|---|
| ||||
#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 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({"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 |
Implementação do LookUp dos campos
Informações |
---|
Disponível a partir da LIB Label 20220207 |
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
...
Exemplo de uso:
Bloco de código |
---|
self:setIsCBoxLookup(.T., .T.) |
Sintaxe: self:SetIsCBoxLookUp(<lKeyLabel>, <lX3>) → nil
...
()
Informações |
---|
Método deverá ser utilizado no getSchemanew() da nova classe criada, exemplo completo estará no final da documentação. |
Parâmetros:
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
lKeyLabel | Lógico | X | .F. |
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 | ||||
---|---|---|---|---|
| ||||
#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"}
// Os filtros serão setados na interface 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
|
Indica que o filtro lookup será do tipo key-label | ||||
lX3 | Ló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
Aviso | ||
---|---|---|
| ||
Ao utilizar o parâmetro lX3 como .T. todos os campos da classe passará pela aplicação do lookup de acordo com a SX3, caso o número de campos seja grande a performance poderá ser afetada. |
Método self:oSchema:setComboValues()
Informações |
---|
Método deverá ser utilizado no getSchema() após a criação dos campos da nova classe, exemplo completo estará no final da documentação. |
Parâmetros:
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cField | Caracter | X | Campo que receberá o LookUp Key-Label | |
cComboValues | Caracter | X | Valores do key-label (Formato igual ao combobox da SX3, ex.: "D MG 01=Filial BH" separado por ; caso tenha mais de uma opção) | |
lIsRequired | Lógico | .F. | Indica que será obrigatório informar um valor para o campo |
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 completos com LookUp Key-Label:
Bloco de código | ||||
---|---|---|---|---|
| ||||
Bloco de código | ||||
| ||||
#include "msobject.ch" #include "protheus.ch" #include "totvs.framework.treports.integratedprovider.th" namespace custom.financeiro.fornecedores.integratedprovidermateriais @totvsFrameworkTReportsIntegratedProvider(active=.T.) class SA2TReportsBusinessObjectSB1TReportsBusinessObject from totvs.framework.treports.integratedprovider.IntegratedProvider public method new() as object public method getAreasgetDisplayName() as arraycharacter public method getDescription() as character public method getData() as object public method getSchema() as object public method getLookUp() as object endclass method new() as object class SA2TReportsBusinessObjectSB1TReportsBusinessObject _Super:new() self:setDisplayNameappendArea("FornecedoresMateriais") self:setIsCBoxLookup(.T., .T.) return self method getDescriptiongetDisplayName() as character class SA2TReportsBusinessObjectSB1TReportsBusinessObject return "Fornecedores do ProtheusProdutos" method getAreasgetDescription() as arraycharacter class SA2TReportsBusinessObjectSB1TReportsBusinessObject return {"Financeiro", "Contas a pagar"} Produtos do Protheus" method getData(nPage as numeric, oFilter as object) as object class SA2TReportsBusinessObjectSB1TReportsBusinessObject local cQuery as character local cAlias as character cQuery := "SELECT A2_NOME, A2_COD B1_COD, B1_DESC, B1_TIPO, B1_UM, B1_UREV, B1_FILIAL FROM " + RetSqlName('SA2'RetSQLName("SB1") + " WHERE D_E_L_E_T_ = ' '" //Os filtros serão setados na interface do novo TReports if oFilter:hasFilter() cQuery += " AND " + oFilter:getSQLExpression() endif cAlias := MPSysOpenQuery(cQuery) while !(cAlias)->(Eof()) cDate := FwTimeStamp(6, StoD((cAlias)->B1_UREV)) self:oData:appendData({"NomeFilial": (cAlias)->A2>B1_NOMEFILIAL,; "Codigo": (cAlias)->A2>B1_COD}) ,; "Descricao": (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 | ||||
| ||||
>B1_DESC,;
"Tipo": (cAlias)->B1_TIPO, ;
"Unidade": (cAlias)->B1_UM, ;
"Revisao": cDate ,;
"Data": StoD((cAlias)->B1_UREV)})
(cAlias)->(DBSkip())
enddo
(cAlias)->(DBCloseArea())
return self:oData
method getSchema() as object class SB1TReportsBusinessObject
local cComboFil as character
cComboFil := "D MG 01=Filial BH; D MG 02=Filial Uberaba"
self:oSchema:addProperty("Filial", "Filial", "string", "Filial", "B1_FILIAL", cComboFil,.F.)
self:oSchema:addProperty("Codigo", "Codigo", "string", "Codigo", "B1_COD")
self:oSchema:addProperty("Descricao", "Descricao", "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")
self:oSchema:addProperty("Data", "Data", "date", "Data","B1_UREV")
self:oSchema:addProperty("Preço", "Preço", "number", "Preço","B1_PRV1") |
Exemplo de exibição na interface do TReports:
Com o parâmetro lX3 = .T. ele carrega o combobox da SX3, além dos valores setados no addProperty.
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include "msobject.ch"
#include "protheus.ch"
#include "totvs.framework.treports.integratedprovider.th"
namespace custom.financeiro.naturezas.integratedprovider
// Parece que ao fazer o uso da namespace dessa forma, está gerando alguams exceções aleatório quanto as propriedades das classes
// using namespace totvs.framework.treports.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")
self:setIsCBoxLookup(.T., .F.)
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")
self:oSchema:setComboValues("ED_FILIAL", "D MG 01=Filial BH; D MG 02=Filial Uberaba", .F.)
self:oSchema:setComboValues("ED_CALCIRF", "Sim=Sim; Não=Não")
return self:oSchema |