O Granatum fornece uma API pública para ser utilizada nas mais diversas integrações que o cliente necessite. Uma delas é o Microsoft PowerBI, e neste artigo daremos um exemplo de como fazer uma integração entre as duas plataformas.

Nesse exemplo iremos mostrar como buscar a lista de lançamentos buscando entre duas datas e transformando em uma tabela do PowerBI.

Antes de mais nada será necessário que você possua o token de autenticação da API do Granatum, você pode ver como obtê-lo em: https://www.granatum.com.br/financeiro/api/#autenticacao


Ao abrir o seu PowerBI, selecione a opção "Transformar Dados", conforme a figura abaixo

mceclip1.png 

Ao selecionar essa opção uma nova janela será aberta, nela ao clicar em "Nova Fonte" -> "Consulta Nula", será criada uma nova consulta em branco.

mceclip2.png

 

Ao ser criada a nova consulta chegamos na parte em que feita a integração entre as duas plataformas, clique com o botão direito em cima da consulta e selecione a opção "Editor Avançado".

mceclip5.png


Será aberto na tela um editor de texto com algumas informações padrões, você pode apagar essas informações e substituir pelo trecho de código abaixo e clicar em concluído.

let
 getData = (token as text, data_inicio as date, data_fim as date) => 
 let 
 tmp = Json.Document(Web.Contents("https://api.granatum.com.br/v1/lancamentos" & "?access_token=" & token & "&regime=caixa&conta_id=all" & "&tipo_view=count" & "&data_inicio=" & Date.ToText(data_inicio, "yyyy-MM-dd") & "&data_fim=" & Date.ToText(data_fim, "yyyy-MM-dd"), [Headers=[#"Content-Type"="application/x-www-form-urlencoded"]])),
 total = tmp[0],
 start = List.Generate(() => 0, each _ < Number.RoundUp(total/100 * 100), each _ +100),
 pages = List.Union(List.Transform(start, each getApiPaginated(_, token, data_inicio, data_fim)))
 in 
 pages,

getApiPaginated = (page, token as text, data_inicio as date, data_fim as date) =>
 let
 query = Web.Contents("https://api.granatum.com.br/v1/lancamentos" & "?access_token=" & token & "&start=" & Number.ToText(page) & "&limit=100" & "&regime=caixa&conta_id=all" & "&data_inicio=" & Date.ToText(data_inicio, "yyyy-MM-dd") & "&data_fim=" & Date.ToText(data_fim, "yyyy-MM-dd"), [Headers=[#"Content-Type"="application/x-www-form-urlencoded"]]),
 result = Json.Document(query)
 in
 result
in
 getData

Dando tudo certo você verá a seguinte tela:

mceclip6.png


Nela você deve informar o token de integração da API, a data de inicio e fim dos lançamentos que você deseja filtrar e clicar no botão "Invocar".

Após isso, você receberá a listagem de acordo com os lançamentos que se encaixam na data desejada.

Clique com o botão direito em cima de "Lista" e selecione a opção "Para a Tabela" e depois clique em "Ok"

mceclip15.png


Após isso selecione o ícone de expansão conforme a imagem abaixo e clique em Ok.

mceclip16.png 

Fazendo isso você verá os dados sendo apresentados em forma de tabela.

A partir daí você já pode aplicar os dados no seu modelo e manipular da maneira que desejar.

Obtendo outras informações

Para obter os dados referentes a categorias, centros de custo/lucro, clientes, fornecedores, formas de pagamento e etc, você deve seguir os passos apresentados acima para criar uma nova consulta no Power Query editor, porém o código que deverá ser colado no editor é o mostrado abaixo:

let
 getData = (token as text, considerar_inativos as text) => 
 let 
 items = Json.Document(Web.Contents("https://api.granatum.com.br/v1/categorias" & "?access_token=" & token & "&considerar_inativos=" & considerar_inativos, [Headers=[#"Content-Type"="application/x-www-form-urlencoded"]]))
 in 
 items
in
 getData

Nesse exemplo, serão retornadas as categorias associadas a conta. Para outras informações, o que mudará é o link da quarta linha do código, a informação "/categorias" deverá ser substituída pelo link das informações que você deseja solicitar conforme a documentação da API.

O token solicitado é o mesmo utilizado anteriormente e a opção "considerar inativos" deve ser informado com o valor "true" caso queira que sejam retornadas também os itens inativos e "false" caso eles não sejam necessários.

Fazendo isso você verá os dados sendo apresentados em forma de tabela. 


A partir daí você já pode aplicar os dados no seu modelo e manipular da maneira que desejar.