Eu só queria conectar o Power BI à API do Omie.
Fala pessoal,
Na última semana um cliente nos procurou com a necessidade de conectar o Power BI a um ERP bastante utilizado, principalmente por empresas que fazem BPO Financeiro. Fui então fazer meu dever de casa, pesquisar sobre a API, dar uma breve estudada na documentação e claro se possível criar uma conta online gratuita e usar dados de exemplos.
Perfeito, a Omie disponibiliza dados de exemplo. Muito feliz fui testar então a consulta de Lançamentos de contas a pagar ( LancamentoContaPagar (omie.com.br) ) . A consulta retornou apenas pouco mais de 80 registros, o que pra teste é um pouco frustrante visto que não me permitiria dar uma “estressada” na API e validar se ela rodaria bem com uma atualização full no Power BI.
Sendo assim gastei algumas horas brincando com o PowerShell criando um script pra popular dados aleatórios de contas a pagar no Omie, utilizando já as contas correntes, clientes e plano de contas já criados automaticamente com um ambiente de teste.
A API se saiu bem embora demore bastante a inserção em massa, cheguei a inserir mais de 130 mil registros conforme você pode verificar abaixo:
Se você quiser então criar uma massa de dados basta usar nosso singelo script abaixo em Power Shell e mesmo que você não tenha conhecimento em PowerShell é bem simples.
Primeiro você vai precisar de uma conta do Omie que pode conseguir AQUI Criando seu aplicativo para testar as APIs | Ajuda Omie e depois pegar seu APP_KEY e APP_SECRET aqui Obtendo a Chave de Acesso para integrações de API | Ajuda Omie
Agora de posse dos dados que você precisa vá ao menu iniciar da sua maquina e pesquise por “PowerShell ISE”
Clica para criar um novo documento.
E só copiar e colar o código abaixo, alterando as informações de $app_key, $app_secret, $registrosTotal (total de registros que você quer inserir), $DataInicial e $DataFinal (datas iniciais e finais que você gostaria de ter lançamento). Aconselho que rode o código a noite e deixe rodando, dependendo da quantidade de registros totais podem demorar umas boas horas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
##INFORMAR APP_KEY##### $app_key = "INSIRA SUA APP KEY ENTRE AS ASPAS" ##INFORMAR APP_SECRET#### $app_secret = "INSIRA SUA APP SECRET ENTRE AS ASPAS" ##REGISTROS A INSERIR### $registrosTotal = 200000 ###Periodos Inicial e Final - Editar Conforme Necessidade##### $DataInicial = "01/01/2020" $DataFinal = "31/12/2022" ################################################### INICIO DO CODIGO########################################## $StartDate = (Get-date $DataInicial).AddDays(-1) $EndDate = (Get-date $DataFinal).AddDays(1) $Datas = @() for ( $i = $StartDate.AddDays(1); $i -lt $EndDate; $i=$i.AddDays(1) ) { $Datas += $i.ToShortDateString() } $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Content-Type", "application/json") ################################ #### LISTAR CATEGORIAS ######### #### LISTAR CATEGORIAS ######### ################################ $bodyCat = @" { "call": "ListarCategorias", "app_key": "$app_key", "app_secret": "$app_secret", "param": [ { "pagina": 1, "registros_por_pagina": 100, "filtrar_apenas_ativo": "S", "filtrar_por_tipo": "D" } ] } "@ $Categorias = Invoke-RestMethod 'https://app.omie.com.br/api/v1/geral/categorias/' -Method 'POST' -Headers $headers -Body $bodyCat $ContasDespesas = $Categorias.categoria_cadastro | where totalizadora -eq N ################################ #### LISTAR CONTAS CORRENTES#### #### LISTAR CONTAS CORRENTES#### ################################ $bodyCC = @" { "call": "ListarContasCorrentes", "app_key": "$app_key", "app_secret": "$app_secret", "param": [ { "pagina": 1, "registros_por_pagina": 100, "apenas_importado_api": "N" } ] } "@ $Contas = Invoke-RestMethod 'https://app.omie.com.br/api/v1/geral/contacorrente/' -Method 'POST' -Headers $headers -Body $bodyCC $CCAtivas = $Contas.ListarContasCorrentes | where inativo -eq N ######################################### ####LISTAR CLIENTES###################### ####LISTAR CLIENTES###################### ######################################### $bodyCliente = @" { "call": "ListarClientes", "app_key": "$app_key", "app_secret": "$app_secret", "param": [ { "pagina": 1, "registros_por_pagina": 100, "apenas_importado_api": "N" } ] } "@ $Clientes = Invoke-RestMethod 'https://app.omie.com.br/api/v1/geral/clientes/' -Method 'POST' -Headers $headers -Body $bodyCliente $ClientesAtivos = $Clientes.clientes_cadastro | where inativo -eq N ############################### ####### INICIAR INSERT ######## ############################### $i = 1 $LancamentoIntegracao = 200000 While ( $i -le ($registrosTotal/100)) { $parametros = @() 1..100 | % { $ClienteLancamento = $ClientesAtivos.codigo_cliente_omie[(Random(0..($ClientesAtivos.Count -1)))] $ContaLancamento = $CCAtivas.nCodCC[(Random(0..($CCAtivas.Count -1)))] $DespesaLancamento = $ContasDespesas.codigo[(Random(0..($ContasDespesas.Count - 1)))] $Data = $Datas[(Random(0..($Datas.Count -1)))] $Valor = (Random(0..10000))/100 $Dados = [PSCustomObject]@{ "codigo_lancamento_integracao"= "$LancamentoIntegracao" "codigo_cliente_fornecedor"= $ClienteLancamento "data_vencimento"= "$Data" "valor_documento"= $Valor "codigo_categoria"= "$DespesaLancamento" "data_previsao"= "$Data" "id_conta_corrente"= $ContaLancamento } $parametros += $Dados $LancamentoIntegracao ++ } $param = $parametros | ConvertTo-Json $bodylanc = @" { "call": "IncluirContaPagarPorLote", "app_key": "$app_key", "app_secret": "$app_secret", "param": [{ "lote": $i, "conta_pagar_cadastro": $param } ] } "@ Invoke-RestMethod 'https://app.omie.com.br/api/v1/financas/contapagar/' -Method 'POST' -Headers $headers -Body $bodylanc $i ++ } |