Commit a9f6235f authored by Miguel Guerrero's avatar Miguel Guerrero

adiciona validacao para correlacao ncm

parent d5df4011
# Esboço validação
library(dplyr)
library(readxl)
library(stringr)
library(purrr)
library(arrow)
# carrega caminhos para dados
# path_ncm <- file.path(
# Sys.getenv("general"),
# "Bases",
# "correlacoes",
# "mercosul",
# "output",
# "correlacao_completa_ncm.xlsx"
# )
path_ncm <- "correlacao_completa_ncm.xlsx"
# path_ncm_detalhada <- file.path(
# Sys.getenv("general"),
# "Bases",
# "correlacoes",
# "mercosul",
# "output",
# "correlacao_completa_ncm_detalhada.xlsx"
# )
path_ncm_detalhada <- "correlacao_completa_ncm_detalhada.xlsx"
correlacao_ncm_detalhada <- read_xlsx(path_ncm_detalhada, guess_max = 1e6)
# funcao para obter linhas com mudancas de codigo em cada revisao NCM
filtra_mudancas <- function(x, padrao) {
x |>
select(matches(padrao)) |>
filter(
# seleciona as linhas que tem algum valor diferente de NA com exceção
# de dados na primeira coluna
if_any(-1, ~ !is.na(.))
) |>
# cria uma coluna preenchendo-a com a primeira informação não NA da
# direita para a esquerda
mutate(!!padrao := do.call(coalesce, rev(as.list(across(-1))))) |>
select(
ncm_original = 1,
last_col()
) |>
distinct()
}
# cria lista de nomes para usar como input em filtra_mudancas
nomes_para_funcao <- names(correlacao_ncm_detalhada) |>
str_extract("NCM_\\d{4}") |>
unique()
# obtem lista com as ncms originais das revisoes
ncms_originais <- nomes_para_funcao |>
map(~ filtra_mudancas(correlacao_ncm_detalhada, padrao = .x))
names(ncms_originais) <- nomes_para_funcao |>
str_replace("_", " ")
# tamanho da lista de ncms originais
tamanho_lista <- length(ncms_originais)
# ultimo elemento da lista de ncms originais
ultima_revisao <- ncms_originais[[tamanho_lista]]
# ultimo arquivo do projeto ncms_originais
dados_gerados_ncms_originais <- readRDS("dados_gerados/ncms_originais.rds")
dados_gerados_ncms_originais <- dados_gerados_ncms_originais[[tamanho_lista]]
# compara coluna ncm original de agora com anterior
# indica que codigos que não estavam na revisão, original apareceram agora
setdiff(
ultima_revisao$ncm_original,
dados_gerados_ncms_originais$ncm_original
)
# obter nome da segunda coluna da ultima revisao
nome_segunda_coluna <- ultima_revisao |>
select(-ncm_original) |>
names()
# compara coluna de mudanças dentro da revisão. Indica códigos que
# apareceram agora em relação ao ultimo arquivo
setdiff(
ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]]
)
# carrega dados da tec
tec <- read_xlsx("tec_oficial.xlsx", guess_max = 1e6)
# observa mudanças nos códigos ncm de um arquivo anterior
# e verifica se tem alguma ncm que não está mais na tec vigente.
dados_gerados_ncms_originais |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\.")) |>
left_join(tec, by = "ncm") |>
distinct() |>
filter(is.na(descricao_tec)) |>
pull(ncm)
#####################################
# compara codigos ncm da tabela de correlacao ncm de agora
# e verifica se todos estão presentes na tec vigente.
correlacao_completa_ncm_mercosul <- read_xlsx(path_ncm, guess_max = 1e6) # agora
correlacao_completa <- correlacao_completa_ncm_mercosul |>
distinct() |>
rename_with(~str_to_upper(.x)) |>
tidyr::drop_na()
correlacao_ncm <- correlacao_completa |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\."))
correlacao_ncm |>
select(ncm) |>
distinct()
tec |>
filter(ncm %in% correlacao_ncm$NCM_2022)
# compara codigos ncm da tabela correlação ncm antiga e
# verifica se todos estão presentes na tec vigente.
correlacao_ncm_antes <- read_parquet("dados_gerados/dataset_ncm.parquet") # antes
correlacao_ncm_antes <- correlacao_ncm_antes |>
rename(ncm = all_of(nome_segunda_coluna)) |>
mutate(ncm = str_remove_all(ncm, "\\."))
tec |>
filter(ncm %in% correlacao_ncm_antes$ncm)
# verifica codigos que entraram na tabela correlacao ncm
setdiff(correlacao_ncm$ncm, correlacao_ncm_antes$ncm)
# compara com codigos ncms originais antes e depois
setdiff(
ultima_revisao[[nome_segunda_coluna]],
dados_gerados_ncms_originais[[nome_segunda_coluna]]
)
# codigos que saíram da tabela de correlacao
setdiff(correlacao_ncm_antes$ncm, correlacao_ncm$ncm)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment