==== Tutorial para a Coordenação de Informática (CINF) ====
* O uso do sistema, responsabilidades e competências foi normatizado através da [[http://secon.udesc.br/consuni/resol/2020/057-2020-cni.pdf|Resolução 057/2020 - CONSUNI]].
=== Formatando a lista de eleitores ===
Após a comissão eleitoral receber a lista de eleitores disponibilizada pelos setores competentes é necessário deixar a lista no formato a ser carregado no Helios.
Para isso foram criados alguns scripts para auxiliar a formatação das informações.
Para gerar o arquivo de importação do Helios a partir do arquivo recebido (ou tratado) com somente o CPF (um por linha) foi criada uma função a ser executada no PowerShell (abaixo):
Function cpf2helios( $CPF_FILE, $HELIOS_FILE ) {
# ====================================================================================
If ( !$CPF_FILE ) { $CPF_FILE = ".\arquivo_com_cpfs.txt" }
If ( !(Test-Path -Path $CPF_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break }
# ------------------------------------------------------------------------------------
If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\arquivo_helios.csv" }
# ------------------------------------------------------------------------------------
Write-Host "Parametros configurados:"
Write-Host "- Arquivo de entrada (CPF).: $CPF_FILE"
Write-Host "- Arquivo de saida (HELIOS): $HELIOS_FILE"
# ====================================================================================
Write-Host "Iniciando Processamento:"
# ------------------------------------------------------------------------------------
Write-Host "- Excluindo arquivo de saida se já existente."
If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE }
# ------------------------------------------------------------------------------------
Write-Host "- Processando registros do arquivo entrada."
$CONTA_REGISTRO = 0
Get-Content $CPF_FILE | ForEach-Object {
If ( Get-ADUser -Identity $_ -Properties SamAccountName,mail,displayName ) {
$USUARIO = ( Get-ADUser -Identity $_ -Properties SamAccountName,mail,displayName )
$CPF = $USUARIO.SamAccountName
$MAIL = $USUARIO.mail
$NOME = $USUARIO.displayName
$CONTA_REGISTRO++
Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE
Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO"
}
}
# ====================================================================================
Write-Host "Processamento finalizado!"
# ====================================================================================
}
Siga os seguintes passos para executar o script:
- Copie a função e cole diretamente no //PowerShell//, isto vai criar uma função na sessão no //shell// e você poderá executá-la múltiplas vezes apenas chamando: **cpf2helios** na linha de comando.
- O arquivo de entrada deve conter somente CPFs (um por linha).
- Execute a função passando os parâmetros conforme abaixo:
cpf2helios
# default: ARQUIVO_DE_ENTRADA = .\arquivo_com_cpfs.txt e ARQUIVO_DE_SAIDA = .\arquivo_helios.csv
ou
cpf2helios -CPF_FILE ARQUIVO_DE_ENTRADA
# default: ARQUIVO_DE_SAIDA = .\arquivo_helios.csv
ou
cpf2helios -CPF_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA
Para gerar o arquivo de importação do Helios a partir do arquivo gerado pelo SIGA foi criada uma função a ser executada no PowerShell (abaixo):
Function siga2helios( $SIGA_FILE, $HELIOS_FILE ) {
# ====================================================================================
$SIGA_TMP_FILE = ".\arquivo_tmp_siga.csv"
# ------------------------------------------------------------------------------------
If ( !$SIGA_FILE ) { $SIGA_FILE = ".\alunos_siga.txt" }
If ( !(Test-Path -Path $SIGA_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break }
# ------------------------------------------------------------------------------------
If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\alunos_helios.csv" }
# ------------------------------------------------------------------------------------
Write-Host "Parametros configurados:"
Write-Host "- Arquivo de entrada (SIGA): $SIGA_FILE"
Write-Host "- Arquivo de saida (HELIOS): $HELIOS_FILE"
# ====================================================================================
Write-Host "Iniciando Processamento:"
# ------------------------------------------------------------------------------------
Write-Host "- Excluindo arquivo de saida se já existente."
If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE }
# ------------------------------------------------------------------------------------
Write-Host "- Convertendo arquivo temporario em ASCII (por causa da acentuação)."
Get-Content $SIGA_FILE | Set-Content -Encoding ascii $SIGA_TMP_FILE
# ------------------------------------------------------------------------------------
Write-Host "- Processando registros do arquivo entrada."
$CONTA_REGISTRO = 0
Import-Csv -Delimiter "|" $SIGA_TMP_FILE | ForEach-Object {
$ID = $_.CIC
If ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) {
$USUARIO = ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName )
$CPF = $USUARIO.SamAccountName
$MAIL = $USUARIO.mail
$NOME = $USUARIO.displayName
$CONTA_REGISTRO++
Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE
Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO"
}
}
# ====================================================================================
Write-Host "- Excluindo arquivos temporarios."
If ( Test-Path -Path $SIGA_TMP_FILE ) { rm $SIGA_TMP_FILE }
# ------------------------------------------------------------------------------------
Write-Host "Processamento finalizado!"
# ====================================================================================
}
Siga os seguintes passos para executar o script:
- Copie a função e cole diretamente no //PowerShell//, isto vai criar uma função na sessão no //shell// e você poderá executá-la múltiplas vezes apenas chamando: **siga2helios** na linha de comando.
- Execute a função passando os parâmetros conforme abaixo (no mínimo contendo o CENTRO de Ensino):
siga2helios -CENTRO SIGLA_DO_CENTRO
# default: ARQUIVO_DE ENTRADA = .\alunos_siga.txt e ARQUIVO_DE_SAIDA = .\alunos_helios.csv
ou
siga2helios -CENTRO SIGLA_DO_CENTRO -SIGA_FILE ARQUIVO_DE_ENTRADA
# default: ARQUIVO_DE_SAIDA = .\alunos_helios.csv
ou
siga2helios -CENTRO SIGLA_DO_CENTRO -SIGA_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA
Observações:
- Sempre que a função executa, o arquivo gerado é apagado (se já existente) então lembre-se de copiá-lo se quiser mantê-lo.
- O arquivo original possui cabeçalho e o gerado não, então sempre vai existir 01 (uma) linha de diferença entre os dois.
Em algumas situações, a secretaria acadêmica e/ou de pós graduação poderão enviar vários arquivos, um para cada curso, por exemplo.
O seguinte script foi criado para gerar um arquivo .csv no formato do Helios para cada arquivos .txt dentro de uma determinada pasta.
Necessário se atentar aos detalhes:
* O script **siga2helios** já deve estar disponível no //PowerShell//;
* Se atentar a parte **$PastaEntrada**, colocar o caminho completo ou **$PWD** caso já esteja na pasta dos arquivos .txt;
* Na chamada da função **siga2helios**, alterar para o centro de acordo com o seu;
* Basta copiar e colar o script no //PowerShell//.
# Script para converter todos os arquivos .txt em uma pasta para .csv
# Definir a pasta de entrada
$PastaEntrada = "C:\Pasta\Com\Arquivos\SIGA" #utilize $PWD, sem aspas, caso esteja na pasta dos arquivos
# Obter todos os arquivos .txt na pasta
$ArquivosSIGA = Get-ChildItem -Path $PastaEntrada -Filter *.txt
# Loop para cada arquivo .txt
foreach ($ArquivoSIGA in $ArquivosSIGA) {
# Extrair o nome do arquivo sem a extensão
$NomeArquivo = $ArquivoSIGA.BaseName
# Gerar o nome do arquivo CSV
$ArquivoCSV = "$NomeArquivo.csv"
# Chamar a função para converter o arquivo, não esqueça de alterar para o seu centro
siga2helios -CENTRO CENTRO -SIGA_FILE $ArquivoSIGA.FullName -HELIOS_FILE $ArquivoCSV
# Exibir mensagem de sucesso
Write-Host "Arquivo $ArquivoCSV gerado com sucesso!"
}
# Mensagem de finalização
Write-Host "Todos os arquivos .txt na pasta foram convertidos para .csv no formato do Helios!"
Para gerar o arquivo de importação do Helios a partir do arquivo Excel encaminhado pelo RH foi criada uma função a ser executada no //PowerShell// (abaixo):
Function excel2csv ($FILE) {
# ====================================================================================
$EXCEL_FILE = "$(Get-Location)\$FILE" -replace '\.\\',''
$CSV_FILE = $EXCEL_FILE.Split(".")[0] + ".csv"
$TMP_FILE = $EXCEL_FILE.Split(".")[0] + "_temp.csv"
# ------------------------------------------------------------------------------------
Write-Host " * Abrindo a planilha no Excel."
$EXCEL_APP = New-Object -ComObject Excel.Application
$WB = $EXCEL_APP.Workbooks.Open($EXCEL_FILE)
# ------------------------------------------------------------------------------------
Write-Host " * Salvando a planilha como CSV."
ForEach ($WS in $WB.Worksheets) {
$WS.SaveAs($TMP_FILE, 6)
}
# ------------------------------------------------------------------------------------
Write-Host " * Finalizando o processo Excel."
$EXCEL_APP.Quit()
Stop-Process -ProcessName EXCEL
# ------------------------------------------------------------------------------------
Write-Host " * Extraindo o cabeçalho do arquivo (7 primeiras linhas)."
Get-Content $TMP_FILE | Select-Object -Skip 7 | Set-Content -Encoding utf8 $CSV_FILE
# ------------------------------------------------------------------------------------
Write-Host " * Excluindo arquivos temporarios."
If ( Test-Path -Path $TMP_FILE ) { rm $TMP_FILE }
# ------------------------------------------------------------------------------------
return $CSV_FILE
# ====================================================================================
}
Function sigrh2helios( $SIGRH_FILE, $HELIOS_FILE ) {
# ====================================================================================
$SIGRH_TMP_FILE = ".\arquivo_tmp_sigrh.csv"
# ------------------------------------------------------------------------------------
If ( !$SIGRH_FILE ) { $SIGRH_FILE = ".\servidores_sigrh.xlsx" }
If ( !(Test-Path -Path $SIGRH_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break }
# ------------------------------------------------------------------------------------
If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\servidores_helios.csv" }
# ------------------------------------------------------------------------------------
Write-Host "Parametros configurados:"
Write-Host "- Arquivo de entrada (SIGRH): $SIGRH_FILE"
Write-Host "- Arquivo de saida (HELIOS).: $HELIOS_FILE"
# ====================================================================================
Write-Host "Iniciando Processamento:"
# ------------------------------------------------------------------------------------
Write-Host "- Excluindo arquivo de saida se já existente."
If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE }
# ------------------------------------------------------------------------------------
Write-Host "- Convertendo arquivo Excel para CSV."
$SIGRH_TMP_FILE = excel2csv -FILE $SIGRH_FILE
# ------------------------------------------------------------------------------------
Write-Host "- Processando registros do arquivo entrada."
$CONTA_REGISTRO = 0
Import-Csv $SIGRH_TMP_FILE | ForEach-Object {
$ID = $_.CPF -replace '[.-]', ''
If ( $ID ) {
If ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) {
$USUARIO = ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName )
$CPF = $USUARIO.SamAccountName
$MAIL = $USUARIO.mail
$NOME = $USUARIO.displayName
$CONTA_REGISTRO++
Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE
Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO"
}
}
}
# ====================================================================================
Write-Host "- Excluindo arquivos temporarios."
If ( Test-Path -Path $SIGRH_TMP_FILE ) { rm $SIGRH_TMP_FILE }
# ------------------------------------------------------------------------------------
Write-Host "Processamento finalizado!"
# ====================================================================================
}
Siga os seguintes passos para executar o script:
- Copie a função e cole diretamente no //PowerShell//, isto vai criar uma função na sessão no //shell// e você poderá executá-la múltiplas vezes apenas chamando: **sigrh2helios** na linha de comando.
- Como o Excel é utilizado para converter o arquivo é necessário tê-lo instalado na mesma máquina que está executando o script.
- Importante: o arquivo fornecido possuía 7 linhas iniciais que são informativas (do relatório) e são extraídas automaticamente na função de conversão do arquivo de Excel para CSV. Caso o arquivo fornecido tenha um cabeçalho diferente será necessário ajustar a função **excel2csv**.
- Execute a função passando os parâmetros conforme abaixo:
sigrh2helios
# default: ARQUIVO_DE ENTRADA = .\servidores_sigrh.xlsx e ARQUIVO_DE_SAIDA = .\servidores_helios.csv
ou
sigrh2helios -SIGRH_FILE ARQUIVO_DE_ENTRADA
# default: ARQUIVO_DE_SAIDA = .\servidores_helios.csv
ou
sigrh2helios -SIGRH_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA