[OMIE] Conectando API com Power Query – 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:

let
  Request = (Pagina as number) =>
    let
      body = Json.FromValue(
        [
          call       = "ListarContasCorrentes", 
          app_key    = "38333295000", 
          app_secret = "fed2163e2e8dccb53ff914ce9e2f1258", //Verificar se o app_secret é o mesmo. Atualizado em 16/07/2023.
          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 = "fed2163e2e8dccb53ff914ce9e2f1258", //Verificar se o app_secret é o mesmo. Atualizado em 16/07/2023.
          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"

2 thoughts on “[OMIE] Conectando API com Power Query – Extratos Bancários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

© 2024 Direitos Reservados - Chora {API}. Desenvolvido por Augusto Mello

Fale conosco
1
Fale conosco
Olá,
Podemos te ajudar?