Árvore de páginas

Realiza a busca dos dados dos detalhes do monitor, como as informações para a tabela, tags e texto do header da página.

Parâmetros

NomeTipoDescrição
oFiltrosObjeto JsonObjeto json com os filtros e seus valores informados.
nPaginaNuméricoNúmero da página que buscará os dados da tabela.


Retorno

TipoDescrição
CaracterString no formato json com conteúdo necessário da tela de detalhes.
Exemplo
Method BuscaDetalhes(oFiltros,nPagina) Class StatusLotesAVencer
	Local aColunas   := {}
    Local cAlias     := GetNextAlias()
	Local cJsonRet   := ""
    Local cQuery     := ""
    Local dDataFim   := Nil
    Local lExpResult := .F.
	Local nIndCol    := 0
	Local nIndHeader := 0
    Local nIndTag    := 0
    Local nPos       := 0
    Local nStart     := 1
    Local nTamPagina := 20
    Local oDados     := JsonObject():New()
	Local oEstHeader := JsonObject():New()

    Default nPagina := 1

    //A exportação de resultado para o formato csv passa o parâmetro nPagina igual a zero para que a exportação não seja paginada
    If nPagina == 0
        lExpResult := .T.
    EndIf

    oFiltro["01_B8_FILIAL"] := PadR(oFiltro["01_B8_FILIAL"], FWSizeFilial())
	
	//Propriedades que devem ser retornadas na requisição de detalhes
    oDados["items"]        := {}  //Array de objetos json com os dados que serão visualizados na tabela
    oDados["columns"]      := {}  //Array de objetos json com as colunas que serão visualizadas na tabela
    oDados["canExportCSV"] := .T. //Indica se permite a exportação do resultado do detalhe para arquivo csv
	oDados["headers"]      := {}  //Array de objetos com os headers da página de detalhes
    oDados["tags"]         := {}  //Array de objetos json com as tags que serão visualizadas no detalhe
	oDados["hasNext"]      := .F. //Indica se há mais páginas de dados para serem visualizadas na tabela
	
    //Definição das colunas da tabela
	PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_FILIAL","Filial","string",lExpResult)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_LOTECTL","Lote","string",.T.)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_NUMLOTE","Sub-Lote","string",lExpResult)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_PRODUTO","Produto","string",.T.)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B1_DESC","Desc. Produto","string",lExpResult)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_LOCAL","Armazém","string",.T.)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_DTVALID","Validade","string",.T.)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_QTDORI","Quant. Orig.","string",.T.)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_SALDO","Saldo","string",.T.)
    PCPMonitorUtils():AdicionaColunaTabela(aColunas,@nIndCol,"B8_UM","Un. Medida","string",lExpResult)	
	oDados["columns"]      := aColunas
	
    PCPMonitorUtils():AdicionaTagMonitor(oDados["tags"],@nIndTag,"po-icon-calendar",dToC(dDatabase) + " - " + dToC(dDataFim))
    PCPMonitorUtils():AdicionaTagMonitor(oDados["tags"],@nIndTag,"po-icon-bar-code",oFiltro["02_B8_PRODUTO"])

	oEstHeader["font-weight"] := "bold"
	PCPMonitorUtils():AdicionaHeaderDetalhe("Lotes a Vencer do Produto " + oFiltro["02_B8_PRODUTO"],nIndHeader,"po-sm-12",oEstHeader:FromJson())

    //Exemplo de query com filtros com uso de paginação considerando a exceção da exportação de resultado
	cQuery += " SELECT "
    cQuery += "     SB8.B8_FILIAL,  SB8.B8_QTDORI,  SB8.B8_PRODUTO,  SB8.B8_LOCAL,  SB8.B8_DTVALID, "
    cQuery += "     SB8.B8_SALDO, SB8.B8_LOTECTL, SB1.B1_DESC, SB8.B8_NUMLOTE, SB1.B1_UM "
    cQuery += " FROM "+RetSqlName("SB8")+" SB8 "
    cQuery += " LEFT JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1",oFiltro["01_B8_FILIAL"])+"' AND SB1.B1_COD = SB8.B8_PRODUTO AND SB1.D_E_L_E_T_ = ' ' "
    cQuery += " WHERE SB8.B8_FILIAL = '" + xFilial("SB8",oFiltro["01_B8_FILIAL"]) + "' "
    cQuery += "   AND SB8.B8_PRODUTO = '"+oFiltro["02_B8_PRODUTO"]+"'  "
    cQuery += "   AND SB8.B8_DTVALID BETWEEN '"+DTOS(ddatabase)+"' AND  '"+DTOS(dDataFim)+"' "
    cQuery += "   AND SB8.B8_SALDO > 0 "
    cQuery += "   AND SB8.D_E_L_E_T_  = ' ' "
    cQuery += " ORDER BY SB8.B8_FILIAL,SB8.B8_DTVALID,SB8.B8_LOTECTL  "
    dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAlias,.F.,.F.)

    If nPagina > 1
		nStart := ( (nPagina-1) * nTamPagina )
		If nStart > 0
			(cAlias)->(DbSkip(nStart))
		EndIf
	EndIf

    While (cAlias)->(!Eof())
        aAdd(oDados["items"], JsonObject():New())
        nPos++
        oDados["items"][nPos]["B8_FILIAL"  ] := (cAlias)->B8_FILIAL
        oDados["items"][nPos]["B8_LOTECTL" ] := (cAlias)->B8_LOTECTL
        oDados["items"][nPos]["B8_NUMLOTE" ] := (cAlias)->B8_NUMLOTE
        oDados["items"][nPos]["B8_PRODUTO" ] := (cAlias)->B8_PRODUTO
        oDados["items"][nPos]["B1_DESC"    ] := (cAlias)->B1_DESC
        oDados["items"][nPos]["B8_QTDORI"  ] := (cAlias)->B8_QTDORI
        oDados["items"][nPos]["B1_UM"      ] := (cAlias)->B1_UM
        oDados["items"][nPos]["B8_LOCAL"   ] := (cAlias)->B8_LOCAL
        oDados["items"][nPos]["B8_DTVALID" ] := PCPMonitorUtils():FormataData((cAlias)->B8_DTVALID, 5)
        oDados["items"][nPos]["B8_SALDO"   ] := (cAlias)->B8_SALDO
        (cAlias)->(dbSkip())
        If !lExpResult .And. nPos >= nTamPagina
            Exit
        EndIf
    End
    oDados["hasNext"] := (cAlias)->(!Eof())
    (cAlias)->(dbCloseArea())
	
	cJsonRet := oDados:ToJson()
	
	FreeObj(oDados)
	FreeObj(oEstHeader)
Return cJsonRet
  • Sem rótulos