Histórico da Página
...
| Bloco de código | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Method BuscaDados(oFiltros, cTipo, cSubTipo) Class PrevisaoEntregaOP
Local aSaldos := {}
Local aPeriodos := PCPMonitorUtils():RetornaListaPeriodosFuturo(oFiltros["04_TIPOPERIODO"],cValToChar(oFiltros["05_PERIODO"]))
Local aChaves := {}
Local cAliasQry := GetNextAlias()
Local cJsonDados := ""
Local cUnMed := ""
Local cQuery := ""
Local dDataAjust := Nil
Local dDataIni := dDatabase
Local dDataFin := dDatabase
Local lPerdInf := SuperGetMV("MV_PERDINF",.F.,.F.)
Local nIndSerie := 0
Local nPosTag := 0
Local nOPsTotal := 0
Local nQtPTotal := 0
Local nX := 0
Local oJsonRet := JsonObject():New()
Local oPeriodos := JsonObject():New()
//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
oJsonRet["categorias"] := {} //Array de strings com as categorias do gráfico
oFiltros["01_C2_FILIAL"] := PadR(oFiltros["01_C2_FILIAL"], FWSizeFilial())
cUnMed := Posicione("SB1",1,xFilial("SB1",oFiltros["01_C2_FILIAL"])+oFiltros["02_C2_PRODUTO"],"B1_UM")
dDataIni := aPeriodos[1][1]
dDataFin := aPeriodos[Len(aPeriodos)][2]
//Query com os filtros para buscar os valores das séries para as categorias
cQuery := " SELECT "
cQuery += " SC2.C2_FILIAL, "
cQuery += " SC2.C2_PRODUTO, "
cQuery += " SC2.C2_DATPRF, "
If oFiltros["03_TIPOQUANT"] == 'O'
cQuery += " SUM(SC2.C2_QUANT)"
Else
cQuery += " SUM(SC2.C2_QUANT - SC2.C2_QUJE"
If !lPerdInf
cQuery += " - SC2.C2_PERDA"
EndIf
cQuery += ")"
EndIf
cQuery += " AS QUANTIDADE_PRODUTO, "
cQuery += " COUNT(*) AS NUMERO_OPS "
cQuery += " FROM "+RetSqlName("SC2")+" SC2 "
cQuery += " WHERE SC2.C2_FILIAL = '"+xFilial("SC2",oFiltros["01_C2_FILIAL"])+"' "
cQuery += " AND SC2.C2_PRODUTO = '"+oFiltros["02_C2_PRODUTO"]+"' "
cQuery += " AND SC2.C2_DATPRF BETWEEN '"+dToS(dDataIni)+"' AND '"+dToS(dDataFin)+"' "
cQuery += " AND SC2.C2_DATRF = ' '"
cQuery += " AND SC2.D_E_L_E_T_ = ' ' "
cQuery += " GROUP BY SC2.C2_FILIAL, SC2.C2_PRODUTO, SC2.C2_DATPRF "
cQuery += " ORDER BY SC2.C2_FILIAL, SC2.C2_PRODUTO, SC2.C2_DATPRF "
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasQry,.F.,.F.)
While (cAliasQry)->(!Eof())
dDataAjust := dToC(PCPMonitorUtils():RetornaPeriodoInicial(oFiltros["04_TIPOPERIODO"],sToD((cAliasQry)->C2_DATPRF)))
nOPsTotal += (cAliasQry)->NUMERO_OPS
nQtPTotal += (cAliasQry)->QUANTIDADE_PRODUTO
If oPeriodos:HasProperty(dDataAjust)
oPeriodos[dDataAjust] += (cAliasQry)->QUANTIDADE_PRODUTO
Else
oPeriodos[dDataAjust] := (cAliasQry)->QUANTIDADE_PRODUTO
EndIf
(cAliasQry)->(DBSKIP())
End
(cAliasQry)->(dbCloseArea())
aChaves := oPeriodos:GetNames()
oJsonRet["categorias"] := aChaves
For nX := 1 To Len(aChaves)
aAdd(aSaldos, oPeriodos[aChaves[nX]])
Next nX
//Adiciona série no gráfico
PCPMonitorUtils():AdicionaSerieGraficoMonitor(oJsonoJsonRet["series"],@nIndSerie,"rgb(0,0,165)",aSaldos,cUnMed)
//Adiciona tags ao monitor
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPosTag,"po-icon-calendar",dToC(dDataIni) + " - " + dToC(dDataFin))
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPosTag,"po-icon-calculator",PCPMonitorUtils():RetornaDescricaoTipoPeriodo(oFiltros["04_TIPOPERIODO"]))
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPosTag,"po-icon-bar-code",oFiltros["02_C2_PRODUTO"])
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPosTag,"po-icon-star-filled",cValToChar(nOPsTotal) + IIF(nOPsTotal > 1," Ordens"," Ordem") )
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPosTag,"po-icon-star-filled",cValToChar(nQtPTotal) + " " + cUnMed )
PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPosTag,"po-icon-calculator",IIF(oFiltros["03_TIPOQUANT"] == "O","Quantidade Original","Saldo a Produzir"))
cJsonDados := oJsonRet:toJson()
FwFreeArray(aChaves)
FwFreeArray(aPeriodos)
FwFreeArray(aSaldos)
FreeObj(oPeriodos)
FreeObj(oJsonRet)
Return cJsonDados |
...
Import HTML Content
Visão Geral
Conteúdo das Ferramentas