Histórico da Página
...
| Bloco de código | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Method BuscaDados(oFiltros, cTipo, cSubTipo) Class StatusLotesAVencer
Local aSemaforo := StrTokArr(Replace(oFiltros["03_SEMAFORO"],",","."),";")
Local cAliasQry := GetNextAlias()
Local cCodProd := oFiltros["02_B8_PRODUTO"]
Local cLabel := ""
Local cJsonDados := ""
Local cQuery := ""
Local cUnMedida := ""
Local cValorFim := ""
Local cValSemaf1 := aSemaforo[1]
Local cValSemaf2 := aSemaforo[2]
Local dFilterDat := PCPMonitorUtils():RetornaPeriodoFinal(oFiltros["05_TIPOPERIODO"],ddatabase,cValtoChar(oFiltros["06_PERIODO"]))
Local nLotes := 0
Local nPos := 0
Local nQuant := 0
Local nSaldo := 0
Local nValorFim := 0
Local nValSemaf1 := Val(cValSemaf1)
Local nValSemaf2 := Val(cValSemaf2)
Local oJsonRet := JsonObject():New()
Local oGauge := PCPMonitorGauge():New()
//Propriedades que devem ser retornadas para monitores do tipo gráfico //Propriedades que devem ser retornadas para monitores do tipo gráfico
oJsonRet["corTitulo"] := "black" //Cor do título do monitor. Se não for informada, assumirá o valor #2590aa
oJsonRet["alturaMinimaWidget"] := "350px" //Altura mínima do monitor. Se não for informada, assumirá o valor 350px
oJsonRet["alturaMaximaWidget"] := "500px" //Altura máxima do monitor. Se não for informada, assumirá o valor 350px
oJsonRet["tags"] := {} //Array de objetos json com as tags que serão visualizadas no monitor
oJsonRet["series"] := {} //Array de objetos json com as séries do gráfico. Será apenas inicializado para o gráfico do tipo velocímetro.
oJsonRet["categorias"] := {} //Array de strings com as categorias do gráfico. Será apenas inicializado para o gráfico do tipo velocímetro.
oFiltros["01_B8_FILIAL"] := PadR(oFiltros["01_B8_FILIAL"], FWSizeFilial())
cUnMedida := Posicione("SB1",1,xFilial("SB1",oFiltros["01_B8_FILIAL"])+cCodProd,"B1_UM")
//Query com os filtros para buscar as informações e apresentar no monitor
cQuery += " SELECT "
cQuery += " SB8.B8_PRODUTO CODIGO_PRODUTO, "
cQuery += " SUM(SB8.B8_SALDO) SALDO, "
cQuery += " COUNT(SB8.R_E_C_N_O_) QUANTIDADE_LOTES "
cQuery += " FROM "+RetSqlName("SB8")+" SB8 "
cQuery += " WHERE SB8.B8_FILIAL = '" + xFilial("SB8",oFiltros["01_B8_FILIAL"]) + "' "
cQuery += " AND SB8.B8_PRODUTO = '" + cCodProd + "' "
cQuery += " AND SB8.B8_DTVALID BETWEEN '"+DTOS(ddatabase)+"' AND '"+DTOS(dFilterDat)+"' "
cQuery += " AND SB8.B8_SALDO > 0 "
cQuery += " AND SB8.D_E_L_E_T_ = ' ' "
cQuery += " GROUP BY SB8.B8_FILIAL,SB8.B8_PRODUTO "
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasQry,.F.,.F.)
If (cAliasQry)->(!Eof())
cCodProd := AllTrim((cAliasQry)->CODIGO_PRODUTO)
nLotes := (cAliasQry)->QUANTIDADE_LOTES
nSaldo := (cAliasQry)->SALDO
End
(cAliasQry)->(dbCloseArea())
If oFiltros["04_TIPOSEMAFORO"] == "L"
nQuant := nLotes
cLabel := IIF(nLotes > 1, "Lotes", "Lote")
Else
nQuant := nSaldo
cLabel := cUnMedida
EndIf
If nQuant > nValSemaf2
nValorFim := nQuant + (nValSemaf2 - nValSemaf1)
Else
nValorFim := nValSemaf2 + (nValSemaf2 - nValSemaf1)
EndIf
cValorFim := cValToChar(nValorFim)
//Especifica as propriedades do gráfico tipo velocímetro
oGauge:SetMaxValue(nValorFim)
oGauge:SetValue(nQuant)
oGauge:SetValueStyle("color",IIF(nQuant < nValSemaf1,"rgb(38,186,65)",IIF(nQuant < nValSemaf2,"rgb(255,207,1)","rgb(245,0,49)")))
oGauge:SetValueStyle("font-weight","bold")
oGauge:SetLabel(cLabel)
oGauge:SetLabelStyle("font-weight","bold")
oGauge:SetThreshold("0","rgb(38,186,65)")
oGauge:SetThreshold(cValSemaf1,"rgb(238,173,45)")
oGauge:SetThreshold(cValSemaf2,"rgb(245,0,49)")
If Val(cValSemaf1) > 0
oGauge:SetMarker("0")
Endif
oGauge:SetMarker(cValSemaf1)
oGauge:SetMarker(cValSemaf2)
oGauge:SetMarker(cValorFim)
//Atribui o objeto json do velocímetro ao objeto json de retorno do método
oJsonRet["gauge"] := oGauge:GetJsonObject()
//Adiciona tags ao monitor
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPos,"po-icon-calendar",cValToChar(ddatabase) + " - " + cValToChar(dFilterDat))
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPos,"po-icon-bar-code",cCodProd)
If cTipo == "chart"
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPos,"po-icon-star-filled",IIF(oFiltros["04_TIPOSEMAFORO"] == "L",cValToChar(nSaldo) + " " + cUnMedida,cValToChar(nLotes) + IIF(nLotes > 1, " Lotes", " Lote")))
EndIf
cJsonDados := oJsonRet:toJson()
FwFreeArray(aSemaforo)
FreeObj(oGauge)
FreeObj(oJsonRet)
Return cJsonDados |
...
Import HTML Content
Visão Geral
Conteúdo das Ferramentas