---
title: "Reporte Validaciones Sistema de Tasa de Interes"
author: "Banco Central del Ecuador"
subtitle: "IG - 081 V 13.0 Instructivo de Tasas de Interes del Banco Central del Ecuador"
date: "`r format(Sys.time(), '%d %B, %Y')`" 
output: 
  rmdformats::downcute:
  css: style.css
  toc_float: TRUE  
  highlight: pygments
  self_contained: true
  thumbnails: true
  lightbox: true
  gallery: false
---

<div>
<p style = 'text-align:center;'>
<img src="D:\\Bases de Datos\\bases\\Script Tasas de Interes\\Imagen\\Banco Central.jpg" >
</p>

<div style="text-align: justify">

**NOTA: El objetivo de la pre-validacion permitira tener una baja probabilidad de presentar errores en la estructura semanal de tasas de interes (TXT)**

**Esta pre-validacion no calcula el valor MD5.**

**Una vez realizada la pre-validacion y no exista errores, se debera de cargar la informacion en el directorio: /BANCOS1/nombre_de_la_entidad/INTERES**

**ESTA PRE-VALIDACIoN ES UN PROCESO OPCIONAL PARA LA ENTIDAD FINANCIERA**

La pre-validacion se compone de tres procesos:

1. Verificacion de tablas del instructivo (posibles errores que puede tener la estructura);

2. Validacion entre columnas de informacion (posibles errores que puede tener la estructura); y,

3. Proceso de consistencia de informacion (revision de los datos de la entidad financiera - NO SON CONSIDERADDOS COMO ERROR).


No contempla filas en blanco al inicio y al final de la estructura, caracteres especiales en los registros y no valida la primera fila de la estructura.


# PRIMERA VALIDACION: VERIFICACION DE TABLAS EN LAS DIFERENTES COLUMNAS DE INFORMACION

**En esta primera parte se realiza una validacion de cada una de las tablas y codigos, se considera como "ERROR" si un codigo no existe en la estructura de datos o celdas vacias en la informacion**

## Fechas de corte de informacion

Resumen de Errores

```{r setup, cache=FALSE, message=FALSE, echo = FALSE, include=FALSE}

# Configuracion inicial                  

rm(list = ls())                   #limpia los objetos 
graphics.off()                    #limpiar el dispositivo de graficas
gc()                              #limpiar la memoria virtual 
cat("\014")                       #limpiar la consola

############################################
############################################

# DIRECTORIO DONDE SE VA A TRABAJAR Y LEER LOS ARCHIVO EN FORMATO "TXT", SE CAMBIA LA DIRECCION
# DEPENDIENTE DEL TECNICO QUE VALIDE LAS ESTRUCTURAS

librerias <- c("dplyr", "rpivotTable", "tidyverse", "DT","readxl","rmdformats","readr","stringr")
instalados <- installed.packages()
librerias<- librerias[which(!librerias %in% instalados[,1]) ]
if(length(librerias)>0){
  install.packages(librerias)
}
rm(list = c("librerias","instalados"))


# LIBRERIAS PARA CARGAR

library(dplyr)
library(rpivotTable)
library(tidyverse)
library(DT)
library(readxl)
library(rmdformats)
library(readr)
library(stringr)




################################################################################
################################################################################

################################################################################
# CAMBIAR MANUALMENTE
# DEBERA DE CAMBIAR DE MANERA MANUAL LAS FECHAS DE INICIO Y FIN DE LA INFORMACION
# LA INFORMACION VA DE JUEVES A MIERCOLES


fec1 <- as.Date("16/11/2023", format = "%d/%m/%Y") #cambiar de manera manual
fec2 <- as.Date("22/11/2023", format = "%d/%m/%Y") #cambiar de manera manual

TINS <-  "TINS520416112023.txt" #cambiar de manera manual
df_dir <- paste0("D:/Bases de Datos/bases/Script Tasas de Interes/",TINS)                #cambiar de manera manual
param <-  "D:/Bases de Datos/bases/Script Tasas de Interes/Parametros.xlsx"              #cambiar de manera manual

cod_entidad <- substr(TINS,5,8)

parametro1 <- c(178.01 * 460)   #cambiar de manera manual
parametro2 <- c(229.00 * 460)   #cambiar de manera manual
parametro3 <- c(178.00 * 460)   #cambiar de manera manual

################################################################################
################################################################################

# SE DA NOMBRE A LAS COLUMNAS DE INFORMACION

nombres <- c("Segmento","CUC","Operacion","Concesion","Moneda","Plazo","Vencimiento",
             "TIR","TEA","numero","Pagos","Reajuste","Monto","Ingresos","Estado",
             "Estudios","CIIU","Destino","Hipotecario","Consumo","Garantia","Comercial",
             "Cuadrado","Instrumentacion", "Cedula","Tipo_Id", "Clase", "Tasa_Reaj" ,
             "Cupo", "Parroquia", "Oficina","Geografico", "Deposito", "Sexo","Nacimiento",
             "V_aso", "V_adic")

# SE IMPORTA LOS DATOS TXT
df <- read_delim(df_dir, 
                 delim = "\t", escape_double = FALSE, 
                 locale = locale(),
                 trim_ws = TRUE,
                 col_names = nombres,
                 skip = 1,
                 na = c(""),
                 skip_empty_rows = TRUE,
                 col_types = cols(Segmento = col_number(),
                                  CUC = col_number(),
                                  Operacion = col_character(),
                                  Moneda = col_number(),
                                  Plazo = col_number(),
                                  TIR = col_number(),
                                  TEA = col_number(),
                                  numero = col_number(),
                                  Pagos = col_number(),
                                  Reajuste = col_number(),
                                  Monto = col_number(),
                                  Ingresos = col_number(),
                                  Estado = col_character(),
                                  Estudios = col_character(),
                                  CIIU = col_character(),
                                  Destino = col_character(),
                                  Hipotecario = col_number(),
                                  Consumo = col_character(),
                                  Garantia = col_character(),
                                  Comercial = col_number(),
                                  Cuadrado = col_number(),
                                  Instrumentacion = col_character(),
                                  Cedula = col_character(),
                                  Tipo_Id = col_character(),
                                  Clase = col_character(),
                                  Tasa_Reaj = col_character(),
                                  Cupo = col_number(),
                                  Parroquia = col_character(),
                                  Oficina = col_number(),
                                  Geografico = col_number(),
                                  Deposito = col_number(),
                                  Sexo = col_character(),
                                  V_aso = col_number(),
                                  V_adic = col_number()),
                 show_col_types = FALSE)

df <- df %>%
  mutate (Fila = row_number())

df$Vencimiento [df$Vencimiento == "0"] <- '01/01/1901' 
df$Concesion [df$Concesion == "0"] <- '01/01/1901' 
df$Nacimiento [df$Nacimiento == "0"] <- '01/01/1901' 

# SE DA FORMATO A LAS VARIABLES FECHAS

df <- transform(df, Concesion = as.Date(Concesion,format = "%d/%m/%Y")) 
df <- transform(df, Vencimiento = as.Date(Vencimiento,format = "%d/%m/%Y")) 
df <- transform(df, Nacimiento = as.Date(Nacimiento,format = "%d/%m/%Y")) 

############################################
############################################


# F E C H A S  D E L  R E P O R T E

df <- df %>%
  mutate (v_fechas = ifelse (df$Concesion < fec1 | df$Concesion > fec2, 1, 0))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fechas == 1, c("Existe registros en fechas distintas a la semana de reporte"),0))


df <- df %>%
  mutate (C18_fil = case_when (
    df$v_fechas == 1 ~ 1,
    TRUE ~ 0))

C18_fil <- df %>% 
  filter(C18_fil == 1)

C18_fil <- C18_fil %>% 
  select(Fila, Cedula, Concesion, Mensaje)

# Tabla de errores

if (nrow(C18_fil) > 0) {
  datatable(C18_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


knitr::opts_chunk$set(
	echo = TRUE,
	message = FALSE,
	warning = FALSE,
	comment = NA,
	prompt = FALSE,
	tidy = TRUE,
	encoding = "native.enc")

Sys.setlocale("LC_ALL","ES_ES.UTF-8")

```

## Tabla 1: Segmentos de Credito

Resumen de Errores:

```{r, echo=FALSE}

######################################################
# T A B L A  1: S E G M E N T O S  D E  C R E D I T O 
######################################################

library(readxl)
Tabla1 <- read_excel(param, 
                     sheet = "Tabla1")

df <- df %>% left_join (Tabla1, by = c(Segmento = "Codigo"))

df <- df %>% 
  mutate(vacseg = ifelse (is.na (cod_segmento) , 99, df$cod_segmento)) 

# condiciones

df <- df %>%
  mutate (v_segm = ifelse (df$vacseg == 99, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_segm == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 1 del instructivo."),0))


df <- df %>%
  mutate (C1_fil = case_when (
    df$v_segm == 1 ~ 1,
    TRUE ~ 0))

C1_fil <- df %>% 
  filter(C1_fil == 1)

C1_fil <- C1_fil %>% 
  select(Fila, Cedula, Segmento, Mensaje)

if (nrow(C1_fil) > 0) {
  datatable(C1_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Tabla 2: Cuentas Contables

Resumen de Errores: 

```{r, echo = FALSE}

#############################################
# T A B L A  2: C U E N T A  C O N T A B L E
#############################################

library(readxl)
Tabla2 <- read_excel(param, 
                     sheet = "Tabla2")

df <- df %>% left_join (Tabla2, by = c(CUC = "Cuenta_contable"))


df <- df %>%  
  mutate(vacCUC = ifelse (is.na (cod_ccontable) , 99, df$cod_ccontable)) 


df <- df %>%
  mutate (v_CUC = ifelse (df$vacCUC == 99, 1, 0))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_CUC == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 2 del instructivo."),0))

df <- df %>%
  mutate (C2_fil = case_when (
    df$v_CUC == 1 ~ 1,
    TRUE ~ 0))

C2_fil <- df %>% 
  filter(C2_fil == 1)

C2_fil <- C2_fil %>% 
  select(Fila, Cedula, CUC, Mensaje)


if (nrow(C2_fil) > 0) {
  datatable(C2_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Tabla 3: Codigo Operacion

Resumen de errores: 

```{r, echo = FALSE}

library(readxl)
Tabla3 <- read_excel(param, 
                     sheet = "Tabla3")

df <- df %>% left_join (Tabla3, by = c(Operacion = "Tipo Operacion"))


df <- df %>%  
  mutate(vacOP = ifelse (is.na (cod_operacion) , 99, df$cod_operacion)) 


df <- df %>%
  mutate (v_OP = ifelse (df$vacOP == 99, 1, 0))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_OP == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 3 del instructivo."),0))

df <- df %>%
  mutate (C3_fil = case_when (
    df$v_OP == 1 ~ 1,
    TRUE ~ 0))

C3_fil <- df %>% 
  filter(C3_fil == 1)

C3_fil <- C3_fil %>% 
  select(Fila, Cedula, Operacion, Mensaje)


if (nrow(C3_fil) > 0) {
  datatable(C3_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Tabla 4: Codigo Moneda

Resumen de errores: 

```{r, echo = FALSE}

#############################################
# T A B L A  4: C O D I G O  M O N E D A
#############################################

library(readxl)
Tabla4 <- read_excel(param, 
                     sheet = "Tabla4")

df <- df %>% left_join (Tabla4, by = c(Moneda = "Tipo Moneda"))


df <- df %>%  
  mutate(vaMO = ifelse (is.na (cod_moneda) , 99, df$cod_moneda)) 


df <- df %>%
  mutate (v_MO = ifelse (df$vaMO == 99, 1, 0))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_MO == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 4 del instructivo."),0))

df <- df %>%
  mutate (C4_fil = case_when (
    df$v_MO == 1 ~ 1,
    TRUE ~ 0))

C4_fil <- df %>% 
  filter(C4_fil == 1)

C4_fil <- C4_fil %>% 
  select(Fila, Cedula, Moneda, Mensaje)


if (nrow(C4_fil) > 0) {
  datatable(C4_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Tabla 5: Ramas Actividades Economicas

Resumen de errores: 

```{r, echo = FALSE}

###########################################################
# T A B L A  5: A C T I V I D A D E S  E C O N O M I C A S 
###########################################################


library(readxl)
Tabla5 <- read_excel(param, 
                     sheet = "Tabla5")

df <- df %>% left_join (Tabla5, by = c(CIIU = "Nivel 6"))

df <- df %>% mutate (largo = nchar(CIIU))

df <- df %>%  
  mutate(vaCIIU = ifelse (is.na (cod_ciiu) , 2000, df$cod_ciiu)) 

df <- df %>%
  mutate (v_CIIU = ifelse (df$vaCIIU == 2000, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_CIIU == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 5 del instructivo."),0))


df <- df %>%
  mutate (C5_fil = case_when (
    df$v_CIIU == 1 ~ 1,
    TRUE ~ 0))

C5_fil <- df %>% 
  filter(C5_fil == 1)

C5_fil <- C5_fil %>% 
  select(Fila, Cedula, CIIU, Mensaje)


if (nrow(C5_fil) > 0) {
  datatable(C5_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Tabla 36-6: Ramas Destino del Credito

Resumen de errores: 

```{r, echo = FALSE}

#######################################################
# T A B L A  36-6: D E S T I N O  D E L  C R E D I T O
#######################################################


library(readxl)
Tabla366 <- read_excel(param, 
                     sheet = "Tabla366")

df <- df %>% left_join (Tabla366, by = c(Destino = "DestinoF"))


df <- df %>%  
  mutate(vadf = ifelse (is.na (cd_destino) , 20, df$cd_destino)) 

df <- df %>%
  mutate (v_df = ifelse (df$vadf == 20, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_df == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 36-6 del instructivo."),0))


df <- df %>%
  mutate (C6_fil = case_when (
    df$v_df == 1 ~ 1,
     TRUE ~ 0))

C6_fil <- df %>% 
  filter(C6_fil == 1)

C6_fil <- C6_fil %>% 
  select(Fila, Cedula, Destino, Mensaje)


if (nrow(C6_fil) > 0) {
  datatable(C6_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Tabla 7: Instrumentacion del Credito

Resumen de errores: 

```{r, echo = FALSE}

#####################################################################
# T A B L A  7: I N S T R U M E N T A C I O N   D E L  C R E D I T O
#####################################################################


library(readxl)
Tabla7 <- read_excel(param, 
                       sheet = "Tabla7")

df <- df %>% left_join (Tabla7, by = c(Instrumentacion = "InstrumCre"))


df <- df %>%  
  mutate(vainsc = ifelse (is.na (cod_instrumentada) , 20, df$cod_instrumentada)) 

df <- df %>%
  mutate (v_insc = ifelse (df$vainsc == 20, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_insc == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 7 del instructivo."),0))


df <- df %>%
  mutate (C7_fil = case_when (
    df$v_insc == 1 ~ 1,
    TRUE ~ 0))

C7_fil <- df %>% 
  filter(C7_fil == 1)

C7_fil <- C7_fil %>% 
  select(Fila, Cedula, Instrumentacion, Mensaje)


if (nrow(C7_fil) > 0) {
  datatable(C7_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Tabla 8: Destino Hipotecario

Resumen de errores: 

```{r, echo = FALSE}

#####################################################
# T A B L A  8: D E S T I N O  H I P O T E C A R I O
#####################################################


library(readxl)
Tabla8 <- read_excel(param, 
                     sheet = "Tabla8")

df <- df %>% left_join (Tabla8, by = c(Hipotecario = "Hipoteca"))


df <- df %>%  
  mutate(vahipo = ifelse (is.na (cod_hipo) , 20, df$cod_hipo)) 

df <- df %>%
  mutate (v_hipo = ifelse (df$vahipo == 20, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_hipo == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 8 del instructivo."),0))


df <- df %>%
  mutate (C8_fil = case_when (
    df$v_insc == 1 ~ 1,
    TRUE ~ 0))

C8_fil <- df %>% 
  filter(C8_fil == 1)

C8_fil <- C8_fil %>% 
  select(Fila, Cedula, Hipotecario, Mensaje)


if (nrow(C8_fil) > 0) {
  datatable(C8_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Tabla 9: Destino Credito Consumo

Resumen de errores: 

```{r, echo = FALSE}

#############################################
# T A B L A  9: D E S T I N O  C O N S U M O
#############################################


library(readxl)
Tabla9 <- read_excel(param, 
                     sheet = "Tabla9")

df <- df %>% left_join (Tabla9, by = c(Consumo = "ConCr"))


df <- df %>%  #Valores vacios en Tipo de Cliente
  mutate(vaconcr = ifelse (is.na (cod_consumo) , 50, df$cod_consumo)) 

df <- df %>%
  mutate (v_concr = ifelse (df$vaconcr == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_concr == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 9 del instructivo."),0))


df <- df %>%
  mutate (C9_fil = case_when (
    df$v_concr == 1 ~ 1,
    TRUE ~ 0))

C9_fil <- df %>% 
  filter(C9_fil == 1)

C9_fil <- C9_fil %>% 
  select(Fila, Cedula, Consumo, Mensaje)


if (nrow(C9_fil) > 0) {
  datatable(C9_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Tabla 10: Tipo de Garantia

Resumen de errores: 

```{r, echo = FALSE}

###############################################
# T A B L A  10: T I P O  D E  G A R A N T I A 
###############################################


library(readxl)
Tabla10 <- read_excel(param, 
                     sheet = "Tabla10")

df <- df %>% left_join (Tabla10, by = c(Garantia = "Garantia"))


df <- df %>%  #Valores vacios en Tipo de Cliente
  mutate(vagara = ifelse (is.na (cod_garantia) , 50, df$cod_garantia)) 

df <- df %>%
  mutate (v_garan = ifelse (df$vagara == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_garan == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 10 del instructivo."),0))


df <- df %>%
  mutate (C10_fil = case_when (
    df$v_garan == 1 ~ 1,
    TRUE ~ 0))

C10_fil <- df %>% 
  filter(C10_fil == 1)

C10_fil <- C10_fil %>% 
  select(Fila, Cedula, Garantia, Mensaje)


if (nrow(C10_fil) > 0) {
  datatable(C10_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Tabla 11: Tipo de Identificacion

Resumen de errores: 

```{r, echo = FALSE}

###########################################################
# T A B L A  11: T I P O  D E  I D E N T I F I C A C I O N 
###########################################################

library(readxl)
Tabla11 <- read_excel(param, 
                      sheet = "Tabla11")

df <- df %>% left_join (Tabla11, by = c(Tipo_Id = "Cliente"))


df <- df %>%  
  mutate(vatid = ifelse (is.na (cod_cliente) , 50, df$cod_cliente)) 

df <- df %>%
  mutate (v_tid = ifelse (df$vatid == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tid == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 11 del instructivo."),0))


df <- df %>%
  mutate (C11_fil = case_when (
    df$v_tid == 1 ~ 1,
    TRUE ~ 0))

C11_fil <- df %>% 
  filter(C11_fil == 1)

C11_fil <- C11_fil %>% 
  select(Fila, Cedula, Tipo_Id, Mensaje)


if (nrow(C11_fil) > 0) {
  datatable(C11_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Tabla 12: Clase de Cliente

Resumen de errores: 

```{r, echo = FALSE}

###############################################
# T A B L A  12: C L A S E  D E  C L I E N T E 
###############################################

library(readxl)
Tabla12 <- read_excel(param, 
                      sheet = "Tabla12")

df <- df %>% left_join (Tabla12, by = c(Clase = "Clase"))


df <- df %>%  
  mutate(vaclc = ifelse (is.na (cod_clase) , 50, df$cod_clase)) 

df <- df %>%
  mutate (v_clc = ifelse (df$vaclc == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_clc == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 12 del instructivo."),0))


df <- df %>%
  mutate (C12_fil = case_when (
    df$v_clc == 1 ~ 1,
    TRUE ~ 0))

C12_fil <- df %>% 
  filter(C12_fil == 1)

C12_fil <- C12_fil %>% 
  select(Fila, Cedula, Clase, Mensaje)


if (nrow(C12_fil) > 0) {
  datatable(C12_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Tabla 13: Tasa de Interes Referencial

Resumen de errores: 

```{r, echo = FALSE}

####################################################################
# T A B L A  13: T A S A  D E  I N T E R E S  R E F E R E N C I A L 
####################################################################

library(readxl)
Tabla13 <- read_excel(param, 
                      sheet = "Tabla13")

df <- df %>% left_join (Tabla13, by = c(Tasa_Reaj = "Referencia"))


df <- df %>%  #Valores vacios en Tipo de Cliente
  mutate(vataj = ifelse (is.na (cod_referencial) , 50, df$cod_referencial)) 

df <- df %>%
  mutate (v_taj = ifelse (df$vataj == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_taj == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 13 del instructivo."),0))


df <- df %>%
  mutate (C13_fil = case_when (
    df$v_taj == 1 ~ 1,
    TRUE ~ 0))

C13_fil <- df %>% 
  filter(C13_fil == 1)

C13_fil <- C13_fil %>% 
  select(Fila, Cedula, Tasa_Reaj, Mensaje)


if (nrow(C13_fil) > 0) {
  datatable(C13_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Tabla 14: Estado de la Operacion

Resumen de errores: 

```{r, echo = FALSE}

##########################################################
# T A B L A  14: E S T A D O  D E  L A  O P E R A C I O N
##########################################################

library(readxl)
Tabla14 <- read_excel(param, 
                      sheet = "Tabla14")

df <- df %>% left_join (Tabla14, by = c(Estado = "Estado"))


df <- df %>%  
  mutate(vaesta = ifelse (is.na (cod_estado) , 50, df$cod_estado)) 

df <- df %>%
  mutate (v_esta = ifelse (df$vaesta == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_esta == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 14 del instructivo."),0))


df <- df %>%
  mutate (C14_fil = case_when (
    df$v_esta == 1 ~ 1,
    TRUE ~ 0))

C14_fil <- df %>% 
  filter(C14_fil == 1)

C14_fil <- C14_fil %>% 
  select(Fila, Cedula, Estado, Mensaje)


if (nrow(C14_fil) > 0) {
  datatable(C14_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}
```


## Tabla 15: Nivel de Estudios

Resumen de errores: 

```{r, echo = FALSE}

##########################################################
# T A B L A  15: E S T A D O  D E  L A  O P E R A C I O N
##########################################################

library(readxl)
Tabla15 <- read_excel(param, 
                      sheet = "Tabla15")

df <- df %>% left_join (Tabla15, by = c(Estudios = "Estudios"))


df <- df %>%  
  mutate(vaestu = ifelse (is.na (cod_estudio) , 50, df$cod_estudio)) 

df <- df %>%
  mutate (v_estu = ifelse (df$vaestu == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_estu == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 15 del instructivo."),0))


df <- df %>%
  mutate (C15_fil = case_when (
    df$v_estu == 1 ~ 1,
    TRUE ~ 0))

C15_fil <- df %>% 
  filter(C15_fil == 1)

C15_fil <- C15_fil %>% 
  select(Fila, Cedula, Estudios, Mensaje)


if (nrow(C15_fil) > 0) {
  datatable(C15_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}
```


## Tabla 16: Sexo del Cliente

Resumen de errores: 

```{r, echo = FALSE}

###############################################
# T A B L A  16: S E X O  D E L  C L I E N T E
###############################################

library(readxl)
Tabla16 <- read_excel(param, 
                      sheet = "Tabla16")

df <- df %>% left_join (Tabla16, by = c(Sexo = "Sexo"))


df <- df %>%  
  mutate(vasex = ifelse (is.na (cod_sexo) , 50, df$cod_sexo)) 

df <- df %>%
  mutate (v_sex = ifelse (df$vasex == 50, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_sex == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 16 del instructivo."),0))


df <- df %>%
  mutate (C16_fil = case_when (
    df$v_sex == 1 ~ 1,
    TRUE ~ 0))

C16_fil <- df %>% 
  filter(C16_fil == 1)

C16_fil <- C16_fil %>% 
  select(Fila, Cedula, Sexo, Mensaje)


if (nrow(C16_fil) > 0) {
  datatable(C16_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Tabla 17: Codigo Parroquia

Resumen de errores: 

```{r, echo = FALSE}

################################################
# T A B L A  17: C O D I G O  P A R R O Q U I A
################################################

library(readxl)
Tabla17 <- read_excel(param, 
                      sheet = "Tabla17")

df <- df %>% left_join (Tabla17, by = c(Parroquia = "DPA_PARROQ"))


df <- df %>%  
  mutate(vadpa = ifelse (is.na (Cod_parrq) , 999999, df$Cod_parrq)) 

df <- df %>%
  mutate (v_dpa = ifelse (df$vadpa == 999999, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_dpa == 1, c("Existen celdas vacias o codigos no establecidos en la Tabla 17 del instructivo."),0))


df <- df %>%
  mutate (C17_fil = case_when (
    df$v_dpa == 1 ~ 1,
    TRUE ~ 0))

C17_fil <- df %>% 
  filter(C17_fil == 1)

C17_fil <- C17_fil %>% 
  select(Fila, Cedula, Parroquia,  Mensaje)


if (nrow(C17_fil) > 0) {
  datatable(C17_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                          #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

# SEGUNDA VALIDACION: VERIFICACION DE INFORMACION - RELACION ENTRE COLUMNAS DE INFORMACION

**En esta segunda parte se realiza una validacion de consistencia de la informacion conforme a lo especificado por el instructivo de tasas de interes, se considera como "ERROR" si hay una inconsistencia de informacion entre variables**


## Verificacion de celdas vacias

Resumen de Errores:

```{r, echo = FALSE}

#####################################################
#####################################################
# S E G U N D A  P A R T E - C O N S I S T E N C I A
#####################################################
#####################################################


############################################
# V E R I F I C A  C E L D A S  V A C I A S 
############################################

df <- df %>% 
  mutate(vacios = ifelse (is.na (TIR), -1, 0)) 


df <- df %>% 
  mutate(vacios = ifelse (is.na (TEA), -2, df$vacios))  


df <- df %>% 
  mutate(vacios = ifelse (is.na (numero), -3, df$vacios))  

df <- df %>% 
  mutate(vacios = ifelse (is.na (Monto), -4, df$vacios))  


df <- df %>% 
  mutate(vacios = ifelse (is.na (Concesion), -5, df$vacios)) 


df <- df %>% 
  mutate(vacios = ifelse (is.na (Plazo), -6, df$vacios)) 


df <- df %>% 
  mutate(vacios = ifelse (is.na (Pagos), -7, df$vacios)) 


df <- df %>% 
  mutate(vacios = ifelse (is.na (Vencimiento), -8, df$vacios)) 


df <- df %>% 
  mutate(vacios = ifelse (is.na (Reajuste), -9, df$vacios)) 

df <- df %>% 
  mutate(vacios = ifelse (is.na (Ingresos), -10, df$vacios)) 

df <- df %>% 
  mutate(vacios = ifelse (is.na (Comercial), -11, df$vacios)) 

df <- df %>% 
  mutate(vacios = ifelse (is.na (Cuadrado), -12, df$vacios)) 

df <- df %>% 
  mutate(vacios = ifelse (is.na (Deposito), -13, df$vacios)) 

df <- df %>% 
  mutate(vacios = ifelse (is.na (V_aso), -14, df$vacios)) 

df <- df %>% 
  mutate(vacios = ifelse (is.na (V_adic), -15, df$vacios)) 


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -1, c("Existe registros vacios en la columna TIR."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -2, c("Existe registros vacios en la columna TEA."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -3, c("Existe registros vacios en la columna Numero de Operaciones"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -4, c("Existe registros vacios en la columna Valor principal"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -5, c("Existe registros vacios en la columna Fecha de Operacion"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -6, c("Existe registros vacios en la columna Plazo."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -7, c("Existe registros vacios en la columna Frecuencia de Pagos."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -8, c("Existe registros vacios en la columna Fecha de Vencimiento."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -9, c("Existe registros vacios en la columna Reajuste."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -10, c("Existe registros vacios en la columna Ingresos"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -11, c("Existe registros vacios en la columna valor comercial"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -12, c("Existe registros vacios en la columna valor metro cuadrado"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -13, c("Existe registros vacios en la columna valor Depostio inicial"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -14, c("Existe registros vacios en la columna valor asociado"),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$vacios == -15, c("Existe registros vacios en la columna valor adicional"),df$Mensaje))



df <- df %>%
  mutate (C36_fil = case_when (
    df$vacios == -1 ~ 1,
    df$vacios == -2 ~ 1,
    df$vacios == -3 ~ 1,
    df$vacios == -4 ~ 1,
    df$vacios == -5 ~ 1,
    df$vacios == -6 ~ 1,
    df$vacios == -7 ~ 1,
    df$vacios == -8 ~ 1,
    df$vacios == -9 ~ 1,
    df$vacios == -10 ~ 1,
    df$vacios == -11 ~ 1,
    df$vacios == -12 ~ 1,
    df$vacios == -13 ~ 1,
    df$vacios == -14 ~ 1,
    df$vacios == -15 ~ 1,
        TRUE ~ 0))

C36_fil <- df %>% 
  filter(C36_fil == 1)

C36_fil <- C36_fil %>% 
  select(Fila, Cedula, Segmento,  Mensaje)


if (nrow(C36_fil) > 0) {
  datatable(C36_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion Tasa Nominal

Resumen de Errores:

```{r, echo = FALSE}

############################
# VALIDACION 1: TASA NOMINAL
############################

df <- df %>%
  mutate (filtro = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205 , 1, 0))

df <- df %>%
  mutate (validacion1 = ifelse (df$TIR <= 0 & df$filtro != 1, 1, 0))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$validacion1 == 1, c("Existe registros con valor de Tasa Nominal negativa o igual a Cero."),0))


df <- df %>%
  mutate (C24_fil = case_when (
    df$validacion1 == 1 ~ 1,
    TRUE ~ 0))

C24_fil <- df %>% 
  filter(C24_fil == 1)

C24_fil <- C24_fil %>% 
  select(Fila, Cedula, Segmento, TIR, Mensaje)


if (nrow(C24_fil) > 0) {
  datatable(C24_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion Tasa Efectiva

Resumen de Errores:

```{r, echo = FALSE}

#############################
# VALIDACION 2: TASA EFECTIVA
#############################

df <- df %>%
  mutate (filtro = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205 , 1, 0))


df <- df %>%
  mutate ( validacion2 = ifelse (df$TEA <= 0 & df$filtro != 1, 1, 0))


df <- df %>%
  mutate(Mensaje = ifelse(df$validacion2 == 1, c("Existe registros con valor de Tasa Efectiva negativa o igual a Cero."),0))

df <- df %>%
  mutate (C25_fil = case_when (
    df$validacion2 == 1 ~ 1,
    TRUE ~ 0))

C25_fil <- df %>% 
  filter(C25_fil == 1)

C25_fil <- C25_fil %>% 
  select(Fila, Cedula, Segmento, TEA, Mensaje)


if (nrow(C25_fil) > 0) {
  datatable(C25_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion segmentos de credito - cuenta contable y codigo de operaciones

Resumen de Errores:

```{r, echo = FALSE}

################################################################
# VALIDACION 3: TRES PRIMERAS COLUMNAS DE INFORMACION 
#S E G M E N T O S  -  C U E N T A S  -  O P E R A C I O N E S 
################################################################

df <- df %>%
  mutate(idd_1 = paste(df$cod_segmento, df$CUC, df$Operacion, sep = "_"))


df <- df %>% mutate(idd_1 = as.character(df$idd_1))


library(readxl)
Tabla19 <- read_excel(param, 
                      sheet = "Tabla19")

df <- df %>% left_join (Tabla19, by = c(idd_1 = "cod_idd1"))


df <- df %>%  
  mutate(va_3 = ifelse (is.na (cod_idd2) , 2000, df$cod_idd2)) 

df <- df %>%
  mutate (v_tres = ifelse (df$Segmento != 0 & df$va_3 == 2000, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tres == 1, c("Existe segmentos, cuentas contables y operaciones no permitidas.Verificar las tres primeras columnas de la estructura"),0))


df <- df %>%
  mutate (C19_fil = case_when (
    df$v_tres == 1 ~ 1,
    TRUE ~ 0))

C19_fil <- df %>% 
  filter(C19_fil == 1)

C19_fil <- C19_fil %>% 
  select(Fila, Cedula, Segmento, CUC, Operacion, Mensaje)


if (nrow(C19_fil) > 0) {
  datatable(C19_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion valor principal y numero de operaciones

Resumen de Errores:

```{r, echo = FALSE}

############################################################################
#VALIDACION 4: 
#V A L O R  P R I N C I P A L  Y  N U M E R O   D E   O P E R A C I O N E S 
############################################################################


df <- df %>%
  mutate (v_monto = ifelse (df$numero <= 0 | df$Monto <= 0 , 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_monto == 1, c("Existe registros donde el monto del credito o la cantidad de operaciones es menor o igual a 0."),0))


df <- df %>%
  mutate (C25_fil = case_when (
    df$v_monto == 1 ~ 1,
    df$v_monto == 2 ~ 1,
    TRUE ~ 0))

C25_fil <- df %>% 
  filter(C25_fil == 1)

C25_fil <- C25_fil %>% 
  select(Fila, Cedula, Segmento, Monto, numero, Mensaje)


if (nrow(C25_fil) > 0) {
  datatable(C25_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion fechas de operaciones consolidadas

Resumen de Errores:

```{r, echo = FALSE}

###########################################################################
# VALIDACION 5: F E C H A S  O P E R A C I O N E S  C O N S O L I D A D A S 
###########################################################################

df <- df %>%
  mutate (v_conso = ifelse (df$Segmento == 0 & df$CUC != 2103 & df$Concesion != fec1 , 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_conso == 1, c("Existe registros con informacion consolidada donde la fecha de operacion es diferente a la fecha de inicio de semana."),0))


df <- df %>%
  mutate (C26_fil = case_when (
    df$v_conso == 1 ~ 1,
    TRUE ~ 0))

C26_fil <- df %>% 
  filter(C26_fil == 1)

C26_fil <- C26_fil %>% 
  select(Fila, Cedula, CUC, Concesion, Mensaje)


if (nrow(C26_fil) > 0) {
  datatable(C26_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion de plazo para cuentas 210105, 210135, 210145 sean igual a cero

Resumen de Errores:

```{r, echo = FALSE}

#########################################################################################################
# VALIDACION 6: p l a z o  p a r a  c u e n t a s  210105, 210135, 210145 s e a n  i g u a l  a  c e r o 
#########################################################################################################


df <- df %>%
  mutate (v_pla = ifelse (df$Plazo != 0 & df$Segmento == 0 & df$CUC != 2103 & df$CUC != 210205 , 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_pla == 1, c("Existe registros con plazo distinto a 0 cuando debe ser cero."),0))


df <- df %>%
  mutate (C27_fil = case_when (
    df$v_pla == 1 ~ 1,
    TRUE ~ 0))

C27_fil <- df %>% 
  filter(C27_fil == 1)

C27_fil <- C27_fil %>% 
  select(Fila, Cedula, Segmento, Plazo, CUC,  Mensaje)


if (nrow(C27_fil) > 0) {
  datatable(C27_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion de plazo para cuentas 2103 no sea menor a 30 dias

Resumen de Errores:

```{r, echo = FALSE}

#############################################################################################
# VALIDACION 7: p l a z o  p a r a  c u e n t a s  2103 n o  s e a  m e n o r  a  30  d i a s
#############################################################################################

df <- df %>%
  mutate (v_2103 = ifelse (df$Plazo < 30 & df$CUC == 2103, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_2103 == 1, c("Existe registros con plazo menor a 30 cuando debe ser mayor o igual a 30."),0))


df <- df %>%
  mutate (C28_fil = case_when (
    df$v_pla == 1 ~ 1,
    TRUE ~ 0))

C28_fil <- df %>% 
  filter(C28_fil == 1)

C28_fil <- C28_fil %>% 
  select(Fila, Cedula, Segmento, CUC, Plazo, Mensaje)


if (nrow(C28_fil) > 0) {
  datatable(C28_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion instrumentacion codigo "SS" de uso unico para el BIESS

Resumen de Errores:

```{r, echo = FALSE}

######################################################################
# VALIDACION 8:
#I N S T R U M E N T A C I O N  "SS"   U N I C O  P A R A  B I E S S
######################################################################
# VALIDACION 1 DEL BIESS
######################################################################

df <- df %>%
  mutate (biess1 = ifelse (cod_entidad == 3927 & df$cartera == 4 & df$Instrumentacion == 'SS' & df$numero <= 1, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$biess1 == 1, c("Existe registros para segmentos 7, 8 y 9 con instrumentacion (SS) donde el Numero de Operaciones debe ser mayor a 1."),0))


df <- df %>%
  mutate (C21_fil = case_when (
    df$biess1 == 1 ~ 1,
    TRUE ~ 0))

C21_fil <- df %>% 
  filter(C21_fil == 1)

C21_fil <- C21_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, numero, Mensaje)


if (nrow(C21_fil) > 0) {
  datatable(C21_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion instrumentacion codigo "SS" de uso unico para el BIESS numero de operaciones

Resumen de Errores:

```{r, echo = FALSE}

######################################################################
# VALIDACION 2 DEL BIESS
######################################################################

df <- df %>%
  mutate (biess2 = ifelse (cod_entidad == 3927 & df$cartera == 4 & df$Instrumentacion != 'SS' & df$numero != 1, 2, 0))

# Mensaje de error

df <- df %>%
  mutate(Mensaje = ifelse(df$biess2 == 2, c("Existe registros para segmentos 7, 8 y 9 con instrumentacion distinta a (SS) donde el Numero de Operaciones debe ser igual a 1."),0))

df <- df %>%
  mutate (C21_1_fil = case_when (
#    df$v_SS == 1 ~ 1,
    df$biess2 == 2 ~ 1,
#    df$v_SS == 3 ~ 1,
    TRUE ~ 0))

C21_1_fil <- df %>% 
  filter(C21_1_fil == 1)

C21_1_fil <- C21_1_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, numero, Mensaje)


if (nrow(C21_1_fil) > 0) {
  datatable(C21_1_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion instrumentacion codigo "SS" de uso unico para el BIESS 

Resumen de Errores:

```{r, echo = FALSE}

######################################################################
# VALIDACION 3 DEL BIESS
######################################################################

df <- df %>%
  mutate (biess3 = ifelse (cod_entidad != 3927 & df$Instrumentacion == 'SS', 3, 0))


#Mensaje de error

df <- df %>%
  mutate(Mensaje = ifelse(df$biess3 == 3, c("Existe registros con instrumentacion (SS) de uso exclusivo para el BIESS."),0))


df <- df %>%
  mutate (C21_2_fil = case_when (
  #  df$v_SS == 1 ~ 1,
  #  df$v_SS == 2 ~ 1,
    df$biess3 == 3 ~ 1,
    TRUE ~ 0))

C21_2_fil <- df %>% 
  filter(C21_fil == 1)

C21_2_fil <- C21_2_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, numero, Mensaje)


if (nrow(C21_2_fil) > 0) {
  datatable(C21_2_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion creditos de consumo

Resumen de Errores:

```{r, echo = FALSE}

##################################################
# VALIDACION 9: C O N S U M O  P A R A  B I E S S
##################################################

df <- df %>%
  mutate (filtro = ifelse (df$Operacion == "PR" | df$Operacion == "QQ", 1, 0))



df <- df %>%
  mutate (v_qq = ifelse (cod_entidad != 3927 & df$cod_consumo >= 11 & df$cod_consumo <= 17, 1, 0))

df <- df %>%
  mutate (v_qq = ifelse (cod_entidad == 3927 & df$cod_consumo >= 11 & df$cod_consumo <= 17 & df$filtro != 1, 2, df$v_qq))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_qq == 1, c("Existe registros para credito de consumo con destino EC,TR,PA,PT,CI,IN,AM de uso exclusivo del BIESS."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_qq == 2, c("Existe registros para credito de consumo con destino EC,TR,PA,PT,CI,IN,AM y con operacion PR, QQ que no corresponden."),df$Mensaje))


df <- df %>%
  mutate (C22_fil = case_when (
    df$v_qq == 1 ~ 1,
    df$v_qq == 2 ~ 1,
    TRUE ~ 0))

C22_fil <- df %>% 
  filter(C22_fil == 1)

C22_fil <- C22_fil %>% 
  select(Fila, Cedula, Segmento, Operacion, Consumo, Mensaje)


if (nrow(C22_fil) > 0) {
  datatable(C22_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion creditos hipotecarios

Resumen de Errores:

```{r, echo = FALSE}

############################################################
# VALIDACION 10: H I P O T E C A R I O   P A R A  B I E S S
#############################################################

df <- df %>%
  mutate (v_hi = ifelse (cod_entidad != 3927 & df$cod_hipo == 12, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_hi == 1, c("Existe registros para destino hipotecario codigo 12 de uso exclusivo del BIESS."),0))



df <- df %>%
  mutate (C23_fil = case_when (
    df$v_hi == 1 ~ 1,
    TRUE ~ 0))

C23_fil <- df %>% 
  filter(C23_fil == 1)

C23_fil <- C23_fil %>% 
  select(Fila, Cedula, Segmento, Hipotecario, Mensaje)


if (nrow(C23_fil) > 0) {
  datatable(C23_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion creditos distintos al microcredito y cuentas pasiva consolidadas

Resumen de Errores:

```{r, echo = FALSE}

###########################################################################
# VALIDACION 11: 
#O P E R A C I O N E S  P A R A  S E G M E N T O S  D I F E R E N T E S  A
# 10 - 11 - 12 Y 210105 - 210135 - 210145 - 210205 S E A  I G U A L  A  '0'
###########################################################################

df <- df %>%
  mutate(act = case_when(
    df$CUC <= 2000 ~ 1,
      TRUE ~ 0))

df <- df %>%
    mutate(act = ifelse (df$CUC == 2103, 1, df$act)) %>%
    mutate(filtro = ifelse (df$Operacion == 'SC' | df$Operacion == 'SO', 1, 0)) %>% 
    mutate(filtro1 = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205, 1, 0))
  

df <- df %>%
  mutate (v_ope = ifelse (df$Instrumentacion != 'SS' & df$cartera != 5 & df$numero != 1 & df$filtro != 1 & df$filtro1 != 1, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ope == 1, c("Existe registros donde la cantidad de operaciones debe ser igual a 1 pero envia otro dato."),0))



df <- df %>%
  mutate (C29_fil = case_when (
    df$v_ope == 1 ~ 1,
    TRUE ~ 0))

C29_fil <- df %>% 
  filter(C29_fil == 1)

C29_fil <- C29_fil %>% 
  select(Fila, Cedula, Segmento, CUC, numero, Instrumentacion,  Mensaje)


if (nrow(C29_fil) > 0) {
  datatable(C29_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion creditos instrumentados con creditos comunales

Resumen de Errores:

```{r, echo = FALSE}

#################################################################################
# validacion 12:
#O P E R A C I O N E S  I N S T R U M E N T A D A S  D I F E R E N T E S  A "CC"
# S E A N  I G U A L  A  C E R O 
################################################################################


df <- df %>%
    mutate(filtro = ifelse (df$CUC == 2103 & df$numero != 1, 1, 0)) 
  


df <- df %>%
  mutate (v_CC = ifelse (df$cod_segmento != 0 & df$numero != 1 & df$Instrumentacion != 'CC' & df$filtro == 1, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_CC == 1, c("Existe registros con intrumentacion diferente a CC donde envia la cantidad de operaciones con un valor distinto de 1."),0))



df <- df %>%
  mutate (C30_fil = case_when (
    df$v_CC == 1 ~ 1,
    TRUE ~ 0))

C30_fil <- df %>% 
  filter(C30_fil == 1)

C30_fil <- C30_fil %>% 
  select(Fila, Cedula, Segmento, numero, Instrumentacion, Mensaje)


if (nrow(C30_fil) > 0) {
  datatable(C30_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```


## Verificacion creditos instrumentados para creditos VIP - VIS - Inmobiliario

Resumen de Errores:

```{r, echo = FALSE}

####################################################################
# I N S T R U M E N T A C I O N  VIP - VIS - IN  C O N  OD - CH - TP
####################################################################


df <- df %>%  #od_instrumentada == 1 (OD) | df$cod_instrumentada == 7 (CH)| df$cod_instrumentada == 3 (TP)
  mutate(filtro = ifelse (df$Instrumentacion == 'OD' | df$Instrumentacion == 'CH' | df$Instrumentacion == 'TP', 1, 0))


df <- df %>%
  mutate (v_HP = ifelse (cod_entidad != 3927 & df$cartera == 4 & df$filtro != 1, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_HP == 1, c("Existe registros de los segmentos 7, 8 y 9 con instrumentacion no validos."),0))


df <- df %>%
  mutate (C31_fil = case_when (
    df$v_HP == 1 ~ 1,
    TRUE ~ 0))

C31_fil <- df %>% 
  filter(C31_fil == 1)

C31_fil <- C31_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, Mensaje)


if (nrow(C31_fil) > 0) {
  datatable(C31_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```


## Verificacion creditos instrumentados para creditos del microcredito

Resumen de Errores:

```{r, echo = FALSE}

####################################################################
# validacion 14:
#I N S T R U M E N T A C I O N  M I C R O S  C O N  CC
####################################################################


df <- df %>%
  mutate (v_ccm = ifelse (df$cartera == 5 & df$numero <= 1 & df$Instrumentacion == 'CC', 1, 0))

df <- df %>%
  mutate (v_ccm = ifelse (df$cartera != 5 & df$Instrumentacion == 'CC', 2, df$v_ccm))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ccm == 1, c("Existe registros de microcredito instrumentados como Creditos Comunales donde la cantidad de operaciones es igual a 1 y debe reportar el numero de beneficiarios del credito."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ccm == 2, c("Existe registros para segmentos que no son de microcredito y que se encuentran con instrumentacion Creditos Comunales."),df$Mensaje))


df <- df %>%
  mutate (C32_fil = case_when (
    df$v_ccm == 1 ~ 1,
    df$v_ccm == 2 ~ 1,
    TRUE ~ 0))

C32_fil <- df %>% 
  filter(C32_fil == 1)

C32_fil <- C32_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, Mensaje)


if (nrow(C32_fil) > 0) {
  datatable(C32_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion creditos de inversion publica

Resumen de Errores:

```{r, echo = FALSE}

####################################################################
# validacion 15:
#S E G M E N T O  13  I N V E R S I O N  P U B L I C A
####################################################################

df <- df %>%
  mutate (v_ip = ifelse (cod_entidad != 1051 & df$cod_segmento == 13, 1, 0))

df <- df %>%
  mutate (v_ip = ifelse (cod_entidad != 1051 & df$cod_segmento != 13 & df$Instrumentacion == 'IP', 2, df$v_ip))

df <- df %>%
  mutate (v_ip = ifelse (cod_entidad == 1051 & df$cod_segmento == 13 & df$Instrumentacion != 'IP', 3, df$v_ip))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ip == 1, c("Existe registros con segmento igual a 13 que son de uso exclusivo del BEDE."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ip == 2, c("Existe registros con instrumentacion IP que son exclusivos del BEDE."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ip == 3, c("Existe registros con segmentos igual a 13 con instrumentacion diferente a IP."),df$Mensaje))


df <- df %>%
  mutate (C33_fil = case_when (
    df$v_ip == 1 ~ 1,
    df$v_ip == 2 ~ 1,
    TRUE ~ 0))

C33_fil <- df %>% 
  filter(C33_fil == 1)

C33_fil <- C33_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, Mensaje)


if (nrow(C33_fil) > 0) {
  datatable(C33_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion vigencia de pagos

Resumen de Errores:

```{r, echo = FALSE}

#######################################################################
# validacion 16:
#V I G E N C I A  D E  P A G O  N O  S E A  M A Y O R  A L   P L A Z O
#######################################################################

df <- df %>%
  mutate (v_frepa = ifelse (df$Pagos > df$Plazo & df$cod_segmento != 0, 1, 0))

df <- df %>%
  mutate (v_frepa = ifelse (df$Pagos <= 0 & df$cod_segmento != 0, 2, df$v_frepa))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_frepa == 1, c("Existe registros donde la frecuencia de pago es mayor al plazo de las operaciones."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_frepa == 2, c("Existe registros donde la frecuencia de pago es menor o igual a 0 en operaciones activas."),df$Mensaje))


df <- df %>%
  mutate (C34_fil = case_when (
    df$v_frepa == 1 ~ 1,
    df$v_frepa == 2 ~ 1,
    TRUE ~ 0))

C34_fil <- df %>% 
  filter(C34_fil == 1)

C34_fil <- C34_fil %>% 
  select(Fila, Cedula, Segmento, Plazo, Pagos, Mensaje)


if (nrow(C34_fil) > 0) {
  datatable(C34_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion sobregiros y cuentas consolidadas

Resumen de Errores:

```{r, echo = FALSE}

#######################################################################
# validacion 17:
# S O B R E G I R O S  Y  C U E N T A S  C O N S O L I D A D A S 
# P L A Z O  I G U A L  A  U N O 
#######################################################################


df <- df %>%
  mutate (filtro = ifelse (df$CUC == 1401 | df$CUC == 1402 | df$CUC == 1404 | df$CUC == 210205 , 1, 0))


df <- df %>%
  mutate (v_sobre = ifelse (df$cod_segmento == 0 & df$filtro == 1 & df$Pagos != 1 , 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_sobre == 1, c("Existe registros donde la frecuencia de pago debe ser igual a 1."),0))


df <- df %>%
  mutate (C35_fil = case_when (
    df$v_sobre == 1 ~ 1,
    TRUE ~ 0))

C35_fil <- df %>% 
  filter(C35_fil == 1)

C35_fil <- C35_fil %>% 
  select(Fila, Cedula, Segmento, Plazo, Pagos, Mensaje)


if (nrow(C35_fil) > 0) {
  datatable(C35_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion fechas de vencimiento validos

Resumen de Errores:

```{r, echo = FALSE}

#######################################################################
# validacion 18:
#F E C H A  D E  V E N C I M I E N T O  V A L I D O 
#######################################################################


df <- df %>%
  mutate (filtro = ifelse (df$Vencimiento < "01/01/1901" | df$vacios == -8 , 1, 0)) %>%
  mutate (filtro1 = ifelse (df$Instrumentacion == 'TC' | df$Instrumentacion == 'TP' , 1, 0)) 


df <- df %>%
  mutate (v_fecven = ifelse (df$cod_segmento != 0 & df$filtro == 1 & df$filtro1 != 1, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fecven == 1, c("Existe registros donde fecha de vencimiento de la operacion no es valida para operaciones activas."),0))


df <- df %>%
  mutate (C37_fil = case_when (
    df$v_fecven == 1 ~ 1,
    TRUE ~ 0))

C37_fil <- df %>% 
  filter(C37_fil == 1)

C37_fil <- C37_fil %>% 
  select(Fila, Cedula, Segmento, Vencimiento, Pagos, Mensaje)


if (nrow(C37_fil) > 0) {
  datatable(C37_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion fechas de vencimiento para sobregiros y tarjetas de credito

Resumen de Errores:

```{r, echo = FALSE}

#######################################################################
# validacion 19:
# F E C H A  D E  V E N C I M I E N T O   
#######################################################################


df <- df %>%
  mutate (filtro = ifelse (df$Vencimiento < "01/01/1901" | df$vacios == -8 , 1, 0)) %>%
  mutate (filtro1 = ifelse (df$Instrumentacion == 'TC' | df$Instrumentacion == 'TP' , 1, 0)) %>%
  mutate (filtro2 = ifelse (df$Vencimiento != "01/01/1901" | df$vacios == -8  , 1, 0)) %>%
  mutate (filtro3 = ifelse (df$Operacion == 'SC' | df$Operacion == 'SO'  , 1, 0)) %>%
  mutate (filtro4 = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205 , 1, 0)) %>%
  mutate (filtro5 = ifelse (df$Vencimiento < fec1 | df$vacios == -8, 1, 0))

df <- df %>%
  mutate (v_fecven = ifelse (df$cod_segmento != 0 & df$filtro == 1 & df$filtro1 != 1, 1, 0))

df <- df %>%
  mutate (v_fecven = ifelse (df$cod_segmento != 0 & df$filtro1 == 1 & df$filtro2 != 1, 2, df$v_fecven))

df <- df %>%
  mutate (v_fecven = ifelse (df$cod_segmento != 0 & df$filtro3 == 1 & df$filtro2 != 1, 3, df$v_fecven))

df <- df %>%
  mutate (v_fecven = ifelse (df$cod_segmento == 0 & df$cod_segmento == 2103 & df$filtro == 1, 4, df$v_fecven))

df <- df %>%
  mutate (v_fecven = ifelse (df$cod_segmento == 0 & df$filtro4 == 1 & df$filtro5 == 1, 5, df$v_fecven))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fecven == 1, c("Existe registros donde fecha de vencimiento de la operacion no es valida para operaciones activas."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fecven == 2, c("Existe registros para operaciones activas instrumentadas con TP y TC donde fecha de vencimiento de la operacion debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fecven == 3, c("Existe registros para operaciones activas con codigo de operacion SC y SO donde fecha de vencimiento de la operacion debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fecven == 4, c("Existe registros donde fecha de vencimiento de la operacion no es valida para la cuenta 2103 en operaciones pasivas."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fecven == 5, c("Existe registros donde fecha de vencimiento de la operacion no es valida para las cuentas 210105, 210135, 210145 , 210205 en operaciones pasivas."),df$Mensaje))


df <- df %>%
  mutate (C37_fil = case_when (
    df$v_fecven == 1 ~ 1,
    df$v_fecven == 2 ~ 1,
    df$v_fecven == 3 ~ 1,
    df$v_fecven == 4 ~ 1,
    df$v_fecven == 5 ~ 1,
    TRUE ~ 0))

C37_fil <- df %>% 
  filter(C37_fil == 1)

C37_fil <- C37_fil %>% 
  select(Fila, Cedula, Segmento, Vencimiento, Pagos, Mensaje)


if (nrow(C37_fil) > 0) {
  datatable(C37_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion estado de la operacion

Resumen de Errores:

```{r, echo = FALSE}

#######################################################################
# Validacion 20:
# E S T A D O  D E  L A  O P E R A C I O N    
#######################################################################


df <- df %>%
  mutate (filtro = ifelse (df$Instrumentacion == 'TP' | df$Instrumentacion == 'TC'  , 1, 0)) %>%
  mutate (filtro1 = ifelse (df$Operacion == 'SC' | df$Operacion == 'SO'  , 1, 0)) %>%
  mutate (filtro2 = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205 , 1, 0))

df <- df %>%
  mutate (v_est = ifelse (df$cod_segmento != 0 & df$filtro == 1 & df$cod_estado != 3, 1, 0))

df <- df %>%
  mutate (v_est = ifelse (df$cod_segmento != 0 & df$filtro1 == 1 & df$cod_estado != 3, 2, df$v_est))

df <- df %>%
  mutate (v_est = ifelse (df$cod_segmento == 0 & df$filtro2 == 1 & df$cod_estado != 3, 3, df$v_est))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_est == 1, c("Existe registros de operaciones activas instrumentadas con TC y TP donde el codigo de estado de la operacion debe ser cero y envia otro valor."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_est == 2, c("Existe registros de operaciones activas con codigos de operacion SC y SO donde el codigo de estado de la operacion debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_est == 3, c("Existe registros para las cuentas pasivas 210105, 210135, 210145, 210205 donde el codigo de estado de la operacion debe ser cero y envia otro valor."),df$Mensaje))


df <- df %>%
  mutate (C38_fil = case_when (
    df$v_est == 1 ~ 1,
    df$v_est == 2 ~ 1,
    df$v_est == 3 ~ 1,
    TRUE ~ 0))

C38_fil <- df %>% 
  filter(C38_fil == 1)

C38_fil <- C38_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, Operacion, Estado, Mensaje)


if (nrow(C38_fil) > 0) {
  datatable(C38_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion nivel de estudios

Resumen de Errores:

```{r, echo = FALSE}

################################
# validacion 21:
#N I V E L  D E  E S T U D I O    
################################


df <- df %>%
  mutate (filtro = ifelse (df$Instrumentacion == 'TP' | df$Instrumentacion == 'TC' |  df$Instrumentacion == 'CS' , 1, 0)) %>%
  mutate (filtro1 = ifelse (df$Operacion == 'SC' | df$Operacion == 'SO'  , 1, 0)) %>%
  mutate (filtro2 = ifelse (df$cartera == 1 | df$cartera == 6 , 1, 0)) %>%
  mutate (filtro3 = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205 , 1, 0)) %>%
  mutate (filtro4 = ifelse (df$Estudios == 'N' | df$Estudios == '0', 1, 0))
  
df <- df %>%
  mutate (v_niv = ifelse (df$cod_segmento != 0 & df$filtro == 1 & df$filtro4 != 1, 1, 0))

df <- df %>%
  mutate (v_niv = ifelse (df$cod_segmento != 0 & df$filtro1 == 1 & df$filtro4 != 1, 2, df$v_niv))

df <- df %>%
  mutate (v_niv = ifelse (df$filtro2 == 1 & df$cod_estudio != 7 & df$filtro !=1, 3, df$v_niv))

df <- df %>%
  mutate (v_niv = ifelse (df$cartera == 5 & df$cod_clase == 2 & df$cod_estudio != 7, 4, df$v_niv))

df <- df %>%
  mutate (v_niv = ifelse (df$cod_segmento == 0 & df$filtro3 == 1 & df$cod_estudio != 7, 5, df$v_niv))

df <- df %>%
  mutate (v_niv = ifelse (df$cod_segmento == 0 & df$CUC ==2103 & df$cod_clase == 2 & df$cod_estudio != 7, 6, df$v_niv))

df <- df %>%
  mutate (v_niv = ifelse (df$cod_segmento == 0 & df$CUC ==2103 & df$cod_clase == 1 & df$cod_estudio == 7, 7, df$v_niv))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_niv == 1, c("Existe registros de operaciones activas instrumentadas con CS, TC y TP donde el codigo de Nivel de Estudio debe ser cero y envia otro valor."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_niv == 2, c("Existe registros de operaciones activas con codigos de operacion SC y SO donde el codigo de Nivel de Estudio debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_niv == 3, c("Existe registros de operaciones activas de los segmentos del 1 al 3 y 13 donde el codigo de Nivel de Estudio debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_niv == 4, c("Existe registros de los segmentos del 10 al 12 con clase de prestarario J=Juridico donde el codigo de Nivel de Estudio debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_niv == 5, c("Existe registros para las cuentas pasivas 210105, 210135, 210145 , 210205 donde el codigo de Nivel de Estudio debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_niv == 6, c("Existe registros para la cuenta pasiva 2103 con Clase de Prestarario J=Juridico donde el codigo de Nivel de Estudio debe ser cero y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_niv == 7, c("Existe registros para la cuenta pasiva 2103 con Clase de Prestarario N=Natural donde el codigo de Nivel de Estudio debe ser diferente de cero."),df$Mensaje))


df <- df %>%
  mutate (C39_fil = case_when (
    df$v_niv == 1 ~ 1,
    df$v_niv == 2 ~ 1,
    df$v_niv == 3 ~ 1,
    df$v_niv == 4 ~ 1,
    df$v_niv == 5 ~ 1,
    df$v_niv == 6 ~ 1,
    df$v_niv == 7 ~ 1,
    TRUE ~ 0))

C39_fil <- df %>% 
  filter(C39_fil == 1)

C39_fil <- C39_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, Operacion, Estudios, Mensaje)


if (nrow(C39_fil) > 0) {
  datatable(C39_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion tasa de reajuste

Resumen de Errores:

```{r, echo = FALSE}

##########################################################################
# validacion 22:
# R E A J U S T E  I G U A L  A  C E R O  O  M U L T I P L O S  D E  90
##########################################################################


df <- df %>%
  mutate (multiplos = df$Reajuste %% 90) %>%
  mutate (filtro = ifelse (df$cod_segmento != 0 | df$CUC == 2103, 1, 0)) %>%
  mutate (filtro1 = ifelse (df$Reajuste > 0 & df$Reajuste < 90, 1, 0)) 



df <- df %>%
  mutate (v_rea = ifelse (df$cod_segmento == 0 & df$multiplos != 0 & df$CUC == 2103, 1, 0))


df <- df %>%
  mutate (v_rea = ifelse (df$Reajuste > df$Plazo, 2, df$v_rea))

df <- df %>%
  mutate (v_rea = ifelse (df$filtro ==1 & df$filtro1 == 1, 3, df$v_rea))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_rea == 1, c("Existe registros donde envia el periodo de reajuste con un valor distinto de 0 y debe enviar 0 o un multiplo de 90."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_rea == 2, c("Existe registros donde el periodo de reajuste de interes es mayor al plazo de la operacion."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_rea == 3, c("Existe registros donde el periodo de reajuste esta entre 1 y 89 dias."),df$Mensaje))


df <- df %>%
  mutate (C41_fil = case_when (
    df$v_rea == 1 ~ 1,
    df$v_rea == 2 ~ 1,
    df$v_rea == 3 ~ 1,
    TRUE ~ 0))

C41_fil <- df %>% 
  filter(C41_fil == 1)

C41_fil <- C41_fil %>% 
  select(Fila, Cedula,  Mensaje)


if (nrow(C41_fil) > 0) {
  datatable(C41_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion tasas de interes nominal y efectiva

Resumen de Errores:

```{r, echo = FALSE}

##########################################################################
# validacion 23: T I R  Y  T E A  =  P A S I V A S  !=  2103
##########################################################################

df <- df %>%
  mutate (filtro = ifelse (df$Operacion == 'SC' | df$Operacion == 'SO', 1, 0)) 
  

df <- df %>%
  mutate (v_tir = ifelse (df$cod_segmento == 0 & df$CUC != 2103 & df$TIR != df$TEA & df$filtro != 1, 1, 0)) 

df <- df %>%
  mutate (v_tir = ifelse (df$Pagos <= 360 & df$TIR > df$TEA, 2, df$v_tir))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tir == 1, c("Existe registros en operaciones pasivas distintas a la cuenta 2103 donde tasa nominal y efectiva son diferentes."),0)) 

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tir == 2, c("Existe registros en operaciones pasivas distintas a la cuenta 2103 donde tasa nominal y efectiva son diferentes."),df$Mensaje))


df <- df %>%
  mutate (C42_fil = case_when (
    df$v_tir == 1 ~ 1,
    df$v_tir == 2 ~ 1,
      TRUE ~ 0))

C42_fil <- df %>% 
  filter(C42_fil == 1)

C42_fil <- C42_fil %>% 
  select(Fila, Cedula,  Mensaje)


if (nrow(C42_fil) > 0) {
  datatable(C42_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion actividades economicas

Resumen de Errores:

```{r, echo = FALSE}

##########################################################################
# validacion 24: A C T I V I D A D E S  E C O N O M I C A
##########################################################################

df <- df %>%
  mutate (filtro = ifelse (df$cartera == 1 | df$cartera == 5 | df$cartera == 6, 1, 0)) %>%
  mutate (filtro1 = ifelse (df$cartera == 2 | df$cartera == 3 | df$cartera == 4 | df$cartera == 0, 1, 0))
  

df <- df %>%
  mutate (v_actec = ifelse (df$cod_ciiu == 1738 & df$filtro == 1, 1, 0))
  
  df <- df %>%
  mutate (v_actec = ifelse (df$cod_ciiu != 1738 & df$filtro1 == 1, 2, df$v_actec)) 


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_actec == 1, c("Existe registros donde debe enviar codigo  de Actividad Economica CIIU pero envia cero 0."),0)) 

  df <- df %>%
    mutate(Mensaje = ifelse(df$v_actec == 2, c("Existe registros donde codigo de Actividad Economica CIIU debe ser 0 pero envia otro codigo."),df$Mensaje))

df <- df %>%
  mutate (C43_fil = case_when (
    df$v_actec == 1 ~ 1,
    df$v_actec == 2 ~ 1,
    TRUE ~ 0))

C43_fil <- df %>% 
  filter(C43_fil == 1)

C43_fil <- C43_fil %>% 
  select(Fila, Cedula, Segmento,  Mensaje)


if (nrow(C43_fil) > 0) {
  datatable(C43_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}



```

## Verificacion destino de credito

Resumen de Errores:

```{r, echo = FALSE}

#######################################
# validacion 25:
#D E S T I N O   D E L  C R E D I T O 
#######################################

df <- df %>%
  mutate (filtro = ifelse (df$cartera == 1 | df$cartera == 5 | df$cartera == 6, 1, 0)) %>%
  mutate (filtro1 = ifelse (df$Destino == 'OT' | df$Destino == 'MC' | df$Destino == 'TF', 1, 0)) %>% # para segmento 4
  mutate (filtro2 = ifelse (df$Destino == 'MV' | df$Destino == 'OT', 1, 0)) %>% # para cartera VIP VIS IN
  mutate (filtro3 = ifelse (df$Destino == 'MC' | df$Destino == 'MV' , 1, 0))  # para micro

df <- df %>%
  mutate (v_desc = ifelse (df$filtro == 1 & df$cod_segmento != 0 & df$cd_destino == 17, 1, 0)) 
  
df <- df %>%  
  mutate (v_desc = ifelse (df$cod_segmento == 0 & df$cd_destino != 17, 2, df$v_desc))  

df <- df %>%
  mutate (v_desc = ifelse (df$cod_segmento == 4 & df$filtro1 != 1, 3, df$v_desc)) 

df <- df %>%
  mutate (v_desc = ifelse (df$cartera == 3 & df$Destino != 'OT', 4, df$v_desc))

df <- df %>%
  mutate (v_desc = ifelse (df$cartera == 4 & df$filtro2 != 1, 5, df$v_desc))

df <- df %>%
  mutate (v_desc = ifelse (df$cartera == 5 & df$filtro3 == 1, 6, df$v_desc))

df <- df %>%
  mutate (v_desc = ifelse (df$cartera == 1 & df$filtro3 == 1, 7, df$v_desc))

df <- df %>%
  mutate (v_desc = ifelse (df$Instrumentacion == 'TC' & df$Destino != 'CT', 8, df$v_desc))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 1, c("Existe registros en cuentas 1401, 1404 o 1474 donde el Destino Financiero del credito debe ser distinto de 0."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 2, c("Existe registros donde el destino financiero del credito debe ser igual a 0 y envia otro codigo."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 3, c("Existe registros para el segmento consumo donde el destino financiero debe ser igual a OT, MC, TF y envia otro codigo."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 4, c("Existe registros para los segmentos 5 - 6 donde el destino financiero debe ser igual a OT y envia otro codigo."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 5, c("Existe registros para los segmentos 7 - 8 - 9 donde el destino financiero debe ser igual a OT o MV y envia otro codigo."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 6, c("Existe registros para los segmentos 10 - 11 - 12 donde el destino financiero debe ser distintos a MC o MV."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 7, c("Existe registros para los segmentos 1 - 2 - 3 donde el destino financiero debe ser distintos a MC o MV."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_desc == 8, c("Existe registros donde el destino financiero del codigo de instrumentacion TC debe ser igual a CT y envia otro codigo."),df$Mensaje))


df <- df %>%
  mutate (C44_fil = case_when (
    df$v_desc == 1 ~ 1,
    df$v_desc == 2 ~ 1,
    df$v_desc == 3 ~ 1,
    df$v_desc == 4 ~ 1,
    df$v_desc == 5 ~ 1,
    df$v_desc == 6 ~ 1,
    df$v_desc == 7 ~ 1,
    df$v_desc == 8 ~ 1,
    TRUE ~ 0))

C44_fil <- df %>% 
  filter(C44_fil == 1)

C44_fil <- C44_fil %>% 
  select(Fila, Cedula, Segmento,  Destino, Mensaje)


if (nrow(C44_fil) > 0) {
  datatable(C44_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}



```


## Verificacion instrumentacion cuentas pasivas

Resumen de Errores:

```{r, echo = FALSE}

###################################################################
# validacion 26:
#C T A S  P A S I V A S  I N S T R U M E N T A C I O N  = C E R O 
###################################################################


df <- df %>%
  mutate (v_instr = ifelse (df$cod_segmento == 0 & df$cod_instrumentada != 13, 1, 0))

df <- df %>%
  mutate (v_instr = ifelse (df$cod_segmento != 0 & df$cod_instrumentada == 13, 2, df$v_instr)) 


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_instr == 1, c("Existe registros en cuentas pasivas donde envia el codigo de instrumentacion pero debe ser igual a 0."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_instr == 2, c("Existe registros en cuentas activas donde envia 0 pero debe enviar el codigo de instrumentacion de la operacion."),df$Mensaje))

df <- df %>%
  mutate (C45_fil = case_when (
    df$v_instr == 1 ~ 1,
    df$v_instr == 2 ~ 1,
    TRUE ~ 0))

C45_fil <- df %>% 
  filter(C45_fil == 1)

C45_fil <- C45_fil %>% 
  select(Fila, Cedula, Segmento, Mensaje)


if (nrow(C45_fil) > 0) {
  datatable(C45_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}



```

## Verificacion cedulas de identidad

Resumen de Errores:

```{r, echo = FALSE}

###################################################
# validacion 27:I D E N T I F I C A C I O N  D E L  C L I E N T E 
###################################################


df <- df %>% #Valores vacios en Cedula
  mutate(va_c3 = ifelse (is.na (Cedula), 9, 0)) 

# COMODINES

df <- df %>%
  mutate(comodin = case_when(
    Cedula == '0000000000' ~ 1,
    Cedula == '1111111111' ~ 1,
    Cedula == '2222222222' ~ 1,
    Cedula == '3333333333' ~ 1,
    Cedula == '4444444444' ~ 1,
    Cedula == '5555555555' ~ 1,
    Cedula == '6666666666' ~ 1,
    Cedula == '7777777777' ~ 1,
    Cedula == '8888888888' ~ 1,
    Cedula == '9999999999' ~ 1,
    Cedula == '0000000000000' ~ 1, 
    Cedula == '0000000000001' ~ 1,
    Cedula == '0000000000002' ~ 1,
    Cedula == '0000000000003' ~ 1,
    Cedula == '0000000000004' ~ 1,
    Cedula == '0000000000005' ~ 1,
    Cedula == '0000000000006' ~ 1,
    Cedula == '0000000000007' ~ 1,
    Cedula == '0000000000008' ~ 1,
    Cedula == '0000000000009' ~ 1, TRUE ~ 0))

## VALIDA TAMANO DE CARACTERES

df <- df %>% mutate (tamano = nchar(Cedula)) 

df <- df %>% 
  mutate (tres_ultimo = as.numeric(substr(Cedula,11,13)))

df <- df %>%
  mutate (v_c3 = ifelse (df$va_c3 == 9, 1, 0))

df <- df %>%
  mutate (v_c3 = ifelse (df$cod_segmento != 0 & df$comodin == 1, 2, df$v_c3))

df <- df %>%
  mutate (v_c3 = ifelse (df$cod_segmento != 0 & Tipo_Id == 'C' & tamano != 10 & va_c3 != 9 , 3, df$v_c3))

df <- df %>%
  mutate (v_c3 = ifelse (df$cod_segmento != 0 & Tipo_Id == 'R' & tamano != 13 & va_c3 != 9 , 4, df$v_c3))

df <- df %>%
  mutate (v_c3 = ifelse (df$cod_segmento != 0 & Tipo_Id == 'R' & tres_ultimo > 1 & va_c3 != 9 & tamano == 13, 5, df$v_c3))

df <- df %>%
  mutate (v_c3 = ifelse (df$cod_segmento != 0 & Tipo_Id == 'E' & tamano == 1 & va_c3 != 9 , 6, df$v_c3))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_c3 == 1, c("Existen registros vacios en la columna Cedula."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_c3 == 2, c("Existen cedulas, RUC o pasaportes con comodines, por ejemplo 0000000000."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_c3 == 3, c("El numero de caracteres para la cedula son (10)."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_c3 == 4, c("El numero de caracteres para son RUC (13)."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_c3 == 5, c("Los tres ultimos digitos del RUC son (001)."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_c3 == 6, c("El numero de caracteres para la extranejros son (7)."),df$Mensaje))


df <- df %>%
  mutate (C46_fil = case_when (
    df$v_c3 == 1 ~ 1,
    df$v_c3 == 2 ~ 1,
    df$v_c3 == 3 ~ 1,
    df$v_c3 == 4 ~ 1,
    df$v_c3 == 5 ~ 1,
    df$v_c3 == 6 ~ 1,
    TRUE ~ 0))

C46_fil <- df %>% 
  filter(C46_fil == 1)

C46_fil <- C46_fil %>% 
  select(Fila, Cedula, Segmento, Tipo_Id, Mensaje)


if (nrow(C46_fil) > 0) {
  datatable(C46_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```


## Verificacion cedulas de identidad: algoritmo

Resumen de Errores:

```{r, echo = FALSE}

###########################################
# validacion 28:
#A L G O R I T M O   V E R I F I C A D O R
###########################################

df <- df %>% 
  mutate (tamano = nchar(Cedula)) %>%
  mutate (dpa = as.numeric(substr(Cedula,1,2))) %>% # se extrae los dos primero caracteres correspondiente al dpa del ecuador
  mutate (tercer = as.numeric(c(substr(Cedula,3,3))),
          Fila = row_number())  


df <- df %>%  
  mutate (pares = as.numeric(substr(Cedula,2,2)) + # se suman los digitos pares
            as.numeric(substr(Cedula,4,4)) +
            as.numeric(substr(Cedula,6,6)) +
            as.numeric(substr(Cedula,8,8)))
df <- df %>% 
  mutate (num1 = as.numeric(substr(Cedula,1,1))) %>% # se extrae los digitos impares
  mutate (num2 = as.numeric(substr(Cedula,2,2))) %>% 
  mutate (num3 = as.numeric(substr(Cedula,3,3))) %>% 
  mutate (num4 = as.numeric(substr(Cedula,4,4))) %>% 
  mutate (num5 = as.numeric(substr(Cedula,5,5))) %>% 
  mutate (num6 = as.numeric(substr(Cedula,6,6))) %>% 
  mutate (num7 = as.numeric(substr(Cedula,7,7))) %>% 
  mutate (num8 = as.numeric(substr(Cedula,8,8))) %>% 
  mutate (num9 = as.numeric(substr(Cedula,9,9)))  %>%
  mutate(ultimo = as.numeric(substr(Cedula,10,10))) # se extrae el último digito para verificación

df <- df %>% # se multiplica cada digito impar por 2
  mutate (n1 = num1 * 2)

df <- df %>% # se multiplica cada digito impar por 2
  mutate (n3 = num3 * 2)

df <- df %>% # se multiplica cada digito impar por 2
  mutate (n5 = num5 * 2) 


df <- df %>% # se multiplica cada digito impar por 2
  mutate (n7 = num7 * 2) 

df <- df %>% # se multiplica cada digito impar por 2
  mutate (n9 = num9 * 2) 

df <- df %>%  # si el resultado de la multiplicación es mayor a 10 se resta 9
  mutate (n1 = ifelse(df$n1 > 9, df$n1 - 9, df$n1))

df <- df %>% # si el resultado de la multiplicación es mayor a 10 se resta 9  
  mutate (n3 = ifelse(df$n3 > 9, df$n3 - 9, df$n3))

df <- df %>%  # si el resultado de la multiplicación es mayor a 10 se resta 9 
  mutate (n5 =  ifelse(df$n5 > 9, df$n5 - 9, df$n5))

df <- df %>%  # si el resultado de la multiplicación es mayor a 10 se resta 9   
  mutate (n7 = ifelse(df$n7 > 9, df$n7 - 9, df$n7))

df <- df %>%   # si el resultado de la multiplicación es mayor a 10 se resta 9
  mutate (n9 = ifelse(df$n9 > 9, df$n9 - 9, df$n9))

df <- df %>% # se suman los difitos impares
  mutate(impares = n1 + n3 + n5 + n7 + n9)

df <- df %>%  # se suma pares e impares
  mutate (suma_tota = pares + impares)

df <- df %>%  # se extrar el primer digito de la suma total para obtener la decena inmediata
  mutate (prim_dig_sum = as.numeric(substr(suma_tota, 1, 1)))

df <- df %>% # si prim_dig_sum < a 10 se la decema mas cerca es 10
  mutate (prim_dig_sum = ifelse(df$suma_tota < 10, 10, df$prim_dig_sum))

df <- df %>%  
  mutate (decena = ifelse(df$prim_dig_sum == 10, 10, (prim_dig_sum + 1) * 10 ))%>%
  mutate (verificador = decena - suma_tota)

df <- df %>% # si la resta de la decena y la suma total es igual a 10 el digito verificar es igual a cero
  mutate (verificador = ifelse(df$verificador == 10, 0, df$verificador))

df <- df %>% # 0 = cumple con el digito 1 = no cumple
  mutate(digito_verificador = ifelse(df$verificador == df$ultimo, 0, 1)) 

verificador_ID <- df %>%
  filter(tamano == 10 & Tipo_Id == 'C') %>%
  mutate(VERI = case_when(
    Tipo_Id == 'C' & dpa <= 0 ~ 1,
    Tipo_Id == 'C' & dpa > 30 ~ 1,
    Tipo_Id == 'C' & dpa >= 25 & dpa <= 29 ~ 1,
    Tipo_Id == 'C' & tercer >= 7 ~ 1,
    Tipo_Id == 'C' & tercer < 0 ~ 1,
    Tipo_Id == 'C' & digito_verificador == 1 ~ 1,
    TRUE ~ 0))

verificador_ID <- verificador_ID %>%
  filter(VERI == 1 ) %>%
  mutate(Mensaje = c("Existen cedulas no validas, no se encuentran registradas en el Registro Civil.")
  ) 


verificador_ID <- verificador_ID %>% 
  select(Fila, Cedula, Tipo_Id, Mensaje)




if (nrow(verificador_ID) > 0) {
  datatable(verificador_ID,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```


## Verificacion RUC: algoritmo

Resumen de Errores:

```{r, echo = FALSE}


##################################################
# validacion 29:
#A L G O R I T M O   V E R I F I C A D O R  R U C 
##################################################

df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 4, 
  mutate (r1 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num1 * 4, 0))

df <- df %>% # SI EL TERCER DGITO SI ES == 6 SE MULTIPLICA POR 3
  mutate (r1 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num1 * 3, df$r1))

df <- df %>% # SI EL TERCER DGITO SI ES < 6 SE MULTIPLICA POR 2
  mutate (r1 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num1 * 2, df$r1))


df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 3
  mutate (r2 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num2 * 3, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 2, ES DIFERENTE A R SE COLOCA 0
  mutate (r2 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num2 * 2, df$r2))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 2, ES DIFERENTE A R SE COLOCA 0
  mutate (r2 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num2 * 1, df$r2))


df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 2
  mutate (r3 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num3 * 2, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 7 
  mutate (r3 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num3 * 7, df$r3))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 7 
  mutate (r3 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num3 * 2, df$r3))

df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 7
  mutate (r4 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num4 * 7, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 6
  mutate (r4 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num4 * 6, df$r4))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 6
  mutate (r4 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num4 * 1, df$r4))

df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 6
  mutate (r5 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num5 * 6, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 5
  mutate (r5 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num5 * 5, df$r5))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 5
  mutate (r5 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num5 * 2, df$r5))

df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 7
  mutate (r6 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num6 * 5, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 6
  mutate (r6 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num6 * 4, df$r6))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 6
  mutate (r6 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num6 * 1, df$r6))

df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 4
  mutate (r7 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num7 * 4, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 3
  mutate (r7 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num7 * 3, df$r7))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 3
  mutate (r7 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num7 * 2, df$r7))

df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 3
  mutate (r8 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num8 * 3, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 3
  mutate (r8 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num8 * 2, df$r8))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 3
  mutate (r8 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num8 * 1, df$r8))

df <- df %>% # SI EL TERCER DGITO ES == 9 SE MULTIPLICA POR 3
  mutate (r9 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 9, df$num9 * 2, 0))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 3
  mutate (r9 =  ifelse(df$Tipo_Id == 'R' & df$tercer == 6, df$num9 * 0, df$r9))

df <- df %>% # SI EL TERCER DGITO ES == 6 SE MULTIPLICA POR 3
  mutate (r9 =  ifelse(df$Tipo_Id == 'R' & df$tercer < 6, df$num9 * 2, df$r9))

df <- df %>%
  mutate (r1 =  ifelse(df$Tipo_Id != 'R', 0, df$r1)) %>% 
  mutate (r2 =  ifelse(df$Tipo_Id != 'R', 0, df$r2)) %>%
  mutate (r3 =  ifelse(df$Tipo_Id != 'R', 0, df$r3)) %>%
  mutate (r4 =  ifelse(df$Tipo_Id != 'R', 0, df$r4)) %>%
  mutate (r5 =  ifelse(df$Tipo_Id != 'R', 0, df$r5)) %>%
  mutate (r6 =  ifelse(df$Tipo_Id != 'R', 0, df$r6)) %>%
  mutate (r7 =  ifelse(df$Tipo_Id != 'R', 0, df$r7)) %>%
  mutate (r8 =  ifelse(df$Tipo_Id != 'R', 0, df$r8)) %>%
  mutate (r9 =  ifelse(df$Tipo_Id != 'R', 0, df$r9)) 

df <- df %>%  # se suma 
  mutate (suma_r = r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 + r9)

df <- df %>% # SE APLICA EL MODULO 11 ESTO ES DIVIDIR EL SUMA_R PARA 11
  mutate (modulo = ifelse  (df$tercer > 6, suma_r / 11, suma_r / 10)) %>%
  mutate (residuo = ifelse (df$tercer > 6, suma_r %% 11, suma_r %% 10)) 

df <- df %>%
  mutate (residuo_1 = ifelse (df$tercer > 6, 11 - df$residuo, 10 - df$residuo))

df <- df %>% # SI EL MODULO ES == 0 EL DIGITO VERFICADOR ES EL ULTIMO DIGITO DEL RUC PARA PRIVADOS
  mutate (conside_RUC = ifelse(df$Tipo_Id == 'R' & df$tercer == 9 & df$residuo == 0, 0, 1))

df <- df %>% # DIGITO VERIFICADOR PARA PUBLICOS EL 9 
  mutate (conside_RUC = ifelse(df$Tipo_Id == 'R' & df$tercer == 6 & df$residuo == 0, 0, df$conside_RUC))

df <- df %>% # DIGITO VERIFICADOR PARA PUBLICOS EL 9 
  mutate (conside_RUC = ifelse(df$Tipo_Id == 'R' & df$tercer < 6 & df$residuo == 0, 0, df$digito_verificador))


df <- df %>% # SI EL MODULO ES == 0 EL DIGITO VERFICADOR ES EL ULTIMO DIGITO DEL RUC PARA PRIVADOS
  mutate (conside_RUC = ifelse(df$Tipo_Id == 'R' & df$tercer == 9 & df$residuo != 0, df$residuo_1 - df$ultimo, df$conside_RUC))

df <- df %>% # SI EL MODULO ES == 0 EL DIGITO VERFICADOR ES EL ULTIMO DIGITO DEL RUC PARA PRIVADOS
  mutate (conside_RUC = ifelse(df$Tipo_Id == 'R' & df$tercer == 6 & df$residuo != 0, df$residuo_1 - df$num9, df$conside_RUC))

df <- df %>% # SI EL MODULO ES == 0 EL DIGITO VERFICADOR ES EL ULTIMO DIGITO DEL RUC PARA PRIVADOS
  mutate (conside_RUC = ifelse(df$Tipo_Id == 'R' & df$tercer < 6 & df$residuo != 0, df$digito_verificador, df$conside_RUC))

df <- df %>% # SI EL MODULO ES == 0 EL DIGITO VERFICADOR ES EL ULTIMO DIGITO DEL RUC PARA PRIVADOS
  mutate (conside_RUC = ifelse(df$Tipo_Id == 'R' & df$residuo == 0,  df$residuo, df$conside_RUC))

verificador_RUC <- df %>%
  filter(tamano == 13 & Tipo_Id == 'R') %>%
  mutate(v_RUC = case_when(
    Tipo_Id == 'R' & dpa <= 0 ~ 1,
    Tipo_Id == 'R' & dpa > 30 ~ 1,
    Tipo_Id == 'R' & dpa >= 25 & dpa <= 29 ~ 1,
    Tipo_Id == 'R' & tercer < 0 ~ 1,
    Tipo_Id == 'R' & conside_RUC == 1 & tercer < 6 ~ 1,
    TRUE ~ 0))

verificador_RUC <- verificador_RUC %>%
  filter(v_RUC == 1 ) %>%
  mutate(Mensaje = c("Existen RUC no validos, no se encuentran registradas en el SRI.")
  ) 


verificador_RUC <- verificador_RUC %>% 
  select(Fila, Cedula, Tipo_Id, Mensaje)



if (nrow(verificador_RUC) > 0) {
  datatable(verificador_RUC,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
  
} else {
  cat("NO TIENE ERRORES")
}


```

## Verificacion identificacion para cuentas pasivas

Resumen de Errores:

```{r, echo = FALSE}



#################################################################
# validacion 30:
#I D E N T I F I C A C I O N  == C E R O  P A R A  P A S I V A S
#################################################################


df <- df %>%
  mutate (v_idpas = ifelse (df$cod_segmento == 0 & df$Cedula != 0, 1, 0)) 
  


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_idpas == 1, c("Existe registros donde la identificacion del prestatario para las operaciones pasivas debe ser 0 pero envia dato."),0)) 
  

df <- df %>%
  mutate (C47_fil = case_when (
    df$v_idpas == 1 ~ 1,
        TRUE ~ 0))

C47_fil <- df %>% 
  filter(C47_fil == 1)

C47_fil <- C47_fil %>% 
  select(Fila, Cedula, Segmento, Mensaje)


if (nrow(C47_fil) > 0) {
  datatable(C47_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion tasa de reajuste cuentas pasivas

Resumen de Errores:

```{r, echo = FALSE}

#################################################################
# validacion 31:
#T A S A  R E A J U S T A B L E  == C E R O
#################################################################

df <- df %>%
  mutate (filtro = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205, 1, 0)) 


df <- df %>%
  mutate (v_tare = ifelse (df$cod_segmento == 0 & df$filtro == 1 & df$cod_referencial != 27, 1, 0)) 

df <- df %>%  
  mutate (v_tare = ifelse (df$cod_segmento != 0 & df$filtro != 1 & df$cod_referencial == 27, 2, df$v_tare))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tare == 1, c("Existe registros donde debe enviar 0 en codigo de tasa referencial de reajuste pero envia dato."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tare == 2, c("Existe registros donde debe enviar codigo de tasa referencial de reajuste pero envia 0."),df$Mensaje))

df <- df %>%
  mutate (C48_fil = case_when (
    df$v_tare == 1 ~ 1,
    df$v_tare == 2 ~ 1,
    TRUE ~ 0))

C48_fil <- df %>% 
  filter(C48_fil == 1)

C48_fil <- C48_fil %>% 
  select(Fila, Cedula,  Mensaje)


if (nrow(C48_fil) > 0) {
  datatable(C48_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion ingresos

Resumen de Errores:

```{r, echo = FALSE}


#############################
# validacion 32:
#T O T A L  I N G R E S O S 
#############################

# filtro 1
df <- df %>%
  mutate (filtro = ifelse (df$cod_segmento == 0 | df$cod_segmento == 13, 1, 0))
  
# condicion 1
#df <- df %>%
#  mutate (v_ingr = ifelse (df$Ingresos == 0 & df$filtro != 1 , 1, 0))
  
# Mensaje  
#df <- df %>%
#  mutate(Mensaje = ifelse(df$v_ingr == 1, c("Existe registros donde el Total de Ingresos debe ser mayor a 0.00."),0))
  
  
#filtro 2
df <- df %>%
  mutate (filtro1 = ifelse (df$Instrumentacion == 'TC' | df$Instrumentacion == 'TP' | df$Instrumentacion == 'CS', 1, 0)) %>% # TC TP y CS
  mutate (filtro2 = ifelse (df$Operacion == 'SC' | df$Operacion == 'SO', 1, 0)) #SC y SO
  
#condicion 2
df <- df %>%
  mutate (v_ingr = ifelse (df$Ingresos == 0 & df$filtro != 1 & df$filtro1 != 1 & df$filtro2 != 1, 2, 0))

#mensaje 2
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 2, c("Existe registros con instrumentacion diferentes a TC, TP, CS; operacion SC, SO, donde el Total de Ingresos debe ser mayor a 0.00."),df$Mensaje)) 


#condicion 3
df <- df %>%
  mutate (v_ingr = ifelse (df$Ingresos > 0 & df$filtro1 == 1 , 3, df$v_ingr)) 

#mensaje 3
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 3, c("Existe registros con Codigo de Instrumentacion TC TP y CS donde el Total de Ingresos debe ser igual a 0.00."),df$Mensaje))


#condicion 4 = CORPORATIVO
df<- df %>%    
  mutate (v_ingr = ifelse (df$Ingresos <= 7000000 & df$cod_segmento == 1 & df$filtro1 != 1 , 4, df$v_ingr)) # corporativo
    
#mensaje 4 = CORPORATIVO
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 4, c("Existe registros del Segmento 1 donde el Total de Ingresos debe ser mayor a 7000000."),df$Mensaje)) 


#filtro 4 = EMPRESARIAL 
df <- df %>%
  mutate (filtro3 = ifelse (df$Ingresos <= 1500000 | df$Ingresos > 7000000, 1, 0))   #segmento 2
  
#condicion 4.1  = EMPRESARIAL 
df <- df %>%
  mutate (v_ingr = ifelse (df$filtro3 == 1 & df$cod_segmento == 2 & df$filtro1 != 1 , 5, df$v_ingr))  # empresarial

  
#mensaje 5  = EMPRESARIAL 
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 5, c("Existe registros del Segmento 2 donde el Total de Ingresos debe estar entre 1500000 y 7000000 y envia otro valor."),df$Mensaje))


#filtro 4 = PYMES
df <- df %>%
  mutate (filtro4 = ifelse (df$Ingresos <= 300000 | df$Ingresos > 1500000, 1, 0))   #segmento 2


#condicion 4.1  = EMPRESARIAL 
df <- df %>%
  mutate (v_ingr = ifelse (df$filtro4 == 1 & df$cod_segmento == 3 & df$filtro1 != 1 , 6, df$v_ingr))  #pymes

#mensaje 5  = EMPRESARIAL 
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 6, c("Existe registros del Segmento 3 donde el Total de Ingresos debe estar entre 300000 y 1500000 y envia otro valor."),df$Mensaje))
  
# condicion Microcredito Minorista
df <- df %>%
mutate (v_ingr = ifelse (df$Ingresos > 20000 & df$cod_segmento == 10 & df$filtro1 != 1 , 7, df$v_ingr)) #mino
  
#mensaje Microcredito Minorista
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 7, c("Existe registros del Segmento 10 donde el Total de Ingresos debe ser inferior a 20000 y envia otro valor."),df$Mensaje)) 

#filtro 5 Microcredito Acumulacion Simple
df <- df %>%
  mutate (filtro5 = ifelse (df$Ingresos <= 20000 | df$Ingresos > 120000, 1, 0))  #segmento 11
  
#condicion  Microcredito Acumulacion Simple
df <- df %>%
  mutate (v_ingr = ifelse (df$filtro5 == 1 & df$cod_segmento == 11 & df$filtro1 != 1 , 8, df$v_ingr))

#mensaje Microcredito Acumulacion Simple
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 8, c("Existe registros del Segmento 11 donde el Total de Ingresos debe estar entre 20000 y 120000 y envia otro valor."),df$Mensaje)) 

#filtro Microcredito Acumulacion Ampliada
df <- df %>%
    mutate (filtro6 = ifelse (df$Ingresos <= 120000 | df$Ingresos > 300000, 1, 0))   #segmento 12
  
#condicion  Microcredito Acumulacion Ampliada
df <- df %>%
  mutate (v_ingr = ifelse (df$filtro6 == 1 & df$cod_segmento ==12 & df$filtro1 != 1 , 9, df$v_ingr)) #ampliada
  
# MENSAJES Microcredito Acumulacion Ampliada
df <- df %>%
  mutate(Mensaje = ifelse(df$v_ingr == 9, c("Existe registros del Segmento 12 donde el Total de Ingresos debe estar entre 120000 y 300000 y envia otro valor."),df$Mensaje)) 

#df$v_ingr == 1 ~ 1,

df <- df %>%
  mutate (C49_fil = case_when (
    df$v_ingr == 2 ~ 1,
    df$v_ingr == 3 ~ 1,
    df$v_ingr == 4 ~ 1,
    df$v_ingr == 5 ~ 1,
    df$v_ingr == 6 ~ 1,
    df$v_ingr == 7 ~ 1,
    df$v_ingr == 8 ~ 1,
    df$v_ingr == 9 ~ 1,
    TRUE ~ 0))

C49_fil <- df %>% 
  filter(C49_fil == 1)

C49_fil <- C49_fil %>% 
  select(Fila, Cedula, Segmento, Instrumentacion, Mensaje)


if (nrow(C49_fil) > 0) {
  datatable(C49_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion estado de la operacion

Resumen de Errores:

```{r, echo = FALSE}

##########################################
# validacion 33:
#E S T A D O  D E  L A  O P E R A C I O N 
##########################################


df <- df %>%
  mutate (filtro1 = ifelse (df$Instrumentacion == 'TC' | df$Instrumentacion == 'TP' , 1, 0)) %>% # TC TP 
  mutate (filtro2 = ifelse (df$Operacion == 'SC' | df$Operacion == 'SO', 1, 0)) #SC y SO

df <- df %>%
  mutate (v_ESOP = ifelse (df$cod_estado != 0 & df$filtro1 == 1 & df$filtro2 == 1, 1, 0)) 
  
# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ESOP == 1, c("Existe registros para las operaciones SC,SO y la Instrumentacion TC,TP con codigos de Estado de la Operacion no validos."),0)) 

df <- df %>%
  mutate (C50_fil = case_when (
    df$v_ESOP == 1 ~ 1,
    TRUE ~ 0))

C50_fil <- df %>% 
  filter(C50_fil == 1)

C50_fil <- C50_fil %>% 
  select(Fila, Cedula,  Mensaje)


if (nrow(C50_fil) > 0) {
  datatable(C50_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion creditos hipotecarios cartera VIP - VIS - Inmobiliario 

Resumen de Errores:

```{r, echo = FALSE}


##########################################
# validacion 34: H I P O T E C A R I O 
##########################################


df <- df %>%
  mutate (v_hip = ifelse (df$cartera == 4 & df$cod_hipo > 12 , 1, 0)) 

df <- df %>%
  mutate (v_hip = ifelse (df$cartera != 4 & df$cod_hipo != 13 , 2, df$v_hip))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_hip == 1, c("Existe registros donde el destino del credito Hipotecario e Inmobiliario no corresponde."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_hip == 2, c("Existe registros diferentes a credito de vivienda de interes publico e inmobiliario donde el destino hipotecario debe ser igual a 0."),df$Mensaje)) 


df <- df %>%
  mutate (C51_fil = case_when (
    df$v_hip == 1 ~ 1,
    df$v_hip == 2 ~ 1,
    TRUE ~ 0))

C51_fil <- df %>% 
  filter(C51_fil == 1)

C51_fil <- C51_fil %>% 
  select(Fila, Cedula, Segmento, Mensaje)


if (nrow(C51_fil) > 0) {
  datatable(C51_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion creditos consumo

Resumen de Errores:

```{r, echo = FALSE}

##########################################
# validacion 35: C O N S U M O
##########################################


df <- df %>%
  mutate (filtro1 = ifelse (df$cartera == 2 | df$cartera == 3 , 1, 0)) 
  


df <- df %>%
  mutate (v_con = ifelse (df$filtro1 != 1 & df$cod_consumo > 20 , 1, 0)) 

df <- df %>%
  mutate (v_con = ifelse (df$filtro1 != 1 & df$Instrumentacion == 'TC' & df$Consumo != 'OT' , 2, df$v_con))

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_con == 1, c("Existe registros donde el Tipo de Consumo debe ser 0."),0)) 

df <- df %>%
  mutate(Mensaje = ifelse(df$v_con == 2, c("Existe registros donde el codigo de Instrumentacion TC debe enviar como tipo de consumo OT."),df$Mensaje)) 


df <- df %>%
  mutate (C52_fil = case_when (
    df$v_con == 1 ~ 1,
    df$v_con == 2 ~ 1,
        TRUE ~ 0))

C52_fil <- df %>% 
  filter(C52_fil == 1)

C52_fil <- C52_fil %>% 
  select(Fila, Cedula,   Segmento, Mensaje)


if (nrow(C52_fil) > 0) {
  datatable(C52_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion tipos de garantias

Resumen de Errores:

```{r, echo = FALSE}

#################
# validacion 36:
#G A R A N T I A
#################


df <- df %>%
  mutate (v_GAR = ifelse (df$Instrumentacion == 'TC' & df$cod_garantia != 18 , 1, 0)) 

df <- df %>%
  mutate (v_GAR = ifelse (df$Instrumentacion == 'TP' & df$cod_garantia != 18 , 2, df$v_GAR))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_GAR == 1, c("Existe registros instrumentados con tarjeta de credito corporativa donde el Tipo de Garantia debe ser 0."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_GAR == 2, c("Existe registros instrumentados con tarjeta de credito corporativa donde el Tipo de Garantia debe ser 0."),df$Mensaje)) 


df <- df %>%
  mutate (C53_fil = case_when (
    df$v_GAR == 1 ~ 1,
    df$v_GAR == 2 ~ 1,
        TRUE ~ 0))

C53_fil <- df %>% 
  filter(C53_fil == 1)

C53_fil <- C53_fil %>% 
  select(Fila, Cedula,   Segmento, Mensaje)


if (nrow(C53_fil) > 0) {
  datatable(C53_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion valor comercial

Resumen de Errores:

```{r, echo = FALSE}

##############################
# validacion 37:
#V A L O R  C O M E R C I A L 
##############################

df <- df %>%
  mutate (filtro1 = ifelse (df$Comercial < parametro1 | df$Comercial > parametro2 , 1, 0)) %>%
  mutate (filtro2 = ifelse (df$Comercial > parametro3 , 1, 0)) %>%
  mutate (filtro3 = ifelse (df$Monto < parametro1 | df$Monto > parametro2 , 1, 0)) %>%
  mutate (filtro4 = ifelse (df$Monto > parametro3 , 1, 0)) 
  

#condiciones
df <- df %>%
  mutate (v_com = ifelse (df$cod_segmento == 7 & cod_entidad != 3927  & df$Comercial <= 0, 1, 0)) #biess si puede tener valor comercial igual a cero

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_com == 1, c("Existe registros donde Valor del Metro Cuadrado de la vivienda en el segmento 7 debe ser mayor a cero."),0))


#condiciones : VIP
df <- df %>%
  mutate (v_com = ifelse (df$cod_segmento == 7 & df$filtro1 == 1, 2, df$v_com))

#mensaje VIP
df <- df %>%
  mutate(Mensaje = ifelse(df$v_com == 2, c("Existe registros del segmento 7 en donde el Valor Comercial de la vivienda debe ser mayor o igual a 177.67 y menor a 228.42 SBU."),df$Mensaje))


#condicion: VIS
df <- df %>%
  mutate (v_com = ifelse (df$cod_segmento == 8 & df$filtro2 == 1, 3, df$v_com))

#mensaje VIS
df <- df %>%
  mutate(Mensaje = ifelse(df$v_com == 3, c("Existe registros del segmento 8 en donde el Valor Comercial de la vivienda debe ser hasta 177.66 SBU."),df$Mensaje))


#condiciones : VIP - monto
df <- df %>%
  mutate (v_com = ifelse (df$cod_segmento == 7 & df$filtro3 ==1 , 4, df$v_com))

#mensaje VIP
df <- df %>%
  mutate(Mensaje = ifelse(df$v_com == 4, c("Existe registros del segmento 7 en donde el Valor Principal debe ser mayor o igual a 177.67 y menor a 228.42 SBU."),df$Mensaje))


#condicion: VIS - monto
df <- df %>%
  mutate (v_com = ifelse (df$cod_segmento == 8 & df$filtro4 == 1, 5, df$v_com))

#mensaje VIS
df <- df %>%
  mutate(Mensaje = ifelse(df$v_com == 5, c("Existe registros del segmento 8 en donde el Valor Principal debe ser hasta 177.66 SBU."),df$Mensaje))


df <- df %>%
  mutate (v_com = ifelse (df$cod_segmento == 9 & cod_entidad != 3927  & df$Comercial <= 0, 6, df$v_com)) 

df <- df %>%
  mutate (v_com = ifelse (df$cod_segmento == 8 & cod_entidad != 3927  & df$Comercial <= 0, 7, df$v_com)) 


df <- df %>%
  mutate(Mensaje = ifelse(df$v_com == 6, c("Existe registros del segmento 9 en donde el Valor Comercial de la vivienda debe ser hasta 177.66 SBU."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_com == 7, c("Existe registros registros en donde el Valor Comercial de la vivienda en el segmento 8 debe ser mayor a 0.00."),df$Mensaje))


df <- df %>%
  mutate (C54_fil = case_when (
    df$v_com == 1 ~ 1,
    df$v_com == 2 ~ 1,
    df$v_com == 3 ~ 1,
    df$v_com == 4 ~ 1,
    df$v_com == 5 ~ 1,
    df$v_com == 6 ~ 1,
    df$v_com == 7 ~ 1,
        TRUE ~ 0))

C54_fil <- df %>% 
  filter(C54_fil == 1)

C54_fil <- C54_fil %>% 
  select(Fila, Cedula,   Segmento, Mensaje)


if (nrow(C54_fil) > 0) {
  datatable(C54_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion valor metro cuadrado

Resumen de Errores:

```{r, echo = FALSE}

##############################
# validacion 38:
#V A L O R  M E T R O
##############################


df <- df %>%
  mutate (v_metro = ifelse (df$cartera == 4 & cod_entidad != 3927  & df$Cuadrado <= 0, 1, 0))

df <- df %>%
  mutate (v_metro = ifelse (df$cartera != 4 & df$Comercial != 0, 2, df$v_metro))

df <- df %>%
  mutate (v_metro = ifelse (df$cartera != 4 & df$Cuadrado != 0, 3, df$v_metro)) 


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_metro == 1, c("Existe registros donde el Valor del Metro Cuadrado  del segmento 7 - 8 - 9 debe ser mayor a 0.00."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_metro == 2, c("Existe registros en donde el Valor Comercial de la vivienda para los segmentos distintos a 7, 8 y 9 debe ser igual a 0.00 pero envia un valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_metro == 3, c("Existe registros en donde el Valor del Metro Cuadrado de la vivienda para los segmentos distintos a 7,8 y 9 debe ser igual a 0.00 pero envia un valor."),df$Mensaje)) 

df <- df %>%
  mutate (C55_fil = case_when (
    df$v_metro == 1 ~ 1,
    df$v_metro == 2 ~ 1,
    df$v_metro == 3 ~ 1,
        TRUE ~ 0))

C55_fil <- df %>% 
  filter(C55_fil == 1)

C55_fil <- C55_fil %>% 
  select(Fila, Cedula,   Segmento, Mensaje)


if (nrow(C55_fil) > 0) {
  datatable(C55_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion tipo de identificacion

Resumen de Errores:

```{r, echo = FALSE}


##########################################
# validacion 39:
#C O D I G O  I D E N T I F I C A C I O N 
##########################################


df <- df %>%
  mutate (v_tipo = ifelse (df$cod_segmento != 0 & df$cod_cliente > 5, 1, 0))

df <- df %>%
  mutate (v_tipo = ifelse (df$cartera == 5 & df$cod_cliente != 3, 2, df$v_tipo))
  

# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tipo == 1, c("Existe registros donde el Tipo de Identificacion no se encuentran en las tablas del instructivo."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_tipo == 2, c("Existe registros registros para los segmentos 10,11,12 donde el Tipo de Identificacion no corresponde."),df$Mensaje)) 

df <- df %>%
  mutate (C56_fil = case_when (
    df$v_tipo == 1 ~ 1,
    df$v_tipo == 2 ~ 1,
    TRUE ~ 0))

C56_fil <- df %>% 
  filter(C56_fil == 1)

C56_fil <- C56_fil %>% 
  select(Fila, Cedula,   Segmento, Mensaje)


if (nrow(C56_fil) > 0) {
  datatable(C56_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion clase de identificacion

Resumen de Errores:

```{r, echo = FALSE}

##########################################
# validacion 40:
# C L A S E  I D E N T I F I C A C I O N 
##########################################


df <- df %>%
  mutate (v_CLA = ifelse (df$cod_segmento != 0 & df$cod_clase > 2, 1, 0)) 
  


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_CLA == 1, c("Existe registros donde la Clase de Prestatario no corresponde."),0)) 
  

df <- df %>%
  mutate (C57_fil = case_when (
    df$v_tipo == 1 ~ 1,
    TRUE ~ 0))

C57_fil <- df %>% 
  filter(C57_fil == 1)

C57_fil <- C57_fil %>% 
  select(Fila, Cedula,   Segmento, Mensaje)


if (nrow(C57_fil) > 0) {
  datatable(C57_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion cupo de la tarjeta de credito

Resumen de Errores:

```{r, echo = FALSE}


##########################################
# validacion 41:
# C U P O  D E  L A  TP - TC 
##########################################

df <- df %>%
  mutate (filtro = ifelse (df$cod_instrumentada == 2 | df$cod_instrumentada == 3 , 1, 0)) 
  

df <- df %>%
  mutate (v_cupo = ifelse (df$cod_instrumentada == 2 & df$Cupo <= 0, 1, 0))

df <- df %>%
  mutate (v_cupo = ifelse (df$cod_instrumentada == 3 & df$Cupo <= 0, 2, df$v_cupo))

df <- df %>%
  mutate (v_cupo = ifelse (df$filtro != 1 & df$Cupo != 0, 3, df$v_cupo)) 



# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_cupo == 1, c("Existe registros donde debe enviar el cupo de la tarjeta de credito corporativa pero envia 0.00."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_cupo == 2, c("Existe registros donde debe enviar el cupo de la tarjeta de credito personal pero envia 0.00."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_cupo == 3, c("Existe registros donde debe enviar 0.00 en el cupo de la tarjeta de credito corporativa o personal pero envia otro valor."),df$Mensaje)) 

df <- df %>%
  mutate (C58_fil = case_when (
    df$v_cupo == 1 ~ 1,
    df$v_cupo == 2 ~ 1,
    df$v_cupo == 3 ~ 1,
    TRUE ~ 0))

C58_fil <- df %>% 
  filter(C58_fil == 1)

C58_fil <- C58_fil %>% 
  select(Fila, Cedula,   Segmento, Mensaje)


if (nrow(C58_fil) > 0) {
  datatable(C58_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion codigo parroquia
Resumen de Errores:

```{r, echo = FALSE}

###################
# validacion 42:
# P A R R O Q U I A 
###################


df <- df %>%
  mutate (filtro = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205, 1, 0))  %>%
  mutate (filtro1 = ifelse (df$cod_instrumentada == 2 | df$cod_instrumentada == 3 , 1, 0))  %>%
  mutate (filtro2 = ifelse (df$cod_operacion == 14 | df$cod_operacion == 15 | df$cod_operacion == 22, 1, 0))  



df <- df %>%  
  mutate(vadpa = ifelse (is.na (Cod_parrq) , 2000, df$Cod_parrq)) 

df <- df %>%
  mutate (v_dpa = ifelse (df$vadpa == 2000, 1, 0))


df <- df %>% 
  mutate (tam_pq = nchar(Parroquia))

# condiciones

df <- df %>%
  mutate (v_pq = ifelse (df$v_dpa == 1 , 1, 0))

#df <- df %>%
#  mutate (v_pq = ifelse (df$tam_pq != 6, 1, 0))


df <- df %>%
  mutate (v_pq = ifelse (df$cod_segmento == 0 & df$CUC == 2103 & df$v_dpa == 1 , 2, df$v_pq))

df <- df %>%
  mutate (v_pq = ifelse (df$cod_segmento == 0 & df$filtro == 1 & df$Parroquia != '000000' , 3, df$v_pq))

df <- df %>%
  mutate (v_pq = ifelse (df$filtro1 != 1 & df$filtro2 != 1 & df$Parroquia == '000000' , 4, df$v_pq))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_pq == 1, c("Existen registros celdas vacias en la columna Parroquia, el numero de caracteres es diferentes a 6 digitos, o parroquias no establecidas en el manual."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_pq == 2, c("Existen registros para la cuenta 2103 donde el codigo de Parroquia no corresponde."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_pq == 3, c("Existen registros donde la Parroquia para las cuentas 210105,210135,210145,210205 debe ser 000000 y envia otro valor."),df$Mensaje))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_pq == 4, c("Existen registros donde la Parroquia debe ser distinto a 000000."),df$Mensaje))


df <- df %>%
  mutate (C59_fil = case_when (
    df$v_pq == 1 ~ 1,
    df$v_pq == 2 ~ 1,
    df$v_pq == 3 ~ 1,
    df$v_pq == 4 ~ 1,
    #df$v_pq == 5 ~ 1,
    TRUE ~ 0))

C59_fil <- df %>% 
  filter(C59_fil == 1)

C59_fil <- C59_fil %>% 
  select(Fila, Cedula,  Parroquia, Segmento, Mensaje)
if (nrow(C59_fil) > 0) {
  datatable(C59_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion deposito inicial

Resumen de Errores:

```{r, echo = FALSE}

################################
# validacion 43:
# D E P O S I T O  I N I C I A L  
################################


df <- df %>%
  mutate (v_depi = ifelse (df$cod_segmento == 0 & df$Deposito != 0, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_depi == 1, c("Existen registros para cuentas pasivas donde el Deposito Inicial debe ser Cero 0.00."),0))


df <- df %>%
  mutate (C60_fil = case_when (
    df$v_depi == 1 ~ 1,
    TRUE ~ 0))

C60_fil <- df %>% 
  filter(C60_fil == 1)

C60_fil <- C60_fil %>% 
  select(Fila, Cedula,   Mensaje)
if (nrow(C60_fil) > 0) {
  datatable(C60_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion instrumentacion sobregiros 

Resumen de Errores:

```{r, echo = FALSE}


################################
# validacion 44:
# I N S T R U M E N T A C I O N  
################################

df <- df %>%
  mutate (filtro = ifelse (df$cod_operacion == 14 | df$cod_operacion == 15 , 1, 0))  %>% # df$cod_operacion == 14 (SC) | df$cod_operacion == 15 (SO)
  mutate (filtro1 = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205 | df$CUC == 2103, 1, 0)) 

df <- df %>%
  mutate (v_ins = ifelse (df$Clase != 'J' & df$filtro != 1 & df$filtro1 != 1 & df$Instrumentacion != 'TC' & df$Sexo == 0, 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_ins == 1, c("Existen registros para personas Naturales donde Sexo debe ser distinto de Cero 0."),0))


df <- df %>%
  mutate (C61_fil = case_when (
    df$v_ins == 1 ~ 1,
    TRUE ~ 0))

C61_fil <- df %>% 
  filter(C61_fil == 1)

C61_fil <- C61_fil %>% 
  select(Fila, Cedula,  Sexo, Segmento, Mensaje)
if (nrow(C61_fil) > 0) {
  datatable(C61_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion instrumentacion sobregiros fechas consolidadas

Resumen de Errores:

```{r, echo = FALSE}


#############################################
# validacion 45:
# I N S T R U M E N T A C I O N  - F E C H A
#############################################


df <- df %>%
  mutate (filtro = ifelse (df$cod_operacion == 14 | df$cod_operacion == 15 , 1, 0))  %>% # df$cod_operacion == 14 (SC) | df$cod_operacion == 15 (SO)
  mutate (filtro1 = ifelse (df$CUC == 210105 | df$CUC == 210135 | df$CUC == 210145 | df$CUC == 210205 | df$CUC == 2103, 1, 0)) %>%
  mutate (filtro2 = ifelse (df$Instrumentacion == 'TC' | df$Instrumentacion == 'TP', 1, 0)) 

df <- df %>%
  mutate (v_fen = ifelse (df$Clase != 'J' & df$filtro != 1 & df$filtro1 != 1 & df$filtro2 != 1 & df$Nacimiento < "01/01/1902", 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_fen == 1, c("Existen registros para personas Naturales donde debe registrar la Fecha de Nacimiento."),0))


df <- df %>%
  mutate (C62_fil = case_when (
    df$v_fen == 1 ~ 1,
    TRUE ~ 0))

C62_fil <- df %>% 
  filter(C62_fil == 1)

C62_fil <- C62_fil %>% 
  select(Fila, Cedula,  Sexo, Segmento, Mensaje)
if (nrow(C62_fil) > 0) {
  datatable(C62_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion sexo de cliente

Resumen de Errores:

```{r, echo = FALSE}



#############################################
# validacion 46: S E X O   C L I E N T E 
#############################################


df <- df %>%
  mutate (filtro = ifelse (df$cod_operacion == 14 | df$cod_operacion == 15 , 1, 0))   # df$cod_operacion == 14 (SC) | df$cod_operacion == 15 (SO)
  
  

df <- df %>%
  mutate (v_sexo = ifelse (df$filtro == 1 & df$Instrumentacion == 'TC' & df$Sexo != '0' , 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_sexo == 1, c("Existen registros  para el codigo de operacion e instrumentacion TC, SC, SO, donde Sexo debe ser Cero y envia otro valor."),0))


df <- df %>%
  mutate (C63_fil = case_when (
    df$v_sexo == 1 ~ 1,
    TRUE ~ 0))

C63_fil <- df %>% 
  filter(C63_fil == 1)

C63_fil <- C63_fil %>% 
  select(Fila, Cedula,  Sexo, Segmento, Mensaje)
if (nrow(C63_fil) > 0) {
  datatable(C63_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion edad de cliente

Resumen de Errores:

```{r, echo = FALSE}


#############################################
# validacion 47: E D A D   C L I E N T E 
#############################################


df <- df %>%
  mutate (filtro = ifelse (df$cod_operacion == 14 | df$cod_operacion == 15 , 1, 0)) %>%  # df$cod_operacion == 14 (SC) | df$cod_operacion == 15 (SO)
  mutate (filtro1 = ifelse (df$Instrumentacion == 'TC' | df$Instrumentacion == 'TP', 1, 0)) 


df <- df %>%
  mutate (v_edad = ifelse (df$filtro == 1 & df$filtro1 == 1 & df$Nacimiento > "01/01/1902" , 1, 0))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_edad == 1, c("Existen registros para el codigo de operacion e instrumentacion TC, TP, SC, SO, donde Fecha de Nacimiento debe ser Cero y envia otro valor."),0))


df <- df %>%
  mutate (C64_fil = case_when (
    df$v_edad == 1 ~ 1,
    TRUE ~ 0))

C64_fil <- df %>% 
  filter(C64_fil == 1)

C64_fil <- C64_fil %>% 
  select(Fila, Cedula, Segmento, Mensaje)
if (nrow(C64_fil) > 0) {
  datatable(C64_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

## Verificacion valor adicional y valor asociado

Resumen de Errores:

```{r, echo = FALSE}

#############################################
# validacion 48:
# VALOR ADICIONAL Y VALOR ASOCIADO
#############################################

df <- df %>%
  mutate (filtro = ifelse (df$V_aso != 0 | df$V_adic != 0 , 1, 0))   # df$cod_operacion == 14 (SC) | df$cod_operacion == 15 (SO)
  
  
df <- df %>%
  mutate (v_asoci = ifelse (df$cod_segmento != 6 & df$filtro == 1, 1, 0))


df <- df %>%
  mutate (v_asoci = ifelse (df$cod_segmento == 6 & df$filtro != 1, 2, df$v_asoci))


# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_asoci == 1, c("Existen registros donde el Valor Asociado y el Valor Adicional debe enviar cero 0 y envia otro valor."),0))

df <- df %>%
  mutate(Mensaje = ifelse(df$v_asoci == 2, c("Existen registros para el segmento 6 donde el Valor Asociado y el Valor Adicional deben ser distintos de cero 0."),0))


df <- df %>%
  mutate (C65_fil = case_when (
    df$v_asoci == 1 ~ 1,
    df$v_asoci == 2 ~ 1,
    TRUE ~ 0))

C65_fil <- df %>% 
  filter(C65_fil == 1)

C65_fil <- C65_fil %>% 
  select(Fila, Cedula, Segmento, Mensaje)
if (nrow(C65_fil) > 0) {
  datatable(C65_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}

```

## Verificacion deposito inicial vs monto del credito

Resumen de Errores:

```{r, echo = FALSE}

#############################################
# validacion 49: 
# DEPOSITO INICIAL > A MONTO OPERACION
#############################################


df <- df %>%
  mutate (v_depoin = ifelse (df$Deposito > df$Monto , 1, 0))



# MENSAJES DE ERROR

df <- df %>%
  mutate(Mensaje = ifelse(df$v_depoin == 1, c("Existen registros donde el deposito inicial es mayor al monto de la operacion."),0))



df <- df %>%
  mutate (C66_fil = case_when (
    df$v_depoin == 1 ~ 1,
    TRUE ~ 0))

C66_fil <- df %>% 
  filter(C66_fil == 1)

C66_fil <- C66_fil %>% 
  select(Fila, Cedula, Segmento, Mensaje)
if (nrow(C66_fil) > 0) {
  datatable(C66_fil,
            extensions = 'Buttons',
            options = list(autoWidth = TRUE,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           pageLength = 5,
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) 
} else {
  cat("NO TIENE ERRORES") 
}


```

# TERCERA VALIDACION: VERIFICACION DE CONSISTENCIA DE INFORMACION {.tabset .tabset-fade .tabset-pills}

**Los posibles errores registrados en esta seccion, no implican que la estructura este mal, el objetivo es que la entidad financiera verifique la consistencia de la informacion**

## Depositos a plazo 


Resumen de Errores:

```{r, echo = FALSE}

#############################################
# validacion 50: 
# Tasa de interes menor a 2% y monto superior a USD 5000
#############################################


df1 = df %>% 
  filter(Operacion %in% c("0"),
         CUC %in% c("2103"),
         TEA <= 2.01,
         Monto >= 5000) %>% 
  mutate(Segmento = c("Depositos a plazo"),
         Condicion = c("Tasa de interes menor a 2% y monto superior a USD 5000")) %>% 
  select(Fila, Cedula, 
         Monto = Monto,
         Tasa_Efectiva = TEA,
         Tasa_Nominal = TIR,
         Plazo = Plazo,
         Segmento,
         Condicion) %>% 
  arrange(desc(Tasa_Efectiva),Monto)

if (nrow(df1) > 0) {
datatable(df1,
          extensions = 'Buttons',
          options = list(autoWidth = TRUE,
                         dom = 'Blfrtip',
                         buttons = c('copy', 'excel', 'pdf'),
                         pageLength = 5,
                         #dom = 't' #Quitar el filtro
                         initComplete = JS("function(settings, json) {",
                                           "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                           "}")
                         )
          ) %>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

 ## Global options


```

En el caso de existir tasas que superen que sean superiores al 11% y un plazo inferior a 90 dias

```{r, echo = FALSE}


#########################################################
# validacion 51: 
# Tasa de interes mayor al 11% y plazo inferior a 90 dias
#########################################################

df2 = df %>% 
  filter(Operacion%in% c("0"),
         CUC %in% c("2103"),
         TEA >= 11, 
         Plazo <= 90) %>% 
  mutate(Segmento = c("Depositos a plazo"),
         Condicion = c("Tasa de interes mayor al 11% y plazo inferior a 90 dias")) %>% #Filtra las operaciones pasivas
  select(Fila, Cedula,
         Monto = Monto,
         Tasa_Efectiva = TEA,
         Tasa_Nominal = TIR,
         Plazo = Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(Tasa_Efectiva),Monto)

if (nrow(df2) > 0) {
datatable(df2, 
          #filter = 'top',
          options = list(autoWidth = TRUE,
                         dom = 'Blfrtip',
                         buttons = c('copy', 'excel', 'pdf'),
                         pageLength = 5,
                         #dom = 't' #Quitar el filtro
                         initComplete = JS("function(settings, json) {",
                                           "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                           "}")
                         )
          )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")

} else {
  cat("NO TIENE ERRORES") 
}

```


En el caso de existir tasas que superen que sean superiores al 20%

```{r, echo = FALSE}


#########################################################
# validacion 52: 
# Tasa de interes mayor al 20%
#########################################################

df3 = df %>% 
  filter(Operacion%in% c("0"),
         CUC %in% c("2103"),
         TEA >= 20) %>% 
  mutate(Segmento = c("Depositos a plazo"),
         Condicion = c("Tasa de interes mayor al 20%")) %>% #Filtra las operaciones pasivas
  select(Fila, Cedula,
         Monto = Monto,
         Tasa_Efectiva = TEA,
         Tasa_Nominal = TIR,
         Segmento,
         Condicion) %>%
  arrange(desc(Tasa_Efectiva),Monto)

if (nrow(df3) > 0) {
datatable(df3, 
          #filter = 'top',
          options = list(autoWidth = TRUE,
                         dom = 'Blfrtip',
                         buttons = c('copy', 'excel', 'pdf'),
                         pageLength = 5,
                         #dom = 't' #Quitar el filtro
                         initComplete = JS("function(settings, json) {",
                                           "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                           "}")
                         )
          )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")

} else {
  cat("NO TIENE ERRORES") 
}

```


## Otros Depositos

**Depositos monetarios que generan interes - 21105 , Depositos de ahorro - 210135 - Fondos de tarjetahabientes - 210145 y Operaciones de reporto - 210205**. 


```{r, echo = FALSE}

#########################################################
# validacion 53: 
# Tasa de interes mayor a 2%
#########################################################

df4 = df %>% 
  filter(Operacion%in% c("0"),
        (!CUC %in% c("2103")),
         TEA > 2 ) %>% 
  mutate(Segmento = c("Otros Depositos"),
         Condicion = c("Tasa de interes mayor a 2%")) %>%
  select(Fila, Cedula,
         Monto = Monto,
         Tasa_Efectiva = TEA,
         Tasa_Nominal = TIR,
         Plazo = Plazo, CUC,
         Segmento,
         Condicion) %>%
  arrange(desc(Tasa_Efectiva),Monto)

if (nrow(df4) > 0) {
datatable(df4,
          options = list(autoWidth = TRUE,
                         pageLength = 5,
                         dom = 'Blfrtip',
                         buttons = c('copy', 'excel', 'pdf'),
                         #dom = 't' #Quitar el filtro
                         initComplete = JS("function(settings, json) {",
                                           "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                           "}")
                         )
          )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")

} else {
  cat("NO TIENE ERRORES") 
}

```


# **Validacion Tasas Activas** {.tabset .tabset-fade .tabset-pills}

## Productivo Corporativo 

**Credito Productivo Corporativo** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 6% y mayor a la tasa maxima. 

```{r, echo = FALSE}

#########################################################
# validacion 53: 
# Tasa de interes efectivo menor a 6% y mayor a 9.29%
#########################################################

library(readxl)
Tabla18 <- read_excel(param, 
                     sheet = "Tabla18")

Tabla18 <- Tabla18 %>%
  mutate(idd_1 = paste(Tabla18$mes, Tabla18$anio, Tabla18$Segmento1, sep = "_"))


Tabla18 <- Tabla18 %>% mutate(idd_1 = as.character(Tabla18$idd_1))

df <- df %>%
  mutate(mesa = as.numeric(format(Concesion,'%m'))) %>%
  mutate(anioa = as.numeric(format(Concesion,'%Y')))

  df <- df %>%  mutate(ID = paste(df$mesa, df$anioa, df$Segmento, sep = "_"))

df <- df %>% left_join (Tabla18, by = c(ID = "idd_1"))

df <- df %>%
  mutate(difencia = ifelse (df$TEA < df$Minima, 1, 0)) 

df <- df %>%
  mutate(difencia = ifelse (df$TEA > df$Maxima, 2, df$difencia)) 

# MENSAJES DE ERROR

df5 <- df %>%
  filter(cod_segmento %in% c("1")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Productivo Corporativo"),
         Condicion = c("Tasa de interes efectivo menor a 6% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df5) > 0) {
  datatable(df5,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}


```


**Monto de credito bajos: ** montos inferiores a **USD 100** y un plazo mayor a **90 dias**: 

```{r, echo = FALSE}

#########################################################
# validacion 53: 
# Monto inferior a USD 100 y plazo mayor a 90 dias
#########################################################

df6 = df %>% 
  filter(cod_segmento %in% c("1"),
         Plazo > 90,
         Monto < 100
         ) %>% 
  mutate(Segmento = c("Productivo Corporativo"),
         Condicion = c("Monto inferior a USD 100 y plazo mayor a 90 dias")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto)

if (nrow(df6) > 0) { 
  datatable(df6,
            options = list(autoWidth = TRUE,
                         pageLength = 5,
                         dom = 'Blfrtip',
                         buttons = c('copy', 'excel', 'pdf'),
                         #dom = 't' #Quitar el filtro
                         initComplete = JS("function(settings, json) {",
                                           "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                           "}")
                         )
          ) %>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")

} else {
  cat("NO TIENE ERRORES") 
}
```

## Productivo Empresarial 

**Credito Productivo Empresarial** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 7% y mayor a la **tasa maxima.**


```{r, echo = FALSE}


# MENSAJES DE ERROR

df7 <- df %>%
  filter(cod_segmento %in% c("2")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Productivo Empresarial"),
         Condicion = c("Tasa de interes efectivo menor a 7% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df7) > 0) {
  datatable(df7,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: **Se hace una segmentacion por valores inferiores a **USD 100** y un plazo mayora **90 dias**:

```{r, echo = FALSE}


df8 = df %>% 
  filter(cod_segmento %in% c("2"),
         Monto < 100,
         Plazo > 90
         )%>% 
  mutate(Segmento = c("Productivo Empresarial"),
         Condicion = c("Monto inferior a USD 100 y plazo mayor a 90 dias")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion)%>%
  arrange(desc(TEA),Monto)

if (nrow(df8) > 0) { 
  datatable(df8,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                         )
          )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}


```


## Productivo PYMES 

**Credito Productivo PYMES** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 7% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df9 <- df %>%
  filter(cod_segmento %in% c("3")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Productivo PYMES"),
         Condicion = c("Tasa de interes efectivo menor a 7% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df9) > 0) {
  datatable(df9,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: **Se hace una segmentacion por valores inferiores a **USD 100** y un plazo mayor a **90 dias**:

```{r, echo = FALSE}
df10 = df %>% 
  filter(cod_segmento %in% c("3"),
         Monto < 100,
         Plazo > 90
         ) %>% 
  mutate(Segmento = c("Productivo Pymes"),
         Condicion = c("Monto inferior a USD 100 y plazo mayor a 90 dias:")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df10) > 0) { 
  datatable(df10,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

## Consumo

**Credito de Consumo** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 8% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df11 <- df %>%
  filter(cod_segmento %in% c("4")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Consumo"),
         Condicion = c("Tasa de interes efectivo menor a 8% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df11) > 0) {
  datatable(df11,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: **Se hace una segmentacion por valores inferiores a **USD 10** y un plazo mayor a **180 dias**:

```{r, echo = FALSE}
df12 = df %>% 
  filter(cod_segmento %in% c("4"),
         Monto < 10,
         Plazo > 180
         ) %>% 
  mutate(Segmento = c("Consumo"),
         Condicion = c("Monto inferior a USD 10 y plazo mayor a 180 dias:")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df12) > 0) { 
  datatable(df12,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```


## Educativo

**Credito de Educativo** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 5% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df13 <- df %>%
  filter(cod_segmento %in% c("5")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Educativo"),
         Condicion = c("Tasa de interes efectivo menor a 5% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df13) > 0) {
  datatable(df13,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: **Se hace una segmentacion por valores inferiores a **USD 1000**:

```{r, echo = FALSE}

df14 = df %>% 
  filter(cod_segmento %in% c("5"),
         Monto < 1000
                  ) %>% 
  mutate(Segmento = c("Educativo"),
         Condicion = c("Monto inferior a USD 1000.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df14) > 0) { 
  datatable(df14,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

## Educativo Social

**Credito de Educativo Social** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 5% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df15 <- df %>%
  filter(cod_segmento %in% c("6")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Educativo Social"),
         Condicion = c("Tasa de interes efectivo menor a 5% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df15) > 0) {
  datatable(df15,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: **Se hace una segmentacion por valores inferiores a **USD 1000**:

```{r, echo = FALSE}

df16 = df %>% 
  filter(cod_segmento %in% c("6"),
         Monto < 1000
                  ) %>% 
  mutate(Segmento = c("Educativo Social"),
         Condicion = c("Monto inferior a USD 1000.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df16) > 0) { 
  datatable(df16,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

## Vivienda de Interes Publico

**Credito Vivienda de Interes Publico** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 2% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df17 <- df %>%
  filter(cod_segmento %in% c("7")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Vivienda de Interes Publica"),
         Condicion = c("Tasa de interes efectivo menor a 2% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df17) > 0) {
  datatable(df15,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: **Se hace una segmentacion por valores inferiores a **USD 10000**:

```{r, echo = FALSE}

df18 = df %>% 
  filter(cod_segmento %in% c("7"),
         Monto < 10000
                  ) %>% 
  mutate(Segmento = c("Vivienda de Interes Publica"),
         Condicion = c("Monto inferior a USD 10000.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df18) > 0) { 
  datatable(df18,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

**Plazo menor a 360 dias: ** Se hace una segmentacion por plazos inferiores a **360 dias** :

```{r, echo = FALSE}

df18 = df %>% 
  filter(cod_segmento %in% c("7"),
         Plazo < 360
                  ) %>% 
  mutate(Segmento = c("Vivienda de Interes Publica"),
         Condicion = c("Plazo inferior a 360 dias.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df18) > 0) { 
  datatable(df18,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```


## Vivienda de Interes Social

**Credito Vivienda de Interes Social** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 2% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df19 <- df %>%
  filter(cod_segmento %in% c("8")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Vivienda de Interes Social"),
         Condicion = c("Tasa de interes efectivo menor a 2% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df19) > 0) {
  datatable(df19,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: ** Se hace una segmentacion por valores inferiores a **USD 10000**:

```{r, echo = FALSE}

df20 = df %>% 
  filter(cod_segmento %in% c("8"),
         Monto < 10000
                  ) %>% 
  mutate(Segmento = c("Vivienda de Interes Social"),
         Condicion = c("Monto inferior a USD 10000.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df20) > 0) { 
  datatable(df20,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```


**Plazo menor a 360 dias: ** Se hace una segmentacion por plazos inferiores a **360 dias** :

```{r, echo = FALSE}

df21 = df %>% 
  filter(cod_segmento %in% c("8"),
         Plazo < 360
                  ) %>% 
  mutate(Segmento = c("Vivienda de Interes Social"),
         Condicion = c("Plazo inferior a 360 dias.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df21) > 0) { 
  datatable(df21,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

## Inmobiliario

**Credito Inmobiliario** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 6% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df22 <- df %>%
  filter(cod_segmento %in% c("9")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Inmobiliario"),
         Condicion = c("Tasa de interes efectivo menor a 6% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df22) > 0) {
  datatable(df22,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos: ** Se hace una segmentacion por valores inferiores a **USD 10000**:

```{r, echo = FALSE}

df23 = df %>% 
  filter(cod_segmento %in% c("9"),
         Monto < 10000
                  ) %>% 
  mutate(Segmento = c("Inmobiliario"),
         Condicion = c("Monto inferior a USD 10000.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df23) > 0) { 
  datatable(df23,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```


**Plazo menor a 360 dias: ** Se hace una segmentacion por plazos inferiores a **360 dias** :

```{r, echo = FALSE}

df24 = df %>% 
  filter(cod_segmento %in% c("9"),
         Plazo < 360
                  ) %>% 
  mutate(Segmento = c("Inmobiliario"),
         Condicion = c("Plazo inferior a 360 dias.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df24) > 0) { 
  datatable(df24,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

## Microcredito Minorista

**Credito Microcredito Minorista** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 14% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df25 <- df %>%
  filter(cod_segmento %in% c("10")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Microcredito Minorista"),
         Condicion = c("Tasa de interes efectivo menor a 14% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df25) > 0) {
  datatable(df25,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos y plazo mayores: ** Se hace una segmentacion por valores inferiores a **USD 500** y con un plazo mayor a **540 dias**

```{r, echo = FALSE}

df26 = df %>% 
  filter(cod_segmento %in% c("9"),
         Monto <= 500,
         Plazo >= 540
                  ) %>% 
  mutate(Segmento = c("Microcredito Minorista"),
         Condicion = c("Monto inferior a USD 500 y plazo mayor a 540 dias.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df26) > 0) { 
  datatable(df26,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

## Microcredito Acumulacion Simple

**Credito Microcredito Acumulacion Simple** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 13% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df27 <- df %>%
  filter(cod_segmento %in% c("11")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Microcredito Acumulacion Simple"),
         Condicion = c("Tasa de interes efectivo menor a 13% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df27) > 0) {
  datatable(df27,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos y plazo mayores: ** Se hace una segmentacion por valores inferiores a **USD 500** y con un plazo mayor a **540 dias**

```{r, echo = FALSE}

df28 = df %>% 
  filter(cod_segmento %in% c("11"),
         Monto <= 500,
         Plazo >= 540
                  ) %>% 
  mutate(Segmento = c("Microcredito Acumulacion Simple"),
         Condicion = c("Monto inferior a USD 500 y plazo mayor a 540 dias.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df28) > 0) { 
  datatable(df28,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```

## Microcredito Acumulacion Ampliada

**Credito Microcredito Acumulacion Ampliada** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 11% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df29 <- df %>%
  filter(cod_segmento %in% c("12")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Microcredito Acumulacion Ampliada"),
         Condicion = c("Tasa de interes efectivo menor a 11% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df29) > 0) {
  datatable(df29,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos y plazo mayores: ** Se hace una segmentacion por valores inferiores a **USD 500** y con un plazo mayor a **540 dias**

```{r, echo = FALSE}

df30 = df %>% 
  filter(cod_segmento %in% c("12"),
         Monto <= 500,
         Plazo >= 540
                  ) %>% 
  mutate(Segmento = c("Microcredito Acumulacion Simple"),
         Condicion = c("Monto inferior a USD 500 y plazo mayor a 540 dias.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df30) > 0) { 
  datatable(df30,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```


## Inversion Publica

**Credito Inversion Publica** 

**Tasa de Interes bajas y sobre la Tasa Maxima: **Se hace una segmentacion por tipo de interes (efectivo) menor a 6% y mayor a la **tasa maxima.**


```{r, echo = FALSE}

df31 <- df %>%
  filter(cod_segmento %in% c("13")) %>%
  filter(difencia > 0) %>%
  mutate(Segmento = c("Inversion Publica"),
         Condicion = c("Tasa de interes efectivo menor a 6% y mayor a la Tasa Maxima.")) %>%
          select(Fila,
                 Cedula,
                 Monto,
                 Tasa_Maxima = Maxima,
                 TEA,
                 TIR,
                 Plazo,
                 Segmento,
                 Condicion) %>%
              arrange(desc(TEA),Monto)
                        


if (nrow(df31) > 0) {
  datatable(df31,
            options = list(autoWidth = TRUE,
                           pageLength = 5,
                           dom = 'Blfrtip',
                           buttons = c('copy', 'excel', 'pdf'),
                           #dom = 't' #Quitar el filtro
                           initComplete = JS("function(settings, json) {",
                                             "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                                             "}")
            )
  ) %>% 
    formatStyle("Condicion","white-space"="nowrap")%>% 
    formatStyle("Segmento","white-space"="nowrap")
  
} else {
  cat("NO TIENE ERRORES") 
}

```

**Monto de credito bajos y plazo mayores: ** Se hace una segmentacion por valores superior a **USD 3.000.000**

```{r, echo = FALSE}

df32 = df %>% 
  filter(cod_segmento %in% c("13"),
         Monto >= 3000000
                  ) %>% 
  mutate(Segmento = c("Inversion Publica"),
         Condicion = c("Monto superior a USD 3.000.000.")) %>%
  select(Fila,
         Cedula,
         Monto,
         TEA,
         TIR,
         Plazo,
         Segmento,
         Condicion) %>%
  arrange(desc(TEA),Monto) 

if (nrow(df32) > 0) { 
  datatable(df32,
            options = list(autoWidth = TRUE,
            pageLength = 5,
            dom = 'Blfrtip',
            buttons = c('copy', 'excel', 'pdf'),
            #dom = 't' #Quitar el filtro
            initComplete = JS("function(settings, json) {",
                              "$(this.api().table().header()).css({'background-color': '#000', 'color': '#fff'});",
                              "}")
                           )
            )%>% 
  formatStyle("Condicion","white-space"="nowrap")%>% 
  formatStyle("Segmento","white-space"="nowrap")
} else {
  cat("NO TIENE ERRORES") 
}

```


<div/>