Á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 Texto
linenumberstrue
collapsetrue
Method BuscaDados(oFiltros, cTipo, cSubTipo) Class StatusLotesAVencer
    Local aSemaforo  := StrTokArr(Replace(oFiltros["03_SEMAFORO"],",","."),";")
    Local cAliasQry  := GetNextAlias()
    Local cCodProd   := oFiltros["02_B8_PRODUTO"]
    Local cJsonDados := ""
    Local cQuery     := ""
	    Local cTxtPrc    := ""
    Local cTxtSec    := ""	 
    Local cUnMedida  := ""
    Local dFilterDat := PCPMonitorUtils():RetornaPeriodoFinal(oFiltros["05_TIPOPERIODO"],ddatabase,cValtoChar(oFiltros["06_PERIODO"]))
    Local nIndLinha  := 0
    Local nQuant     := 0
    Local nValSemaf1 := Val(aSemaforo[1])
    Local nValSemaf2 := Val(aSemaforo[2])	  
    Local nLotes     := 0
    Local nPos       := 0
    Local nSaldo     := 0
    Local oJsonRet   := JsonObject():New()
    Local oStylePrc  := JsonObject():New()
    Local oStyleSec  := JsonObject():New()
	
	     
    //Propriedades que devem ser retornadas para monitores do tipo texto
	    oJsonRet["corTitulo"]          := "white" //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["linhas"]             := {}	      //Array de objetos json com cada linha de informação do monitor
	    oJsonRet["tags"]               := {}      //Array de objetos json com as tags que serão visualizadas no monitor
 
    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
        cTxtPrc := cValToChar(nLotes)
        cTxtSec := cValToChar(nSaldo) + " " + cUnMedida
    Else
        nQuant  := nSaldo
        cTxtPrc := cValToChar(nSaldo)
        cTxtSec := cValToChar(nLotes) + IIF(nLotes > 1, " Lotes", " Lote")
    EndIf
	    //Adiciona as linhas de informação no monitor
    If nLotes > 0
		        oStyleSec["color"] := "white"
		        oJSonRet["corFundo"] := IIF(nQuant < nValSemaf1,"rgb(38,186,65)",IIF(nQuant < nValSemaf2,"rgb(255,207,1)","rgb(245,0,49)"))
        If oJSonRet["corFundo"] == "rgb(255,207,1)"
            oStyleSec["color"] := "black"
            oJsonRet["corTitulo"] := "black"
        EndIf
        oStylePrc["font-weight"] := "bold"
        oStylePrc["font-size"]   := "120px"
        oStylePrc["line-height"] := "130px"
        oStylePrc["text-align"]  := "center"
        oStylePrc["color"]       := oStyleSec["color"]
        oStylePrc["cursor"]      := "pointer"
		        PCPMonitorUtils():AdicionaLinhaInformacao(oJsonRet["linhas"],@nIndLinha,cTxtPrc,"po-sm-12",oStylePrc:ToJson(),.T.)
        PCPMonitorUtils():AdicionaLinhaInformacao(oJsonRet["linhas"],@nIndLinha,cTxtSec,"po-font-title po-text-center po-sm-12 po-pt-1 bold-text",oStyleSec:ToJson())
    Else
        oJsonRet["corFundo"] := "rgb(38,186,65)"
        PCPMonitorUtils():AdicionaLinhaInformacao(oJsonRet["linhas"],@nIndLinha,"Nenhum lote do produto vencerá no período selecionado.","po-font-text-large-bold po-text-center po-sm-12 po-pt-4",oStyleSec:ToJson())
    EndIf
    //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 oFiltros["04_TIPOSEMAFORO"] == "Q"
        PCPMonitorUtils():AdicionaTagMonitor(oJsonRet["tags"],@nPos,"po-icon-weight",""Un. Medida: "+ cUnMedida)
    EndIf
    cJsonDados :=  oJsonRet:toJson()
 
    FwFreeArray(aSemaforo)
    FreeObj(oJsonRet)
Return cJsonDados

...