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
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.
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".
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 & "®ime=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" & "®ime=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:
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"
Após isso selecione o ícone de expansão conforme a imagem abaixo e clique em Ok.
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.