Conectando API OMIE no Power BI – Extratos Bancários

Mais um case da OMIE.

Desta vez são os extratos bancários que é uma consulta que necessita utilizar as contas correntes.

 

Conforme imagem abaixo, é possível ter e atualizar no Power BI serviços os lançamentos dos extratos.

Se você veio da pesquisa no Google por exemplo ou já estava navegando pela página, eu tenho um vídeo no meu canal do YouTube onde explico como criei a consulta.

E pra não ficar de enrolação, segue script que utilizei para estruturar esta consulta:

Você precisa criar uma consulta nula no Power Query, clicar no editor avançado e substituir por este script.

let
  Request = (Pagina as number) =>
    let
      body = Json.FromValue(
        [
          call       = "ListarContasCorrentes", 
          app_key    = "38333295000", 
          app_secret = "4cea520a0e2a2ecdc267b75d3424a0ed", 
          param      = {[pagina = Pagina, registros_por_pagina = 100, apenas_importado_api = "N"]}
        ]
      ), 
      Consulta = Json.Document(
        Web.Contents(
          "https://app.omie.com.br", 
          [
            RelativePath = "api/v1/geral/contacorrente/", 
            Headers      = [#"Content-Type" = "application/json"], 
            Content      = body
          ]
        )
      )
    in
      Consulta, 
  RequestExtrato = (conta as number) =>
    let
      bodyExtrato = Json.FromValue(
        [
          call = "ListarExtrato", 
          app_key = "38333295000", 
          app_secret = "4cea520a0e2a2ecdc267b75d3424a0ed", 
          param = {
            [nCodCC = conta, cCodIntCC = "", dPeriodoInicial = "01/12/2021", dPeriodoFinal = ""]
          }
        ]
      ), 
      ConsultaExtrato = Json.Document(
        Web.Contents(
          "https://app.omie.com.br", 
          [
            RelativePath = "api/v1/financas/extrato/", 
            Headers      = [#"Content-Type" = "application/json"], 
            Content      = bodyExtrato
          ]
        )
      )
    in
      ConsultaExtrato, 
  Tabela = Table.FromRecords({[Pagina = 1]}), 
  AlterarTipo = Table.TransformColumnTypes(Tabela, {{"Pagina", Int64.Type}}), 
  InvocarFuncao01 = Table.AddColumn(AlterarTipo, "Tabela", each Request([Pagina])), 
  Tabela1 = InvocarFuncao01{0}[Tabela], 
  Paginas = Tabela1[total_de_paginas], 
  ListaPaginas = Table.FromList(
    List.Generate(() => 1, each _ <= Paginas, each _ + 1), 
    Splitter.SplitByNothing(), 
    null, 
    null, 
    ExtraValues.Error
  ), 
  InvocarFuncao02 = Table.AddColumn(ListaPaginas, "Tabela", each Request([Column1])), 
  #"Expanded {0}" = Table.ExpandRecordColumn(
    InvocarFuncao02, 
    "Tabela", 
    {"ListarContasCorrentes"}, 
    {"ListarContasCorrentes"}
  ), 
  #"Expanded {0}1" = Table.ExpandListColumn(#"Expanded {0}", "ListarContasCorrentes"), 
  #"Expanded {0}2" = Table.ExpandRecordColumn(
    #"Expanded {0}1", 
    "ListarContasCorrentes", 
    {"nCodCC"}, 
    {"nCodCC"}
  ), 
  #"Changed Type" = Table.TransformColumnTypes(#"Expanded {0}2", {{"nCodCC", Int64.Type}}), 
  InvocarFuncao03 = Table.AddColumn(
    #"Changed Type", 
    "Tabela", 
    each try RequestExtrato([nCodCC]) otherwise null
  ), 
  #"Personalização Adicionada" = Table.AddColumn(
    InvocarFuncao03, 
    "Filtro", 
    each if [Tabela] = null then false else true
  ), 
  #"Expanded {0}3" = Table.ExpandRecordColumn(
    #"Personalização Adicionada", 
    "Tabela", 
    {"listaMovimentos"}, 
    {"listaMovimentos"}
  ), 
  #"Linhas Filtradas" = Table.SelectRows(#"Expanded {0}3", each ([Filtro] = true)), 
  #"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas", {"Filtro"}), 
  #"Expanded {0}4" = Table.ExpandListColumn(#"Colunas Removidas", "listaMovimentos"), 
  #"Expanded {0}5" = Table.ExpandRecordColumn(
    #"Expanded {0}4", 
    "listaMovimentos", 
    {
      "cDesCliente", 
      "dDataLancamento", 
      "nSaldo", 
      "nValorDocumento", 
      "cCodCategoria", 
      "cDataInclusao", 
      "cDesCategoria", 
      "cDocumentoFiscal", 
      "cHoraInclusao", 
      "cNatureza", 
      "cOrigem", 
      "cParcela", 
      "cSituacao", 
      "cTipoDocumento", 
      "cVendedor", 
      "nCodCliente", 
      "nCodLancRelac", 
      "nCodLancamento", 
      "cNumero", 
      "cObservacoes", 
      "cDocCliente", 
      "cRazCliente", 
      "dDataConciliacao"
    }, 
    {
      "cDesCliente", 
      "dDataLancamento", 
      "nSaldo", 
      "nValorDocumento", 
      "cCodCategoria", 
      "cDataInclusao", 
      "cDesCategoria", 
      "cDocumentoFiscal", 
      "cHoraInclusao", 
      "cNatureza", 
      "cOrigem", 
      "cParcela", 
      "cSituacao", 
      "cTipoDocumento", 
      "cVendedor", 
      "nCodCliente", 
      "nCodLancRelac", 
      "nCodLancamento", 
      "cNumero", 
      "cObservacoes", 
      "cDocCliente", 
      "cRazCliente", 
      "dDataConciliacao"
    }
  )
in
  #"Expanded {0}5"
Caso deseja receber o arquivo PBIX preencha os dados abaixo:

rafalemospentaho   rafalemospbi  #choraAPI #powerquery #powerbi #Mlanguage