...
Informações | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Objeto oData Serão feitos tratamentos internos neste objeto. Ele possui apenas dois métodos para uso externo, usado em conjunto com os métodos da nova classe, sendo eles: Método AliasToData() - Método do objeto oData que converte o alias recebido em dados para o TReports.
Método AppendData() - Método do objeto oData que adiciona um json para o array de dados. Parâmetros:
Exemplos de uso estarão abaixo nos métodos criados para a classe IntegratedProvider. |
...
Informações |
---|
Método deverá ser utilizado no new() da nova classe criada, exemplo completo estará no final da documentação. |
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
lKeyLabel | Lógico | X | .F. | 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 |
Bloco de código |
---|
self:setIsCBoxLookup(.T., .T.) |
...
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. |
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 é obrigatório o preenchimento do campo. |
...
Informações |
---|
Método deverá ser utilizado no new() da nova classe criada, exemplo completo estará no final da documentação. |
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
lIsLookUp | Lógico | X | .F. | Indica que o filtro será do tipo padrão lookup |
Bloco de código |
---|
self:setIsLookup(.T.) |
...
Informações |
---|
Método deverá ser utilizado no getSchema() da nova classe criada, exemplo completo estará no final da documentação. |
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cId | Caracter | ID | Indica o cabeçalho de exibição da chave do lookup | |
cProd | Caracter | Código | Indica o cabeçalho de exibição do código do lookup (Mesmo conteúdo do ID) | |
cDesc | Caracter | Descrição | Indica o cabeçalho de exibição da descrição do lookup |
Bloco de código |
---|
self:oSchema:setDescriptor("Código","Código do Produto", "Descrição do Produto") |
...
Informações |
---|
Método deverá ser utilizado no getSchema() da nova classe criada, exemplo completo estará no final da documentação. |
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cField | Caracter | X | Indica o campo que será setado a consulta | |
aStruct | Array | X | Indica a estrutura que será utilizada no Lookup Exemplo da estrutura: aStruct[1][1]:"ATF0510001" aStruct[2][1]:"0003" | |
lIsRequired | Lógico | .F. | Indica que é obrigatório o preenchimento do campo |
Bloco de código |
---|
self:oSchema:setLookUpVal(cField, aStruct, lIsRequired) |
...
Informações |
---|
Método deverá ser utilizado no getSchema() da nova classe criada, exemplo completo estará no final da documentação. |
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cField | Caracter | X | Indica o campo que será setado a consulta | |
cTable | Caracter | X | Indica a tabela da SX5 que será utilizada para buscar a estrutura do lookup | |
lIsRequired | Lógico | .F. | Indica que é obrigatório o preenchimento do campo |
Bloco de código |
---|
self:oSchema:setLookUpVal(cField, cTable, lIsRequired) |
...
Informações |
---|
Método deverá ser utilizado no getSchema() da nova classe criada, exemplo completo estará no final da documentação. |
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cField | Caracter | X | Campo que será setado a consulta | |
aFields | Array | X | Indica os campos da estrutura da consulta (chave-descrição). Exemplo: aFields[1]:"ED_CODIGO" aFields[2]:"ED_DESCRIC" | |
cQuery | Caracter | X | Indica a tabela da SX5 que será utilizada para buscar a estrutura do lookup | |
lIsRequired | Lógico | .F. | Indica que é obrigatório o preenchimento do campo |
Bloco de código |
---|
self:oSchema:setLookUpQuery(cField, aFields, cQuery, lIsRequired) |
...
O log de debug somente é ativado pela chave no environment: fw-treports-debug=1
Aviso |
---|
Funcionalidade disponível a partir da LIB Label 20220613 |
Para facilitar a construção do Objeto de Negócio e melhorar a performance foi implementada a paginação na fonte de dados, além de simplificar a forma como ele é construído.
Seta a quantidade de itens por página.
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
nPageSize | Númerico | X | 100 | Indica a quantidade de itens por página |
Bloco de código |
---|
self:setPagesize(nPageSize) |
Sintaxe: self:setPagesize(<nPageSize>) → nil
Retorna a quantidade de itens por página.
Bloco de código |
---|
self:getPagesize() |
Sintaxe: self:getPagesize() → self:nPageSize
Seta a query do objeto de negócio.
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cQuery | Caracter | X | Indica a query do objeto de negócio |
Bloco de código |
---|
cQuery := "SELECT * FROM " + RetSQLName("SB1") + " WHERE B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '
self:setQuery(cQuery) |
Bloco de código |
---|
cQuery := "SELECT #QueryFields# FROM " + RetSQLName("SB1") + " WHERE B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '
self:setQuery(cQuery) |
Bloco de código |
---|
cQuery := "SELECT #QueryFields# FROM " + RetSQLName("SB1") + "WHERE #QueryWhere#" //Usa o ID #QueryWhere# para setar o where posteriormente
self:setQuery(cQuery)
self:setWhere("B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '") |
Sintaxe: self:setQuery(<cQuery>) → nil
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cWhere | Caracter | X | Indica o where da query |
Bloco de código |
---|
self:setWhere("B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '") |
Sintaxe: self:setWhere(<cWhere>) → nil
Seta o campo de ordenação da query.
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
cOrder | Caracter | X | Primeiro campo indicado no método getSchema() | Indica o campo de ordenação |
Bloco de código |
---|
self:setWhere("B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '") |
Sintaxe: self:setOrder(<cOrder>) → nil
Seta se terá próxima página.
Nome | Tipo | Obrigatório | Default | Descrição |
---|---|---|---|---|
lHasNext | Lógico | X | .F. | Indica se terá próxima página |
Bloco de código |
---|
self:setHasNext(.T.) |
Sintaxe: self:setHasNext(<lHasNext>) → nil
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 getData() as object
public method getSchema() as object
endclass
method new() class SB1TReportsBusinessObject
_Super:new()
//Define a Área
self:appendArea("Materiais")
//Define o nome do Objeto de Negócio
self:setDisplayName("Produtos")
//Define a descrição do Objeto de Negócio
self:setDescription("Produtos do Protheus")
return self
method getData() as object class SB1TReportsBusinessObject
local cQuery as character
//Define a quantidade máxima por página (Default 100)
self:setPageSize(20)
//Define a query do Objeto de Negócio
cQuery := "SELECT #QueryFields# FROM " + RetSQLName("SB1") + "WHERE #QueryWhere#"
self:setQuery(cQuery)
//Define o campo de ordenação da query
self:setOrder("B1_COD")
//Define o where da query
self:setWhere("B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '")
return self:oData
method getSchema() as object class SB1TReportsBusinessObject
self:addProperty("Filial", "Filial", "string", "Filial", "B1_FILIAL")
self:addProperty("Codigo", "Codigo", "string", "Código", "B1_COD")
self:addProperty("Descricao", "Descricao", "string", "Descricao","B1_DESC")
self:addProperty("Tipo", "Tipo", "string", "Tipo","B1_TIPO")
self:addProperty("Unidade", "Unidade de medida", "string", "Unidade","B1_UM")
self:addProperty("Revisao", "Revisao", "date", "Revisao","B1_UREV")
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 SB1TReportsBusinessObjectData from totvs.framework.treports.integratedprovider.IntegratedProvider
public method new() as object
public method getData() as object
public method getSchema() as object
endclass
method new() class SB1TReportsBusinessObjectData
_Super:new()
//Define a Área
self:appendArea("Materiais")
//Define o nome do Objeto de Negócio
self:setDisplayName("Produtos")
//Define a descrição do Objeto de Negócio
self:setDescription("Produtos do Protheus")
return self
method getData(nPage as numeric, oFilter as object) as object class SB1TReportsBusinessObjectData
//Define a quantidade máxima por página (Default 100)
//self:setPageSize(100)
self:aliasToData("SB1", oFilter, nPage) //nPage obrigatório para paginação
return self:oData
method getSchema() as object class SB1TReportsBusinessObjectData
self:aliasToSchema("SB1")
return self:oSchema |
Bloco de código | ||||
---|---|---|---|---|
| ||||
#include "msobject.ch"
#include "protheus.ch"
#include "totvs.framework.treports.integratedprovider.th"
namespace custom.materiais
@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 - KeyLabel")
self:setIsCBoxLookup(.T., .T.)
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
local nStart as numeric
local nEnd as numeric
cQuery := "SELECT B1_FILIAL, B1_COD, B1_DESC, B1_TIPO, B1_UM, B1_UREV, B1_FILIAL, B1_PRV1 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
//Seta a quantidade de itens por página (Default 100)
self:setPageSize(15)
//Indica que terá próxima página (Default .F.)
self:setHasNext(.T.)
//Seta o primeiro item e o último da página tual
nStart := ((nPage - 1) * self:getPageSize()) + 1
nEnd := nPage * self:getPageSize()
cAlias := MPSysOpenQuery(cQuery)
//Posiciona no registro inicial
(cAlias)->(DbGoTo(nStart))
while !(cAlias)->(Eof())
cDate := FwTimeStamp(6, StoD((cAlias)->B1_UREV))
self:oData:appendData({"Filial": (cAlias)->B1_FILIAL,;
"Codigo": (cAlias)->B1_COD,;
"Descricao": (cAlias)->B1_DESC,;
"Tipo": (cAlias)->B1_TIPO, ;
"Unidade": (cAlias)->B1_UM, ;
"Revisao": cDate ,;
"Preco": (cAlias)->B1_PRV1})
(cAlias)->(DBSkip())
if (cAlias)->(Recno()) > nEnd
exit
endif
enddo
if (cAlias)->(Eof())
//Necessário informar quando não terá próxima página
self:setHasNext(.F.)
endif
(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("Preco", "Preço", "number", "Preço","B1_PRV1")
return self:oSchema |