#' @title Run script zur Erstellung der AHV-Finanzhaushalte
#'
#' @description Liest Input Daten und Parameter, berechnet den Finanzhaushalt,
#' schreibt den Finanzhaushalt in Excel-Dateien und Details in CSV-Dateien.
#'
#' @param path_param vector containing container path.
#'
#' @param path_inp vector containing input container path.
#' 
#' @param path_out vector containing output path.
#'#'
#' @return path_out_identifier path to output container
#'
#' @author [MAS BSV](mailto:sekretariat.mas@bsv.admin.ch)
#'
#' @export


run_ahv <- function(path_param, path_inp, path_out) {

  # Batch run.
  if (length(path_param) > 1) 
    return(multi_run(path_param, run_ahv, path_inp, path_out))

  # Parameterwerte und Input-Daten einlesen.
  tl_inp <- 
    mod_read_data(path_param, path_inp, data_folders = c("allgemein", "ahv"))
        
  # Modul zum überprüfen von Parameterwerten und Setzen von Defaults falls benötigte 
  # Parameter unbestimmt sind.
  tl_inp$PARAM_GLOBAL <- 
    mod_ahv_param_global(PARAM_GLOBAL = tl_inp$PARAM_GLOBAL,
                         ECKWERTE = tl_inp$ECKWERTE,
                         ESTV = tl_inp$ESTV,
                         AHV_ABRECHNUNG_PROV= tl_inp$AHV_ABRECHNUNG_PROV,
                         AHV_ABRECHNUNG_DEF = tl_inp$AHV_ABRECHNUNG_DEF,
                         IK = tl_inp$IK,
                         RR_AVS = tl_inp$RR_AVS,
                         BEV_BESTAND = tl_inp$BEV_BESTAND,
                         IV_SCHULD_SCEN = tl_inp$IV_SCHULD_SCEN)
  
  # Berechnung der AHV-Projektionen.
  tl_out_ahv <- 
    wrap_ahv(tl_inp, path_param)

  # # Remplacer les PARAM-dataframes in tl_inp car certains
  # # paramètres sont modifiés/ajoutés dans wrap_ahv_massnahmen
  # tl_inp <- 
  #   c(tl_inp[!grepl("^PARAM", names(tl_inp))], 
  #     tl_out_ahv[grepl("^PARAM",names(tl_out_ahv))])

  # output
  return(mod_out_ahv(path_param, path_out, tl_inp, tl_out_ahv))
}
