R/numerocnj.R

revstr <- function(x) sapply(lapply(strsplit(x, NULL), rev), paste, collapse="")

#' Encontra a merda do digito verificador de um numero cnj
#'
#' @export
calcula_digito <- function(num, monta = FALSE) {
  NNNNNNN <- substr(num,  1L,  7L)
  AAAA <-    substr(num,  8L, 11L)
  JTR <-     substr(num, 12L, 14L)
  OOOO <-    substr(num, 15L, 18L)
  n1 <- sprintf('%02d', as.numeric(NNNNNNN) %% 97)
  n2 <- sprintf('%02d', as.numeric(sprintf('%s%s%s', n1, AAAA, JTR)) %% 97)
  n3 <- sprintf('%02d', 98 - ((as.numeric(sprintf('%s%s', n2, OOOO)) * 100) %% 97))
  dig <- n3
  if(monta) {
    return(sprintf('%s%s%s', substr(num, 1, 7), dig, substr(num, 8, 18)))
  }
  return(dig)
}
jtrecenti/numero_cnj documentation built on May 20, 2019, 3:17 a.m.