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
| Nome | Tipo | Descrição |
|---|---|---|
| oFiltros | Objeto Json | Objeto json com os filtros e seus valores informados. |
| nPagina | Numérico | Número da página que buscará os dados da tabela. |
Retorno
| Tipo | Descrição |
|---|---|
| Caracter | String no formato json com conteúdo necessário da tela de detalhes. |
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 |