Created
December 18, 2019 18:59
-
-
Save saymont/97ef13b62edca4902eb399ab4f63f763 to your computer and use it in GitHub Desktop.
Adiciona campos: tipo_operacao_id e finalidade. Ajusta a exportação para CSV
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################### | |
# Script para sincronização de documentos com o Portal Consyst-e | |
# Documentação da integração: https://portal.consyste.com.br/doc/api | |
############################################################################### | |
param ( | |
[Parameter(Mandatory = $true)][string]$AuthToken, # o token de autenticação no Consyst-e | |
[string]$OutDir = '/tmp/csv', # o diretório onde o CSV será salvo | |
[string]$Kind = 'nfe', # o tipo de documento a consultar ('nfe' ou 'cte') | |
[string]$Query = 'recebido_em: [now-30d TO *]' # consulta a rodar | |
) | |
$ErrorActionPreference = 'Stop' | |
$baseUri = 'https://portal.consyste.com.br/api/v1' | |
# cria o diretório de saída, se não existir | |
New-Item -ItemType Directory -Force -Path $OutDir | Out-Null | |
# função para chamar a API da Consyst-e | |
function Call-Consyste { | |
param ( | |
[Parameter(Position = 0)][string]$path, | |
$OutFile | |
) | |
$uri = "$baseUri$path" | |
$pp = $progressPreference | |
$progressPreference = 'silentlyContinue' | |
Invoke-RestMethod -Headers @{ 'X-Consyste-Auth-Token' = $AuthToken } -Uri $uri -OutFile $OutFile | |
$progressPreference = $pp | |
} | |
# inicia um cronômetro | |
$sw1 = New-Object Diagnostics.Stopwatch | |
$sw1.Start() | |
# Lista de campos a retornar | |
$CamposParametros = "emit_cnpj,dest_cnpj,chave,numero,emitido_em,manifestacao_cd,manifestacao_realizada_em,manifestacao_justificativa,ultima_manifestacao_cd,ultima_manifestacao_data,ultima_manifestacao_descricao,tipo_operacao_id,finalidade" | |
# Chama a API com a consulta solicitada | |
$Url = "/$Kind/lista/recebidos?q=$([uri]::EscapeDataString($Query))&campos=$CamposParametros" | |
$Res = Call-Consyste $Url | |
$Documentos = $Res.documentos | |
$ProximaPagina = $Res.proxima_pagina | |
# Continua Listagem se necessário | |
while ($Documentos.Count -lt $Res.total) { | |
$Continua = Call-Consyste "/$Kind/lista/continua/$ProximaPagina" | |
$Documentos = [array]$Documentos + $Continua.documentos | |
$ProximaPagina = $Continua.proxima_pagina | |
Write-Progress "Coletando documentos " -PercentComplete ($Documentos.Count / $Res.Total * 100) | |
} | |
Write-Progress "Coletando documentos" -Completed | |
# Cria o CSV | |
$FileName = Get-Date -Format "MM-dd-yyyy-HHmmss" | |
$Documentos | Export-Csv -Path "$OutDir\$FileName.csv" -NoTypeInformation | |
# encerra o cronômetro | |
$sw1.Stop() | |
Write-Host | |
Write-Host | |
Write-Host | |
Write-Host | |
Write-Host | |
Write-Host "Obtidos $($Documentos.Count) documentos em $($sw1.Elapsed)" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment