Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagecpp
firstline1
titleExemplo
linenumberstrue
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 oa resultadoexportação não seja filtradopaginada
    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