Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/348 349 add pagamentos rs #80

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions feed-al/scripts/create/create_empenho.sql
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ CREATE TABLE IF NOT EXISTS "empenho" (
"cd_cat_economica" VARCHAR(1),
"cd_nat_despesa" VARCHAR(1),
"cd_modalidade" VARCHAR(2),
"cd_elemento" VARCHAR(2),
"cd_elemento" VARCHAR(20),
"cd_sub_elemento" VARCHAR(3),
"tp_licitacao" SMALLINT,
"nu_licitacao" VARCHAR(10),
"nu_empenho" VARCHAR(7),
"nu_licitacao" VARCHAR(50),
"nu_empenho" VARCHAR(50),
"tp_empenho" SMALLINT,
"dt_empenho" DATE,
"vl_empenho" DECIMAL,
Expand All @@ -38,7 +38,6 @@ CREATE TABLE IF NOT EXISTS "empenho" (
"cd_sub_elemento_2" VARCHAR(3),
"cd_ibge" VARCHAR(7),
PRIMARY KEY("id_empenho"),
CONSTRAINT empenho_key UNIQUE (nu_empenho, cd_unid_orcamentaria, dt_ano, cd_u_gestora),
FOREIGN KEY("cd_ibge") REFERENCES localidade_ibge("cd_ibge") ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY("id_licitacao") REFERENCES licitacao("id_licitacao") ON DELETE CASCADE ON UPDATE CASCADE

Expand Down
4 changes: 2 additions & 2 deletions feed-al/scripts/create/create_pagamento.sql
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ CREATE TABLE IF NOT EXISTS "pagamento" (
"cd_u_gestora" INTEGER,
"dt_ano" SMALLINT,
"cd_unid_orcamentaria" VARCHAR(5),
"nu_empenho" VARCHAR(7),
"nu_parcela" VARCHAR(7),
"nu_empenho" VARCHAR(50),
"nu_parcela" VARCHAR(50),
"tp_lancamento" VARCHAR(3),
"vl_pagamento" DECIMAL,
"dt_pagamento" DATE,
Expand Down
3 changes: 3 additions & 0 deletions feed-al/scripts/import/import_data_tce_rs.sql
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
\copy licitacao FROM PROGRAM 'awk FNR-1 /data/rs/licitacoes/*.csv | cat' WITH NULL AS 'NA' DELIMITER ',' CSV;
\copy contrato FROM PROGRAM 'awk FNR-1 /data/rs/contratos/*.csv | cat' WITH NULL AS 'NA' DELIMITER ',' CSV;

\copy empenho FROM PROGRAM 'awk FNR-1 /data/rs/empenhos/*.csv | cat' WITH NULL AS 'NA' DELIMITER ',' CSV;
\copy pagamento FROM PROGRAM 'awk FNR-1 /data/rs/pagamentos/*.csv | cat' WITH NULL AS 'NA' DELIMITER ',' CSV;

7 changes: 7 additions & 0 deletions fetcher/scripts/fetch_tce_rs_opendata.R
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,15 @@ for(ano_exec in anos_exec){
decompress_file(path_empenhos, empenhos_zip)
unlink(empenhos_zip)

message(sprintf(" Separando empenhos do ano %s em arquivos menores.",ano_exec))
csv_empenhos_full <- sprintf("data/rs/empenhos/%s/%s.csv", ano_exec, ano_exec)
cmd_split <- paste("awk -v l=500000 '(NR==1){header=$0;next} (NR%l==2) { close(file); file=sprintf(\"%s.%0.5d.csv\",FILENAME,++c); sub(/csv[.]/,\"\",file); print header > file; } {print > file}'", csv_empenhos_full)
system(cmd_split)
system(paste("rm", csv_empenhos_full))
}



# realiza o fetch dos arquivos que não são anuais
# fetch órgãos
message(" Realizando fetch dos órgãos...")
Expand Down
60 changes: 60 additions & 0 deletions transformador/R/tce_rs_opendata.R
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,67 @@ format_contrato_tce_rs <- function(contratos_transformados_rs_df) {
dplyr::select(colunas_contratos)
}

#' @title Processa dataframe dos empenhos
#' @description Manipula a tabela para se adequar aos outros estados
#' @param empenhos_pagamentos_transformados_rs_df Dataframe contendo informações de empenhos e pagamentos do RS
#' @return Dataframe contendo informações dos empenhos
format_empenhos_tce_rs <- function(empenhos_pagamentos_transformados_rs_df) {
colunas_empenhos <- c( "id_empenho", "id_licitacao", "id_contrato","cd_u_gestora","dt_ano","cd_unid_orcamentaria","cd_funcao","cd_subfuncao",
"cd_programa","cd_acao","cd_classificacao", "cd_cat_economica", "cd_nat_despesa", "cd_modalidade","cd_elemento",
"cd_sub_elemento","tp_licitacao","nu_licitacao", "nu_empenho", "tp_empenho","dt_empenho","vl_empenho","cd_credor",
"no_credor","tp_credor","de_historico1","de_historico2","de_historico","tp_meta","nu_obra", "dt_mes_ano",
"dt_mes_ano_referencia","tp_fonte_recursos","nu_cpf", "cd_sub_elemento_2","cd_ibge")

empenhos_rs_formatados <-fncols(empenhos_pagamentos_transformados_rs_df, colunas_empenhos) %>%
dplyr::select(colunas_empenhos) %>%
dplyr::distinct(id_empenho, .keep_all = TRUE)
}

#' @title Processa dataframe de pagamentos
#' @description Manipula a tabela para se adequar aos outros estados
#' @param empenhos_pagamentos_transformados_rs_df Dataframe contendo informações de empenhos e pagamentos do RS
#' @return Dataframe contendo informações dos pagamentos
format_pagamentos_tce_rs <- function(empenhos_pagamentos_transformados_rs_df) {
colunas_pagamentos <- c("id_pagamento","id_empenho","id_licitacao","id_contrato",
"cd_u_gestora","dt_ano","cd_unid_orcamentaria","nu_empenho",
"nu_parcela","tp_lancamento","vl_pagamento","dt_pagamento",
"cd_conta","nu_cheque_pag","nu_deb_aut","cd_banco_rec",
"cd_agencia_rec","nu_conta_rec","tp_fonte_recursos","dt_mes_ano",
"cd_banco","cd_agencia","tp_conta_bancaria")

pagamentos_rs_formatados <-fncols(empenhos_pagamentos_transformados_rs_df, colunas_pagamentos) %>%
dplyr::select(colunas_pagamentos) %>%
dplyr::filter(!is.na(vl_pagamento))

}

#' @title Processa dataframe de empenhos e pagamentos do RS
#' @description Manipula a tabela para a adição de identificadores e para adequação
#' de colunas.
#' @param empenhos_pagamento_ce_rs Dataframe contendo informações de empenhos e pagamentos do RS
#' @return Dataframe contendo informações dos empenhos e pagamentos
process_empenhos_pagamento_tce_rs <- function(empenhos_pagamento_tce_rs, file_empenho) {
empenhos_pagamento_tce_rs %<>% generate_empenhos_pagamento_tce_rs_id(file_empenho)
}

#' @title Gera um identificador único para empenhos e licitações do RS
#' @param empenhos_pagamento_tce_rs Dataframe contendo informações sobre empenhos e licitações
#' @return Dataframe contendo informações sobre empenhos e licitações do RS e seus ids
#' @rdname generate_empenhos_pagamento_tce_rs_id
#' @examples
#' empenhos_pagamento_tce_rs <- generate_empenhos_pagamento_tce_rs_id(empenhos_pagamento_tce_rs)
generate_empenhos_pagamento_tce_rs_id <- function(empenhos_pagamento_tce_rs, file_empenho) {
empenhos_pagamento_tce_rs$index <- seq.int(nrow(empenhos_pagamento_tce_rs))
empenhos_pagamento_tce_rs$file <- file_empenho

chave_empenhos <- c("ano_recebimento", "mes_recebimento", "cd_u_gestora", "cd_orgao_orcamentario", "nome_orgao_orcamentario",
"cd_unidade_orcamentaria", "nome_unidade_orcamentaria", "tp_unidade",
"dt_empenho", "ano_empenho", "ano_operacao", "nu_empenho", "cd_credor", "nu_cpfcnpj",
"ano_licitacao", "nu_licitacao", "cd_tipo_modalidade", "file")

empenhos_pagamento_tce_rs %<>% .generate_hash_id(chave_empenhos, "id_empenho")
empenhos_pagamento_tce_rs %<>% .generate_hash_id(c("index", "file"), "id_pagamento")
}



12 changes: 11 additions & 1 deletion transformador/R/tradutor/interface.R
Original file line number Diff line number Diff line change
Expand Up @@ -270,10 +270,20 @@ get_licitacoes_tce_rs <- function(ano){
#' @return Dataframe contendo informações sobre os fornecedores
#' @rdname get_pessoas_tce_rs
#' @examples
#' essoas_tce_rs_dt <- get_pessoas_tce_rs()
#' pessoas_tce_rs_dt <- get_pessoas_tce_rs()
get_pessoas_tce_rs <- function(ano){
pessoas_tce_rs_dt <- read_pessoas_tce_rs(ano) %>%
translate_pessoas_tce_rs()
}

#' @title Obtem dados os dados de empenhos, liquidações e pagamentos do TCE-RS
#' @return Dataframe contendo informações sobre empenhos, liquidações e pagamentos
#' @rdname get_empenho_tce_rs
#' @examples
#' get_empenho_tce_rs <- get_empenho_tce_rs(2020, 2020.00001.csv)
get_empenho_tce_rs <- function(ano, file_empenho){
get_empenho_tce_rs <- read_empenho_tce_rs(ano, file_empenho) %>%
translate_empenho_tce_rs()
}


12 changes: 12 additions & 0 deletions transformador/R/tradutor/read_utils_tce_rs.R
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,18 @@ read_pessoas_tce_rs <- function(ano) {
))
}

#' @title Lê dataframe contendo informações de empenhos, liquidações e pagamentos da base de dados do TCE-RS
#' @return Dataframe contendo informações sobre empenhos, liquidações e pagamentos
#' @rdname read_empenho_tce_rs
#' @examples
#' read_empenho_tce_rs_dt <- read_empenho_tce_rs(ano, file)
read_empenho_tce_rs<- function(ano, file_empenho){
empenho_tce_rs_df <- readr::read_csv(here::here(sprintf("../fetcher/data/rs/empenhos/%s/%s", ano, file_empenho)),
col_types = list(
.default = readr::col_character()
))

}



23 changes: 22 additions & 1 deletion transformador/R/tradutor/tce_rs_opendata.R
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ translate_licitacoes_tce_rs <- function(licitacoes_tce_rs_raw){
licitacoes_tce_rs_raw %<>% janitor::clean_names() %>%
dplyr::rename(cd_u_gestora = cd_orgao) %>%
dplyr::rename(dt_ano = ano_licitacao) %>%
dplyr::rename(nu_licitacao = nr_licitacao) %>% #tp_licitacao, dt_homologacao,vl_licitacao ok
dplyr::rename(nu_licitacao = nr_licitacao) %>%
dplyr::rename(de_obs = ds_objeto) %>%
dplyr::rename(de_ugestora = nm_orgao)
}
Expand All @@ -55,6 +55,27 @@ translate_pessoas_tce_rs <- function(pessoas_tce_rs_raw){
dplyr::rename(no_fornecedor = nm_pessoa)
}

#' @param empenho_licitacao_tce_rs_raw Dados brutos de empenhos, liquidações e pagamentos
#' @return Dataframe contendo informações sobre empenhos, liquidações e pagamentos da base do TCE-RS
#' @rdname translate_empenho_tce_rs
#' @examples
#' empenho_tce_rs_dt <- translate_empenho_tce_rs(empenho_licitacao_tce_rs_raw)
translate_empenho_tce_rs <- function(empenho_licitacao_tce_rs_raw){
empenho_licitacao_tce_rs_raw %<>% janitor::clean_names() %>%
dplyr::rename(cd_u_gestora = cd_orgao) %>%
dplyr::rename(nu_cpfcnpj = cnpj_cpf) %>%
dplyr::rename(no_fornecedor = nm_credor) %>%
dplyr::rename(dt_ano = ano_contrato) %>%
dplyr::rename(de_historico = historico) %>%
dplyr::rename(nu_empenho = nr_empenho) %>%
dplyr::rename(nu_parcela = nr_pagamento) %>%
dplyr::rename(dt_pagamento = dt_operacao) %>%
dplyr::rename(nu_licitacao = nr_licitacao) %>%
dplyr::rename(nu_contrato = nr_contrato) %>%
dplyr::rename(cd_tipo_modalidade = mod_licitacao) %>%
dplyr::rename(tp_instrumento = tp_instrumento_contratual)

}



17 changes: 17 additions & 0 deletions transformador/man/format_empenhos_tce_rs.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions transformador/man/format_pagamentos_tce_rs.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions transformador/man/generate_empenhos_pagamento_tce_rs_id.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions transformador/man/process_empenhos_pagamento_tce_rs.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 44 additions & 2 deletions transformador/scripts/transform_mc_data_tce_rs.R
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ message(" INICIANDO SCRIPT - TRANSFORMAÇÃO DOS DADOS ")
message(" ------------------------------------------")
message("")


library(magrittr)

source(here::here("R/tradutor/interface.R"))
source(here::here("utils/join_utils.R"))

.HELP <- "Rscript transform_mc_data.R"
.HELP <- "Rscript transform_mc_data_tce_rs.R"

#Instala pacote mcTransformador
devtools::document()
Expand Down Expand Up @@ -41,7 +42,7 @@ message("")
#------------------------- TCE-RS --------------------------#
#-----------------------------------------------------------------------------#

ANOS_DISPONIVEIS <- c(2016, 2017, 2018, 2019, 2020)
ANOS_DISPONIVEIS <- c(2018, 2019, 2020)
anos_fetch <- list.dirs(path = "./../fetcher/data/rs/contratos", full.names = FALSE, recursive = TRUE)

message(" CARREGANDO DADOS DO TCE-RS...")
Expand Down Expand Up @@ -104,11 +105,52 @@ for(ano in anos_fetch){
dir.create(output_dir_contratos_rs)
dir.create('data/rs/licitacoes')
dir.create('data/rs/contratos')
dir.create('data/rs/empenhos')
dir.create('data/rs/pagamentos')
}

readr::write_csv(contratos_rs_formatados, here::here(sprintf("./data/rs/contratos/contratos_%s.csv", ano)))
readr::write_csv(licitacoes_rs_formatadas, here::here(sprintf("./data/rs/licitacoes/licitacoes_%s.csv", ano)))

#
# --- Carregando e transformando EMPENHOS e PAGAMENTOS
#
message(sprintf(" - Carregando e processando empenhos e pagamentos do ano %s...", ano))

#seta o caminho dos arquivos de empenhos/pagamentos
path_files_empenhos <- sprintf("../fetcher/data/rs/empenhos/%s", ano)
files_empenhos <-list.files(path_files_empenhos)

for(file_empenho in files_empenhos){
message(sprintf(" - Carregando empenhos/pagamentos do arquivo %s (%s)...", file_empenho, ano))
empenho_pagamento_rs_df <- get_empenho_tce_rs(ano, file_empenho)

empenhos_pagamento_rs_transformados <- empenho_pagamento_rs_df %>%
mcTransformador::process_empenhos_pagamento_tce_rs(file_empenho) %>%
join_empenhos_pagamentos_rs_contratos(contratos_rs_transformados)

message(sprintf(" - Formatando empenhos do arquivo %s (%s)...", file_empenho, ano))
empenhos_rs_formatados <- empenhos_pagamento_rs_transformados %>%
format_empenhos_tce_rs()

message(sprintf(" - Formatando pagamentos do arquivo %s (%s)...", file_empenho, ano))
pagamentos_rs_formatados <- empenhos_pagamento_rs_transformados %>%
format_pagamentos_tce_rs()

message(sprintf(" - Salvando empenhos/pagamentos do arquivo %s (%s)...", file_empenho, ano))
readr::write_csv(empenhos_rs_formatados, here::here(sprintf("./data/rs/empenhos/empenhos_%s_%s", ano, file_empenho)))
readr::write_csv(pagamentos_rs_formatados, here::here(sprintf("./data/rs/pagamentos/pagamentos_%s_%s", ano, file_empenho)))

rm(empenho_pagamento_rs_df)
rm(empenhos_pagamento_rs_transformados)
rm(empenhos_rs_formatados)
rm(pagamentos_rs_formatados)
gc()

}

}




35 changes: 35 additions & 0 deletions transformador/utils/join_utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -344,4 +344,39 @@ join_pagamentos_empenhos <- function(df_pagamentos, df_empenhos) {
dplyr::select(id_pagamento, id_empenho, id_licitacao, id_contrato, dplyr::everything())
}

#' @title Realiza o join dos empenhos e pagamentos do RS com o df de contratos
#' @param df_empenhos_pagamentos_rs dataframe com os empenhos e pagamentos
#' @param df_contratos_rs dataframe com os contratos
#' @return Dataframe contendo informações dos empenhos e pagamentos com o id do contrato
#' @rdname join_empenhos_rs_contratos
#' @examples
#' join_empenhos_pagamentos_rs_contratos_dt <- join_empenhos_pagamentos_rs_contratos(df_empenhos_pagamentos_rs, df_contratos_rs)
#'
join_empenhos_pagamentos_rs_contratos <- function(df_empenhos_pagamentos_rs, df_contratos_rs) {
df_contratos_rs %<>% dplyr::select(cd_tipo_modalidade, tp_instrumento, ano_licitacao,
dt_ano, nu_contrato, nu_licitacao, cd_u_gestora,
id_licitacao, id_contrato) %>%
dplyr::mutate(dt_ano = as.character(dt_ano))

df_empenhos_pagamentos_rs %<>% dplyr::left_join(df_contratos_rs , by=c("tp_instrumento", "cd_tipo_modalidade", "ano_licitacao",
"dt_ano", "nu_contrato", "nu_licitacao", "cd_u_gestora")) %>%
dplyr::select(id_empenho,id_licitacao, id_licitacao, id_contrato, dplyr::everything()) %>%
dplyr::filter(!is.na(id_contrato))
}



# df_empenhos_pagamentos_rs %<>% dplyr::left_join(contratos_df %>%
# dplyr::mutate(nr_licitacao = as.character(nr_licitacao),
# nr_contrato = as.character(nr_contrato)) %>%
# dplyr::select(id_contrato, id_orgao, ano_licitacao, nr_licitacao, cd_tipo_modalidade,
# nr_contrato, ano_contrato, tp_instrumento_contrato),
# by = c("id_orgao", "ano_licitacao", "nr_licitacao", "cd_tipo_modalidade",
# "nr_contrato", "ano_contrato", "tp_instrumento_contrato"))