#' Effet de l'introduction d'une treizième rente AVS
#'
#' @description  Effet de l'introduction d'une treizième rente AVS. On fait la
#' somme sur tous les individus d'une rente vieillesse simple mensuelle. Elle
#' évolue avec l'évolution de la rente minimale et suit le même modèle que selon
#' le droit en vigueur. Comme on filtre pour les rentes vieillesse uniquement, on
#' calculer la valuer d'ajustement avant les filtres et on l'applique ensuite
#' sur tous les termes de la somme des rentes.
#'
#' @param PARAM_GLOBAL un dataframe d'une seule ligne, dont nous utilisons les
#'   paramètres suivants:
#'   - `jahr_rr`: Année du registre des rentes analysé
#'
#' @param PARAM_MISC_13RENTEAVS un dataframe d'une seule ligne retravaillé dans
#' \code{\link{wrap_ahv_massnahmen}}, dont nous utilisons les paramètres suivants:
#'  - `annee_debut`: Année de l'entrée en vigueur de la mesure
#'  - `filtre_rvieillesse_on`: si TRUE, on filtre les rentes vieillesses uniquement.
#'  - `annee_fin`: Année de la fin de la mesure
#'  - `nouveaux_rentiers_vieillesse`: si TRUE, on filtre nouveaux rentiers qui
#'  reçoivent une rente vieillesse uniquement.
#'  - `annee_debut_nouveaux_rentiers`: Année de la première volée des rentiers
#'  profitant de la mesure.
#'  - `annee_fin_nouveaux_rentiers`: Année de la dernière volée des rentiers
#'  profitant de la mesure.
#'  - `facteur`: Facteur de la somme des rentes (1/12 = 8.33% correspond à
#'  une rente mensuelle complète supplémentaire).
#'
#' @param FACTEURS_CROISSANCE_EPRC_PROJETES_FLEX_GO un data frame contenant les
#' facteurs de croissance des EPRC projetes calculé dans la fonction
#' \code{\link{mod_facteurs_crois_eprc_proj_flex}}.
#'
#' @param AHV_ABRECHNUNG data frame contenant le décompte de la CdC présentant
#' les chiffres de l'AVS de 2011 à jahr_abr, cf. fonction
#' \code{\link{mod_input_ahv_abrechnung}}.
#'
#' @param FACTEUR_CONV_EPRC un data frame contenant les
#' facteurs de conversiondes EPRC en individus et inversement
#' \code{\link{mod_facteur_conv_eprc}}.
#'
#' @param RENTENENTWICKLUNG data frame contenant l'évolution de la rente
#' minimale AVS.
#'
#' @param RR_AVS data frame contenant les données des assurés du registre des
#' rentes.
#'
#' @param CUMPROD_PARAM_ERSTRENTE data frame contenant les facteurs de
#' correction du niveau des premières rentes calculés dans la fonction
#' \code{\link{mod_scenario_erstrenten}}.
#'
#' @param list `tidylist`. Elément obligatoire dans tous les modules. Au lieu de
#'   fournir des dataframes au module, il est possible de l'alimenter uniquement
#'   avec une`tidylist` qui contient les tidy dataframes. Tous les datframes
#'   listés doivent être présents dans la tidylist, avec le même nom. De plus,
#'   la `tidylist` peut aussi contenir des dataframes qui ne sont pas utilisés
#'   par le module.
#'
#' @references \href{https://www.bsv.admin.ch/dam/bsv/fr/dokumente/ahv/finanzperspektiven/validierung-modellansatz-ahv.pdf.download.pdf/2018_07_09_definitif_ld_rapport_ofas.pdf}{Rapport de Prof. Dr Laurent Donzé}
#'
#' @references \href{https://www.bsv.admin.ch/bsv/fr/home/assurances-sociales/ahv/finanzen-ahv.html}{Guide de lecture}
#'
#' @return
#' - `DELTA_AUSG_RENT_TOT`
#'
#' @author [MAS BSV](mailto:sekretariat.mas@bsv.admin.ch)
#'
#' @export
#'

mod_opt_misc_13renteavs <- function(tl_inp_massn) {

    print("Run module: mod_opt_misc_13renteavs")


    PARAM_GLOBAL <- tl_inp_massn$PARAM_GLOBAL
    PARAM_MISC_13RENTEAVS <- tl_inp_massn$PARAM_MISC_13RENTEAVS
    RANGE <- tl_inp_massn$RANGE
    A_DAT <-   tl_inp_massn$A_DAT
    HIST_MORT_RENT <-   tl_inp_massn$HIST_MORT_RENT
    RENTENENTWICKLUNG <-   tl_inp_massn$RENTENENTWICKLUNG
    WIDOW_BASISMODELL <-   tl_inp_massn$WIDOW_BASISMODELL
    AHV_ABRECHNUNG_DEF <-   tl_inp_massn$AHV_ABRECHNUNG_DEF
    AHV_AUSGABEN_GO <- tl_inp_massn$AHV_AUSGABEN



      TOT_AUSG <- AHV_AUSGABEN_GO %>%
        select(jahr, aus_tot)

      TOT_AUSG_AHV13 <- mod_ahv_ausgaben_basismodell(
        PARAM_GLOBAL = PARAM_GLOBAL,
        RANGE = RANGE,
        A_DAT = A_DAT,
        HIST_MORT_RENT = HIST_MORT_RENT,
        RENTENENTWICKLUNG = RENTENENTWICKLUNG,
        AHV_ABRECHNUNG_DEF = AHV_ABRECHNUNG_DEF,
        WIDOW_BASISMODELL = WIDOW_BASISMODELL,
        ahv13 = TRUE)

    DELTA_AUSG_RENT_TOT <-  TOT_AUSG %>%
      left_join(TOT_AUSG_AHV13 %>%
                  rename(aus_tot_ahv13 = aus_tot),
                by = "jahr") %>%
      mutate(wert = (aus_tot_ahv13 - aus_tot)*1e-6) %>%
      filter(jahr >= PARAM_GLOBAL$jahr_abr &
               jahr <= PARAM_GLOBAL$jahr_ende) %>%
      select(jahr, wert)

  return(
      list(
          DELTA_AUSG_RENT_TOT = DELTA_AUSG_RENT_TOT
      )
  )

}
