Versões comparadas

Chave

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

...

Bloco de código
method new() as object class SRA2TReportsBusinessObject
    _Super:new()
    self:setDisplayName("Funcionários")

    if !self:setPergunte("GPER140") //Indica o pergunte que será utilizado no relatório
      FwLogMsg("WARN",, "SmartView",,, , "Grupo de perguntas nao encontrado", , ,)   
    endif
return self

Sintaxe:setPergunte(<cPergunte>) → nillogical

Informações
titlePergunte

Todos os MV_PAR virão maiúsculos no retorno. Ex: MV_PAR01, MV_PAR02 

...

SetErrorStatus()

Indica se o campo pode ser filtrado.

...

o código de erro e as mensagens que serão exibidas no relatório

Parâmetros:

NomeTipoObrigatórioDefaultDescrição
cId
nCodError
Caractere
NuméricoX

Id da propriedade

Obs.: Se foi utilizado o método aliasToSchema o Id da propriedade é o nome do campo na tabela, ex. A1_NOME

lCanFilterLógicoXIndica se o campo pode ser filtrado

Códigos de erro 4xx. 
cMessageCaractereX
Mensagem de erro que será exibida.
cDetailedMsgCaractereX
Mensagem detalhada do erro que será exibida.

Exemplo de Exemplo de uso:

Bloco de código
method getSchemanew() as object class BA3TReportsBusinessObject
	self:aliasToSchema("BA3" , {"BA3_DATBLO", "BA3_CODINT", "BA3_MATRIC"})
 	self:setCanFilter("BA3_MATRIC", .F.) //Setando o campo enviado pelo aliasToSchema como não filtrável
return self

Sintaxe: setCanFilter(<cId>, <lCanFilter>) → nil

SetPropDisplayName()

SRA2TReportsBusinessObject
    _Super:new()
    self:setDisplayName("Funcionários")

     if !self:setPergunte("GPER140") //Indica o pergunte que será utilizado no relatório GPER140
        if !self:setErrorStatus(400,"Sem Pergunte","Verifique o grupo de perguntas informado!")
           FwLogMsg("WARN",, "SmartView",,, , "Codigo de erro invalido, aceito somente codigos de erro 4xx", , ,)
        endif
         FwLogMsg("WARN",, "SmartView",,, , "Grupo de perguntas nao encontrado", , ,)   
    endif

return self

Sintaxe:setErrorStatus(<nCodError>, <cMessage>, <DetailedMsg>) → logical


Informações

Método disponível a partir da LIB Label 20230918


...

SetCanFilter()

Indica se o campo pode ser filtrado.

Informações

Método disponível a partir da LIB Label 20230626

Parâmetros:

NomeTipoObrigatórioDefaultDescrição
cIdCaractereX

Id da propriedade

Obs.: Se foi utilizado o método aliasToSchema o Id da propriedade é o nome do campo na tabela, ex. A1_NOME

lCanFilterLógicoX
Indica se o campo pode ser filtrado

Exemplo de uso:

Bloco de código
method getSchema() as object class BA3TReportsBusinessObject
	self:aliasToSchema("BA3" , {"BA3_DATBLO", "BA3_CODINT", "BA3_MATRIC"})
 	self:setCanFilter("BA3_MATRIC", .F.) //Setando o campo enviado pelo aliasToSchema como não filtrável
return self

Sintaxe: setCanFilter(<cId>, <lCanFilter>) → nil


...

SetPropDisplayName()

Seta o Seta o displayName da propriedade.

Informações

Método disponível a partir da LIB Label 20230626

Parâmetros:

NomeTipoObrigatórioDefaultDescrição
cIdCaractereX

Id da propriedade

Obs.: Se foi utilizado o método aliasToSchema o Id da propriedade é o nome do campo na tabela, ex. A1_NOME

cDisplayNameCaractereX
Nome de exibição

Exemplo de uso:

Bloco de código
method getSchema() as object class BA3TReportsBusinessObject  
	self:aliasToSchema("BA3" , {"BA3_DATBLO", "BA3_CODINT", "BA3_MATRIC", "BA3_VERCON"})
	self:setPropDisplayName("BA3_VERCON", "Versão (BA3)") //Mudando o displayName da propriedade de BA3_VERCON para Versão (BA3)
return self

...

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.)

...

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

TipoObrigatórioDefaultDescrição
cFieldCaracterX
Campo que receberá o LookUp Key-Label

cComboValues

CaracterX
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.

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.)

...

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
lIsLookUpLógicoX.F.Indica que o filtro será do tipo padrão lookup

Exemplo de uso:

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.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
cIdCaracter
IDIndica o cabeçalho de exibição da chave do lookup
cProdCaracter
CódigoIndica o cabeçalho de exibição do código do lookup (Mesmo conteúdo do ID)
cDescCaracter
DescriçãoIndica o cabeçalho de exibição da descrição do lookup

Exemplo de uso:

Bloco de código
self: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.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
cFieldCaracterX
Indica o campo que será setado a consulta
aStructArrayX

Indica a estrutura que será utilizada no Lookup

Exemplo da estrutura:

aStruct[1][1]:"ATF0510001"
aStruct[1][2]:"ATFA036 EMISSAO DE NOTA EM LOT"

aStruct[2][1]:"0003"
aStruct[2][2]:"PRODUTO PADRAO"

lIsRequiredLógico
.F.Indica que é obrigatório o preenchimento do campo
aDescriptorarray
Titulo do campo de acordo com SX3array com as descrições de cada campo, na ordem do dados passados (a partir da lib 20230515)
nFieldReturnnumérico
1numero da coluna que deverá retornar na consulta (a partir da lib 20230515)

Exemplo de uso:

Bloco de código
self: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.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
cFieldCaracterX
Indica o campo que será setado a consulta
cTableCaracterX

Indica a tabela da SX5 que será utilizada para buscar a estrutura do lookup

lIsRequiredLógico
.F.Indica que é obrigatório o preenchimento do campo

Exemplo de uso:

Bloco de código
self:setX5Struct(cField, cTable, lIsRequired)

...

Informações

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

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição

cField

CaracterX
Campo que será setado a consulta
aFieldsArrayX

Indica os campos da estrutura da consulta (chave-descrição).

Exemplo:

aFields[1]:"ED_CODIGO"

aFields[2]:"ED_DESCRIC"

ou (a partir da lib 20230515)
aFields[1] := {"CAMPO","TIPO", SIZE, DECIMAL}
Caso seja passado um vetor simples apenas com o nome dos campos os dados adicionais serão procurados na SX3

cQueryCaracterX

Indica a tabela da SX5 que será utilizada para buscar a estrutura do lookup

lIsRequiredLógico
.F.Indica que é obrigatório o preenchimento do campo
aDescriptorarray
Titulo do campo de acordo com SX3array com as descrições de cada campo, na ordem do dados passados (a partir da lib 20230515)
cFieldReturnCaracter
Primeiro campo do aFieldscoluna que deverá retornar na consulta (a partir da lib 20230515)
cOrderCaracter
Primeiro campo do aFieldsclausula a ser utilizada no order by do select (a partir da lib 20230515)

Exemplo de uso:

Bloco de código
self:setLookUpQuery(cField, aFields, cQuery, lIsRequired)

...

Seta a quantidade de itens por página.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
nPageSizeNúmericoX100Indica a quantidade de itens por requisição

Exemplo de uso:

Bloco de código
self:setPagesize(nPageSize)

...

Retorna a quantidade de itens por requisição.

Exemplo de uso:

Bloco de código
self:getPagesize()

...

Seta a query do objeto de negócio.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
cQueryCaracterX
Indica a query do objeto de negócio

...

  • Se não forem enviados todos os campos (Exemplo: SELECT * FROM) deverá ser usado o ID #QueryFields# e os campos setados serão aqueles recuperados do método getSchema().
  • É possível escrever a query e setar o where dela posteriormente com o método self:setWhere(), para isso deverá ser utilizado o ID #QueryWhere# após o Where da query.

Exemplo de uso:

Bloco de código
cQuery := "SELECT * FROM " + RetSQLName("SB1") + " WHERE B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '
self:setQuery(cQuery)

...

Método self:setWhere()

Seta o where da query.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
cWhereCaracterX
Indica o where da query

Exemplo de uso:

Bloco de código
self:setWhere("B1_FILIAL = '"+ FWxFilial('SB1') +"' AND D_E_L_E_T_ = ' '") 

...

Seta o campo de ordenação da query.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
cOrderCaracterXPrimeiro campo indicado no método getSchema()Indica o campo de ordenação

Exemplo de uso:

Bloco de código
self:setOrder("B1_COD") 

...

Seta se terá próxima página.

Parâmetros:

Nome

TipoObrigatórioDefaultDescrição
lHasNextLógicoX.F.Indica se terá próxima página

Exemplo de uso:

Bloco de código
self:setHasNext(.T.) 

...

Bloco de código
titleExemplo completo - Objeto de negócio com parâmetros nativos SX1
collapsetrue
#include "msobject.ch"
#include "totvs.framework.treports.integratedprovider.th"
#include "tlpp-core.th"
#include "tlpp-rest.th"

namespace totvs.protheus.rh.treportsintegratedprovider
 
@totvsFrameworkTReportsIntegratedProvider(active=.T.)
class SRA2TReportsBusinessObject from totvs.framework.treports.integratedprovider.IntegratedProvider.treportsintegratedprovider
 
@totvsFrameworkTReportsIntegratedProvider(active=.T.)
class SRA2TReportsBusinessObject 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 SRA2TReportsBusinessObject
    _Super:new()
    self:setDisplayName("Funcionários")

    public method new() as objectif !self:setPergunte("GPER140") //Indica o pergunte que será utilizado no relatório GPER140
    public method getAreas() as array	if !self:setErrorStatus(400,"Sem Pergunte","Verifique o grupo de perguntas informado!")
    public method getDescription() as character
    public method getData() as object
    public method getSchema() as object
endclass
 
method new() as object class SRA2TReportsBusinessObject
    _Super:new()
    self:setDisplayName("Funcionários")

    self:setPergunte("GPER140") //Indica o pergunte que será utilizado no relatório 	FwLogMsg("WARN",, "SmartView",,, , "Codigo de erro invalido, aceito somente codigos de erro 4xx", , ,)
        endif
        FwLogMsg("WARN",, "SmartView",,, , "Grupo de perguntas nao encontrado", , ,)   
    endif

return self
 
method getDescription() as character class SRA2TReportsBusinessObject
return "Funcionários"
 
method getAreas() as array class SRA2TReportsBusinessObject
return {"RH"}
 
method getData(nPage as numeric, oFilter as object) as object class SRA2TReportsBusinessObject
local cQuery as character   
local jParams as json
local cWhere as character

if !self:lExistPergunte //retorno do método SetPergunte()
    return self:oData
else
	jParams := oFilter:getParameters() //metodo para retorno do json dos parâmetros

	cWhere := " D_E_L_E_T_ = ' '"

	//MV_PAR04 é multivalue
	if Len(jParams['MV_PAR04']) > 0
    	cWhere += " AND RA_MAT IN ('" + ArrTokStr(jParams['MV_PAR04'], "','") + "')"
	endif

	cQuery := "SELECT #QueryFields# FROM " + RetSQLName("SRA") +  " WHERE #QueryWhere#"

	//Define a quantidade máxima por página (Default 100)
	self:setPageSize(500)
	//Define a query do Objeto de Negócio
	self:setQuery(cQuery)
	//Define o campo de ordenação da query
	self:setOrder("RA_MAT")

	//Define o where da query
	self:setWhere(cWhere) 
endif

return self:oData
 
method getSchema() as object class SRA2TReportsBusinessObject
    self:aliasToSchema("SRA" , {"RA_NOME", "RA_FILIAL", "RA_MAT", "RA_EMAIL", "RA_ADMISSA"})
return self:oSchema

...