Disponibiliza uma API REST no Dashboard para visualizar um Card.
Exemplo1.prw
#INCLUDE "TOTVS.CH" #INCLUDE "RESTFUL.CH" //------------------------------------------------------------------- /*/{Protheus.doc} Exemplo1 Exemplo de API de integração de Cards @author Squad CRM & Faturamento @since 26/03/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- WSRESTFUL Exemplo1 DESCRIPTION "Exemplo 1" WSDATA Fields AS STRING OPTIONAL WSDATA Order AS STRING OPTIONAL WSDATA Page AS INTEGER OPTIONAL WSDATA PageSize AS INTEGER OPTIONAL WSMETHOD POST itemsDetails ; DESCRIPTION "Carrega os Itens Utilizados para Montagem do Painel" ; WSSYNTAX "/cards/itemsDetails/{Order, Page, PageSize, Fields}" ; PATH "/cards/itemsDetails"; PRODUCES APPLICATION_JSON WSMETHOD GET cardFilter; DESCRIPTION "Disponibiliza os campos que poderão ser utilizados no filtro do Card" ; WSSYNTAX "/cards/cardFilter/" ; PATH "/cards/cardFilter"; PRODUCES APPLICATION_JSON WSMETHOD GET cardInfo ; DESCRIPTION "Carrega as informações do Painel" ; WSSYNTAX "/cards/cardInfo/" ; PATH "/cards/cardInfo"; PRODUCES APPLICATION_JSON WSMETHOD GET fieldsInfo ; DESCRIPTION "Carrega os campos que podem que ser utilizados" ; WSSYNTAX "/cards/fieldsInfo/" ; PATH "/cards/fieldsInfo"; PRODUCES APPLICATION_JSON ENDWSRESTFUL //------------------------------------------------------------------- /*/{Protheus.doc} POST itemsDetails Carrega os Itens Utilizados para Montagem do Painel @author Squad CRM & Faturamento @since 28/07/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- WSMETHOD POST itemsDetails WSRECEIVE Order, Page, PageSize, Fields WSSERVICE Exemplo1 Local aHeader := {} Local aRet := {} Local cError := "Erro na Requisição" Local lRet := .T. Local oCoreDash := CoreDash():New() Self:SetContentType("application/json") aHeader := {; {"num" , "Numero" },; {"prefixo" , "Prefixo" },; {"parcela" , "Loja" },; {"tipo" , "Tipo" },; {"naturez" , "Natureza" }; } //Chama a função responsavel por montar a Expressão SQL aRet := MntQuery() //Define a Query padrão utilizada no Serviço oCoreDash:SetQuery(aRet[1]) oCoreDash:SetWhere(aRet[2]) oCoreDash:SetFields(DePara()) oCoreDash:SetApiQstring(Self:aQueryString) lRet := oCoreDash:BuildJson() If lRet oCoreDash:SetPOHeader(aHeader) Self:SetResponse( oCoreDash:ToObjectJson()) Else cError := oCoreDash:GetJsonError() SetRestFault( 500, EncodeUtf8(cError) ) EndIf oCoreDash:Destroy() aSize(aRet, 0) aSize(aHeader, 0) Return lRet //------------------------------------------------------------------- /*/{Protheus.doc} GET cardFilter Retorna os campos que poderão ser filtrados @author Squad CRM & Faturamento @since 28/07/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- WSMETHOD GET cardFilter WSSERVICE Exemplo1 Local aHeader := {} Local oCoreDash := CoreDash():New() Local oResponse := JsonObject():New() aHeader := {; {"num" , "Numero" },; {"prefixo" , "Prefixo" },; {"parcela" , "Loja" },; {"tipo" , "Tipo" },; {"naturez" , "Natureza" }; } oResponse["items"] := oCoreDash:SetPOHeader(aHeader) Self:SetResponse( EncodeUtf8(oResponse:ToJson())) Return .T. //------------------------------------------------------------------- /*/{Protheus.doc} GET cardInfo Método para retornar os dados do Card @author Squad CRM & Faturamento @since 28/07/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- WSMETHOD GET cardInfo WSRESTFUL Exemplo1 Local aFilter := {} Local cWhere := "" Local nFiltro := 0 Local oCoreDash := CoreDash():New() Local oResponse := JsonObject():New() //Converte os campos utilizados na consulta para os campos utilizados no card. oCoreDash:SetFields(DePara()) //Converte o Filtro informado no parametro Query String. oCoreDash:SetApiQstring(Self:aQueryString) aFilter := oCoreDash:GetApiFilter() For nFiltro := 1 to Len(aFilter) cWhere += " AND " + aFilter[nFiltro][1] Next RetCardInfo( @oResponse ) self:SetResponse( EncodeUtf8(FwJsonSerialize(oResponse,.T.,.T.)) ) oResponse := Nil FreeObj( oResponse ) oCoreDash:Destroy() FreeObj( oCoreDash ) Return .T. //------------------------------------------------------------------- /*/{Protheus.doc} GET fieldsInfo Carrega os campos que podem que ser utilizados @param cSelect, Caractere, Campos que serão retornados no SELECT @author Squad CRM & Faturamento @since 28/07/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- WSMETHOD GET fieldsInfo WSSERVICE Exemplo1 Local aItems := {} Local oResponse := JsonObject():New() Local oCoreDash := CoreDash():New() aAdd(aItems, { "total" , "Total a Receber:" }) aAdd(aItems, { "antigo" , "Titulo mais Antigo:" }) aAdd(aItems, { "saldo" , "Saldo Total:" }) /*Retorna um Objeto no formato de Value e Label*/ oResponse["items"] := oCoreDash:SetPOCombo(aItems) Self:SetResponse( EncodeUtf8(oResponse:ToJson())) Return .T. //------------------------------------------------------------------- /*/{Protheus.doc} MntQuery Monta a query responsável por trazer os itens utilizados no Painel @param cSelect, Caractere, Campos que serão retornados no SELECT @author Squad CRM & Faturamento @since 28/07/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- Static Function MntQuery(cCampos) Local cQuery Local cWhere Default cCampos := " SE1.E1_PREFIXO, SE1.E1_NUM, SE1.E1_PARCELA, SE1.E1_TIPO, SE1.E1_NATUREZ " cQuery := " SELECT " + cCampos + " FROM " + RetSqlName("SE1") + " SE1 " cWhere := " SE1.E1_FILIAL = '" + xFilial("SE1") + "' " cWhere += " AND SE1.D_E_L_E_T_ = ' ' " Return {cQuery, cWhere} //------------------------------------------------------------------- /*/{Protheus.doc} DePara Efetua o Conversão entre os atributos objetos do Json e os campos utilizados na Consulta @author Squad CRM & Faturamento @since 28/07/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- Static Function DePara() Local aCampos := {} aCampos := {; {"prefixo" , "SE1.E1_PREFIXO" },; {"num" , "SE1.E1_NUM" },; {"parcela" , "SE1.E1_PARCELA" },; {"tipo" , "SE1.E1_TIPO" },; {"naturez" , "SE1.E1_NATUREZ" }; } Return aCampos //------------------------------------------------------------------- /*/{Protheus.doc} GET RetCardInfo Retorna os dados que poderão ser apresentados no painel @author Squad CRM & Faturamento @since 28/07/2020 @version 12.1.27 /*/ //------------------------------------------------------------------- Static Function RetCardInfo( oResponse ) Local oItem Local aItems := {} oItem := JsonObject():New() oItem["total"] := 'R$ 526.232.123,23' oItem["antigo"] := '02/04/2020' oItem["salto"] := 'R$ 265.235.201,33' aAdd(aItems, oItem) oResponse['hasNext'] := 'false' oResponse["items"] := aItems Return Nil
Demais informações
Consultar a documentação do CoreDash.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas