[OMIE] Conectando API com Power Query – Orçamento Caixa


Mais um case da OMIE.

Continuando a série de vídeos sobre as consultas de API na OMIE, hoje será sobre como estruturar a consulta Orçamento Caixa.

Esta consulta retorna os valores Orçados X Realizados.

Para estruturar esta consulta, é preciso criar os períodos (Mês e Ano) conforme documentação.

O código abaixo está com os dados da OMIE, portanto o retorno do JSON será de acordo com o app_key e app_secret informados.

Código otimizado em 16/07/2023 – Nova forma de informar o Body e o APP_SECRET teve atualização em relação ao vídeo.

let
  Request = (Ano as number, Mes as number) =>
    let
      body = Json.FromValue(
        [
          call       = "ListarOrcamentos", 
          app_key    = "38333295000", 
          app_secret = "fed2163e2e8dccb53ff914ce9e2f1258", 
          param      = {[nAno = Ano, nMes = Mes]}
        ]
      ), 
      Consulta = Json.Document(
        Web.Contents(
          "https://app.omie.com.br", 
          [
            RelativePath = "api/v1/financas/caixa/", 
            Headers      = [#"Content-Type" = "application/json"], 
            Content      = body
          ]
        )
      )
    in
      Consulta, 
  DateMin = #date(2018, 01, 01), 
  AnoMax = Date.Year(DateTime.LocalNow()) + 1, 
  DateMax = #date(AnoMax, 12, 31), 
  Duration = Duration.Days(DateMax - DateMin) + 1, 
  ListDates = List.Dates(DateMin, Duration, #duration(1, 0, 0, 0)), 
  #"Converted to Table" = Table.FromList(
    ListDates, 
    Splitter.SplitByNothing(), 
    null, 
    null, 
    ExtraValues.Error
  ), 
  #"Changed Type2" = Table.TransformColumnTypes(#"Converted to Table", {{"Column1", type datetime}}), 
  #"Inserted Month" = Table.AddColumn(
    #"Changed Type2", 
    "Mes", 
    each Date.Month([Column1]), 
    Int64.Type
  ), 
  #"Inserted Year" = Table.AddColumn(
    #"Inserted Month", 
    "Ano", 
    each Date.Year([Column1]), 
    Int64.Type
  ), 
  #"Renamed Columns" = Table.RenameColumns(#"Inserted Year", {{"Column1", "Data"}}), 
  #"Removed Duplicates" = Table.Distinct(#"Renamed Columns", {"Mes", "Ano"}), 
  #"Filtered Rows" = Table.SelectRows(
    #"Removed Duplicates", 
    each ([Ano] = 2022) and ([Mes] = 1 or [Mes] = 2 or [Mes] = 3 or [Mes] = 4)
  ), 
  #"Invoked Custom Function" = Table.AddColumn(
    #"Filtered Rows", 
    "Finan_Orcado_Realizado", 
    each Request([Ano], [Mes])
  ), 
  #"Expanded {0}" = Table.ExpandRecordColumn(
    #"Invoked Custom Function", 
    "Finan_Orcado_Realizado", 
    {"ListaOrcamentos"}, 
    {"ListaOrcamentos"}
  ), 
  #"Expanded {0}1" = Table.ExpandListColumn(#"Expanded {0}", "ListaOrcamentos"), 
  #"Expanded {0}2" = Table.ExpandRecordColumn(
    #"Expanded {0}1", 
    "ListaOrcamentos", 
    {"cCodCateg", "cDesCateg", "nValorPrevisto", "nValorRealilzado"}, 
    {"cCodCateg", "cDesCateg", "nValorPrevisto", "nValorRealilzado"}
  ), 
  #"Changed Type" = Table.TransformColumnTypes(#"Expanded {0}2", {{"Data", type date}}), 
  #"Added Custom" = Table.AddColumn(
    #"Changed Type", 
    "LinhaZerada", 
    each [nValorPrevisto] = 0 and [nValorRealilzado] = 0
  ), 
  #"Filtered Rows1" = Table.SelectRows(#"Added Custom", each ([LinhaZerada] = false)), 
  #"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows1", {"LinhaZerada", "Mes", "Ano"})
in
  #"Removed Columns1"

O código acima eu expliquei no vídeo postado no YouTube:

Deseja receber o arquivo .PBIX modelo em seu e-mail? Preencha o formulário abaixo:

Caso queira conhecer outras consultas da OMIE, você pode conferir aqui.

Neste link, tem o script de  uma consulta paginada e com incremento de páginas conforme o aumento de registros.

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?