bkp/_src/octk_0.4.6/R/psc.R

# Script per la gestione dei PSC

#' Inizializza PSC
#'
#' Inizializza global environment per flusso di lavoro PSC
#' 
#' @param PSC Folder di supporto per dati PSC
#' @return Carica i file necessario al flusso nel global environment
#' @note ...
init_psc <- function(PSC=NULL) {
  
  if (is.null(PSC)) {
    PSC <- file.path(DRIVE, "DATI", "PSC")
  } 
  
  PSC <<- PSC
    
  matrix_po_psc <<- read_csv2(file.path(PSC, "info", "matrix_po_psc.csv")) %>%
    mutate(ID_PSC = paste0("PSC_", gsub(" ", "_", PSC))) %>% 
    # fix per codice programma con "0X"
    mutate(OC_CODICE_PROGRAMMA = case_when(X_CICLO == "2000-2006" & nchar(OC_CODICE_PROGRAMMA) == 1 ~ str_pad(OC_CODICE_PROGRAMMA, 2, pad = "0"),
                                           TRUE ~ OC_CODICE_PROGRAMMA))
  # MEMO: non contiene direttrici ferroviarie e salerno reggio calabria da gestire a parte con po_naz
  
  po_naz <<- read_csv2(file.path(PSC, "info", "ricodifica_po_naz.csv")) 
  
  matrix_06 <<- read_xlsx(file.path(PSC, "info", "mapping.xlsx"), sheet = "matrix_06")
  matrix_713 <<- read_xlsx(file.path(PSC, "info", "mapping.xlsx"), sheet = "matrix_713")
  matrix_1420 <<- read_xlsx(file.path(PSC, "info", "mapping.xlsx"), sheet = "matrix_1420", col_types = rep("text", 8))
  
  matrix_temi_settori <<- read_csv2(file.path(PSC, "info", "matrix_temi_settori.csv"))
  
  art44 <<- read_csv2(file.path(PSC, "info", "art44_progetti_20201209.csv"), guess_max = 70000) %>% 
    # ricodifica opos
    separate(COD_OPOS_NEW, into = c("A", "B"), sep = "\\.", remove = TRUE) %>% 
    mutate(COD_OPOS_NEW = paste(A, str_pad(B, 2, "left", "0"), sep = ".")) %>% 
    select(-A, -B) %>% 
    mutate(COD_OPOS_NEW = case_when(COD_OPOS_NEW == "NA"~ NA_character_,
                                    COD_OPOS_NEW == "NA.NA" ~ NA_character_,
                                    TRUE ~ COD_OPOS_NEW)) %>% 
    # fix per codice programma con "0X"
    mutate(OC_CODICE_PROGRAMMA = case_when(CICLO == "0006" & nchar(OC_CODICE_PROGRAMMA) == 1 ~ str_pad(OC_CODICE_PROGRAMMA, 2, pad = "0"),
                                           TRUE ~ OC_CODICE_PROGRAMMA))
  
}


#' Dati FSC per elaborazioni PSC
#'
#' Crea il file con operazioni FSC compatibile con PSC
#' 
#' @param bimestre Bimestre di riferimento
#' @param matrix_po_psc Matrice di riconciliazione PO - PSC
#' @param po_naz Ricodifica programmi nazionali su base regionale (direttrici ferroviarie e autostrada SA-RC)
#' @param art44 Dati di base per istruttoria art44 al 20200630
#' @param matrix_1420 Matrice di riconciliazione tra temi prioritari FSC 2014-2020 e settori di intervento PSC
#' @param matrix_713 Matrice di riconciliazione tra obiettivi specifici QSN 2007-2013 e settori di intervento PSC
#' @param matrix_temi_settori Dominio per aree tematiche e settori di intervento PSC
#' @param progetti Dataset progetti da load_progetti(visualizzati = FALSE, light = FALSE). Attennzione: serve light = FALSE perché non contiene finanziamento privato
#' @return File "dati_psc_BIMESTRE.csv" in TEMP 
#' @note ...
prep_dati_psc_bimestre <- function(bimestre, matrix_po_psc, po_naz, art44, 
                                   matrix_1420, matrix_713, matrix_temi_settori, progetti=NULL) {
  
  if (is.null(progetti)) {
    progetti <- load_progetti(bimestre, visualizzati = FALSE, light = FALSE)
    # MEMO: serve light = FALSE perché non contiene finanziamento privato
  }
  
  PSC <- file.path(DRIVE, "DATI", "PSC")
  
  print(bimestre)
  # rettifica DATA per bimestri diversi
  bimestre <- bimestre
  DATA <- paste0(str_sub(DATA, 1, nchar(DATA)-8), bimestre)
  # print(DATA)
  
  # ------------------ load dati ------------------ #
  
  # operazioni <- load_operazioni(bimestre, usa_meuro = FALSE) 
  # TODO: qui c'è chiamata interna a DATA che non viene ridefinita, forse perché in cache?
  operazioni <- read_csv2(file.path(DATA, paste0("operazioni_light_", bimestre, ".csv")), guess_max = 1e+06) %>% 
    # filter(OC_FLAG_VISUALIZZAZIONE == 0) %>% 
    get_simply_non_loc() %>% 
    refactor_ambito() %>% 
    refactor_ciclo()
  
  operazioni_1420 <- read_sas(file.path(DATA, "oper_pucok_preesteso.sas7bdat")) %>%
    filter(STATO == 1, oc_cod_fonte == "FSC1420") %>%
    rename(COD_LOCALE_PROGETTO = cod_locale_progetto,
           OC_CODICE_PROGRAMMA = oc_cod_programma,
           COD_SETTORE_STRATEGICO_FSC = fsc_settore_strategico,
           # DESCR_SETTORE_STRATEGICO_FSC = fsc_descr_settore_strategico,
           COD_ASSE_TEMATICO_FSC = fsc_asse_tematico
           # DESCR_ASSE_TEMATICO_FSC = fsc_descr_asse_tematico
    ) %>%
    distinct(COD_LOCALE_PROGETTO,
             OC_CODICE_PROGRAMMA,
             COD_SETTORE_STRATEGICO_FSC, 
             # DESCR_SETTORE_STRATEGICO_FSC,
             COD_ASSE_TEMATICO_FSC, 
             # DESCR_ASSE_TEMATICO_FSC
    ) %>%
    # fix 
    mutate(COD_SETTORE_STRATEGICO_FSC = case_when(COD_SETTORE_STRATEGICO_FSC == "4.a" ~ "4", # matera
                                                  COD_SETTORE_STRATEGICO_FSC == "4.b" ~ "4", # matera
                                                  TRUE ~ COD_SETTORE_STRATEGICO_FSC),
           COD_ASSE_TEMATICO_FSC = case_when(COD_ASSE_TEMATICO_FSC == "01" ~ "1", # pozzuoli
                                             COD_ASSE_TEMATICO_FSC == "2:::3:::5" ~ "2", # mattm
                                             COD_ASSE_TEMATICO_FSC == "1:::2:::3:" ~ "2", # mattm
                                             COD_ASSE_TEMATICO_FSC == "1:::2" ~ "2", # mise
                                             TRUE ~ COD_ASSE_TEMATICO_FSC))
  
  temp <- read_sas(file.path(DATA, "oper_fltok_preesteso.sas7bdat")) 
  
  if ("OC_COD_PROGRAMMA" %in% names(temp)){
    operazioni_713 <- temp %>% 
      select(COD_LOCALE_PROGETTO = cod_locale_progetto,
             QSN_CODICE_OBIETTIVO_SPECIFICO = qsn_codice_obiettivo_specifico, 
             OC_CODICE_PROGRAMMA = OC_COD_PROGRAMMA)
  } else if ("OC_CODICE_PROGRAMMA" %in% names(temp)) {
    operazioni_713 <- temp %>% 
      select(COD_LOCALE_PROGETTO = cod_locale_progetto,
             QSN_CODICE_OBIETTIVO_SPECIFICO = qsn_codice_obiettivo_specifico, 
             OC_CODICE_PROGRAMMA)
  }
  
  
  
  # ------------------ elaborazione ------------------ #
  
  appo <- operazioni %>% 
    # filter(x_AMBITO == "FSC") %>% 
    # inner_join(matrix_po_psc, by = "OC_CODICE_PROGRAMMA") %>% 
    # # ricodifica piani nazionali (direttrici ferroviarie-2007IT001FA005 e salerno reggio calabria-2007AN0021FA01)
    # left_join(po_naz,
    #           by = "COD_LOCALE_PROGETTO") %>% 
    # mutate(ID_PSC = if_else(is.na(ID_PSC.y), ID_PSC.x, ID_PSC.y),
    #        PSC = if_else(is.na(PSC.y), PSC.x, PSC.y)) %>% 
    # select(-ID_PSC.y, -ID_PSC.x, -PSC.x, -PSC.y) %>% 
    filter(x_AMBITO == "FSC") %>% 
    # ricodifica direttrici ferroviarie e salerno-reggio calabria
    left_join(po_naz, # %>% 
              # select(-OC_CODICE_PROGRAMMA),
              by = c("COD_LOCALE_PROGETTO", "OC_CODICE_PROGRAMMA")) %>% 
    # codice psc
    left_join(matrix_po_psc %>% 
                distinct(OC_CODICE_PROGRAMMA, ID_PSC), 
              by = "OC_CODICE_PROGRAMMA") %>% 
    mutate(ID_PSC = if_else(is.na(ID_PSC.y), ID_PSC.x, ID_PSC.y)) %>% 
    select(-ID_PSC.y, -ID_PSC.x) %>% 
    # label psc
    left_join(matrix_po_psc %>% 
                distinct(ID_PSC, PSC), 
              by = "ID_PSC") %>% 
    filter(!is.na(ID_PSC)) %>% 
    # left_join(progetti %>%
    #             select(COD_LOCALE_PROGETTO, OC_FINANZ_TOT_PUB_NETTO),
    #           by = "COD_LOCALE_PROGETTO") %>% 
    left_join(art44 %>% 
                select(COD_LOCALE_PROGETTO, OC_CODICE_PROGRAMMA, COD_TEMA_NEW, DESCR_TEMA_NEW, 
                       COD_OPOS_NEW, DESCR_OPOS_NEW),
              by = c("COD_LOCALE_PROGETTO", "OC_CODICE_PROGRAMMA")) %>% 
    mutate(#COD_AREA_TEMATICA = COD_TEMA_NEW,
      #DESCR_AREA_TEMATICA = DESCR_TEMA_NEW,
      COD_SETTORE_INTERVENTO = COD_OPOS_NEW,
      # DESCR_SETTORE_INTERVENTO = DESCR_OPOS_NEW
    ) %>% 
    # integra temi mancanti per 1420
    left_join(operazioni_1420,
              by = c("COD_LOCALE_PROGETTO", "OC_CODICE_PROGRAMMA")) %>% 
    left_join(matrix_1420 %>% 
                select(COD_SETTORE_STRATEGICO_FSC, COD_ASSE_TEMATICO_FSC, COD_SETTORE_INTERVENTO),
              by = c("COD_SETTORE_STRATEGICO_FSC", "COD_ASSE_TEMATICO_FSC")) %>% 
    # TODO: qui va fix per ferrovie vs strade
    mutate(COD_SETTORE_INTERVENTO = if_else(is.na(COD_SETTORE_INTERVENTO.x), COD_SETTORE_INTERVENTO.y, COD_SETTORE_INTERVENTO.x)) %>% 
    select(-COD_SETTORE_INTERVENTO.x, -COD_SETTORE_INTERVENTO.y) %>% 
    # integra temi mancanti per 713
    left_join(operazioni_713,
              by = c("COD_LOCALE_PROGETTO" , "OC_CODICE_PROGRAMMA")) %>% 
    left_join(matrix_713 %>% 
                select(QSN_CODICE_OBIETTIVO_SPECIFICO, COD_SETTORE_INTERVENTO),
              by = "QSN_CODICE_OBIETTIVO_SPECIFICO") %>% 
    # TODO: qui va fix per ferrovie vs strade
    mutate(COD_SETTORE_INTERVENTO = if_else(is.na(COD_SETTORE_INTERVENTO.x), COD_SETTORE_INTERVENTO.y, COD_SETTORE_INTERVENTO.x)) %>% 
    select(-COD_SETTORE_INTERVENTO.x, -COD_SETTORE_INTERVENTO.y) %>% 
    # sovrascrive tema per tutti
    left_join(matrix_temi_settori, 
              by = "COD_SETTORE_INTERVENTO") %>% 
    mutate(AREA_TEMATICA = paste0(COD_AREA_TEMATICA, "-", DESCR_AREA_TEMATICA),
           SETTORE_INTERVENTO = paste0(COD_SETTORE_INTERVENTO, "-", DESCR_SETTORE_INTERVENTO)) 
  
  # chk classi
  # chk <- appo %>% count(AREA_TEMATICA, SETTORE_INTERVENTO)
  # appo %>% count(AREA_TEMATICA) #134 progetti con NA in patto sicilia e pugli
  # 
  # chk <- appo %>% filter(AREA_TEMATICA == "NA-NA")
  # chk2 <- appo %>%
  #   semi_join(chk, by = "COD_LOCALE_PROGETTO") %>% 
  #   select(COD_LOCALE_PROGETTO, x_PROGRAMMA, x_CICLO, COD_SETTORE_STRATEGICO_FSC, COD_ASSE_TEMATICO_FSC, QSN_CODICE_OBIETTIVO_SPECIFICO)
  # 
  # write_csv2(chk2, file.path(TEMP, "chk_classi_missing.csv"))
  
  # debug classi
  print(appo %>% count(AREA_TEMATICA))
  chk <- appo %>% filter(AREA_TEMATICA == "NA-NA")
  write_csv2(chk, file.path(TEMP, paste0("chk_classi_missing_", bimestre, ".csv")))
  
  
  # calcola costo realizzato
  appo1 <- appo %>% 
    # filter(OC_FLAG_VISUALIZZAZIONE == 0) %>% 
    left_join(progetti %>% 
              select(COD_LOCALE_PROGETTO, COSTO_REALIZZATO, OC_FINANZ_STATO_FSC_NETTO, OC_FINANZ_TOT_PUB_NETTO, OC_FINANZ_PRIVATO_NETTO),
              by = "COD_LOCALE_PROGETTO") %>% 
    mutate_if(is.numeric, replace_na, replace = 0) %>% 
    mutate(FINANZ_TOT = OC_FINANZ_TOT_PUB_NETTO + OC_FINANZ_PRIVATO_NETTO,
           # x = OC_FINANZ_STATO_FSC_NETTO/FINANZ_TOT,
           x = COE/FINANZ_TOT,
           COSTO_REALIZZATO_2 = COSTO_REALIZZATO * x)
  
  dim(appo)[1] == dim(appo1)[1]
  
  
  # appo1 %>% 
  #   summarise(COE = sum(COE, na.rm = TRUE),
  #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
  #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO, na.rm = TRUE),
  #             OC_FINANZ_STATO_FSC_NETTO = sum(OC_FINANZ_STATO_FSC_NETTO, na.rm = TRUE),
  #             OC_FINANZ_TOT_PUB_NETTO = sum(OC_FINANZ_TOT_PUB_NETTO, na.rm = TRUE),
  #             COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
  # A tibble: 1 x 6
  # COE      COE_PAG COSTO_REALIZZATO OC_FINANZ_STATO_FSC_NETTO OC_FINANZ_TOT_PUB_NETTO COSTO_REALIZZATO_2
  # <dbl>        <dbl>            <dbl>                     <dbl>                   <dbl>              <dbl>
  # 49290164401. 10040154286.     21986749485.              50629969321.            68164313459.       15828065459.
  
  # report per programma
  # chk <- appo1 %>%
  #   group_by(ID_PSC, PSC, OC_CODICE_PROGRAMMA, x_PROGRAMMA, x_CICLO) %>%
  #   summarise(COE = sum(COE, na.rm = TRUE),
  #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
  #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
  #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
  
  # accoda 06
  temp <- read_csv2(file.path(PSC, "sgp", paste0("dati_sgp_", bimestre, ".csv")), col_types = "ccccccccccddddccd")
  
  out <- appo1 %>%
    select(COD_LOCALE_PROGETTO, 
           CUP, 
           OC_TITOLO_PROGETTO,
           x_CICLO,
           x_PROGRAMMA,
           OC_CODICE_PROGRAMMA,
           x_MACROAREA,
           AREA_TEMATICA, 
           SETTORE_INTERVENTO,
           OC_STATO_PROCEDURALE, 
           COE, 
           COE_IMP,
           COE_PAG,
           COE_CR = COSTO_REALIZZATO_2,
           PSC,
           ID_PSC,
           OC_FLAG_VISUALIZZAZIONE) %>% 
    bind_rows(temp)
  
  # fix psc
  out <- fix_id_psc_15_digit(out, var1="ID_PSC")
  out <- fix_id_psc_ministeri(out, var1="PSC")
  
  # fix temi
  # TODO: ora è in main script, forse da aggiungere qui
  
  write.csv2(out, file.path(PSC, "psc", paste0("dati_psc_", bimestre, ".csv")), row.names = FALSE)
  
}

#' Dati SGP per elaborazioni PSC
#'
#' Crea dati SGP compatibili per elaborazioni PSC partendo da repository in DATI > SGP
#' 
#' @param bimestre Bimestre di riferimento
#' @param filename Nome file xlsx in DATI > SGP
#' @param matrix06 Matrice di riconciliazione tra denominazione APQ 2000-20006 e settori di intervento PSC
#' @param chk_today Parametro da passare a get_stato_attuazione(), con formato "2021-02-28"
#' @return File "dati_sgp_BIMESTRE.csv" in TEMP 
#' @note ...
prep_dati_sgp_bimestre <- function(bimestre, filename, matrix_06, chk_today) {
  # filename <- "Estrazioni dati e calcolo indicatori _28_02_21_v01.xlsx"
  # filename <- "estrazione00_06.xlsx"
  # chk_today <- as.POSIXct("2021-02-28")
  # chk_today <- as.POSIXct("2021-04-30")
  
  PSC <- file.path(DRIVE, "DATI", "PSC")
  
  print(bimestre)
  DATA <- paste0(str_sub(DATA, 1, nchar(DATA)-8), bimestre)
  
  SGP <- file.path(DRIVE, "DATI", "SGP", bimestre)
  appo <- read_xlsx(file.path(SGP, filename), guess_max = 25000)
  
  # addattamento per versioni diverse
  if ("TITOLO_PROGETTO" %in% names(appo)) {
    appo <- appo %>% 
      rename(TITOLO = TITOLO_PROGETTO)
  }
  
  if ("CODICE_STRUMENTO...2" %in% names(appo)) {
    appo <- appo %>% 
      rename(CODICE_STRUMENTO = CODICE_STRUMENTO...2)
  }
  
  if ("COSTO_REALIZZATO...103" %in% names(appo)) {
    appo <- appo %>% 
      rename(COSTO_REALIZZATO = COSTO_REALIZZATO...103)
  }
  
  if ("DATA_FINE_EFFETTIVA_PROGETT_DEFINITIVA...183" %in% names(appo)) {
    appo <- appo %>% 
      rename(DATA_FINE_EFFETTIVA_PROGETT_DEFINITIVA = DATA_FINE_EFFETTIVA_PROGETT_DEFINITIVA...183)
  }
  
  if (!("DATA_FINE_EFFETTIVA_STUDIO_FATTIBILITA" %in% names(appo))) {
    appo <- appo %>% 
      mutate(DATA_FINE_EFFETTIVA_STUDIO_FATTIBILITA = NA)
  }
  
  
  if (!("IMPORTO_REGIONALE" %in% names(appo))) {
    temp <- read_csv2(file.path(INPUT, "quota_regionale_sgp_20191231.csv"))
    
    appo <- appo %>% 
      left_join(temp, by = "COD_LOCALE_PROGETTO")
    
    # mutate(IMPORTO_NAZIONALE = NA, 
    #        IMPORTO_REGIONALE = NA, 
    #        IMPORTO_NON_DEFINITO = NA)
    message("ATTENZIONE: manca quota regionale, la importo da 20191231")
  } 
  
  appo1 <- appo
  # appo1 <- appo %>% 
  #   select(COD_LOCALE_PROGETTO, 
  #          CUP,
  #          TITOLO, 
  #          DENOMINAZIONE_INTESA, CODICE_STRUMENTO,
  #          FINANZIAMENTO_FSC_NETTO, FINANZIAMENTO_TOTALE_PUBBLICO_NETTO, 
  #          TOTALE_FINANZIAMENTI_PVT, TOTALE_ECONOMIE_PVT, 
  #          TOTALE_FINANZIAMENTI, TOTALE_ECONOMIE,
  #          IMPORTO_NAZIONALE, IMPORTO_REGIONALE, IMPORTO_NON_DEFINITO,
  #          COSTO_REALIZZATO,
  #          IMPEGNI,
  #          PAGAMENTI_TOTALI, PAGAMENTI_FSC)
  
  # elab
  appo2 <- appo1 %>% 
    mutate(CICLO = "2000-2006") %>% 
    mutate(OC_CODICE_PROGRAMMA = case_when(DENOMINAZIONE_INTESA == "ABRUZZO" ~ "33",
                                           DENOMINAZIONE_INTESA == "BASILICATA" ~ "37",
                                           DENOMINAZIONE_INTESA == "CALABRIA" ~ "38",
                                           DENOMINAZIONE_INTESA == "CAMPANIA" ~ "35",
                                           DENOMINAZIONE_INTESA == "EMILIA-ROMAGNA" ~ "28",
                                           DENOMINAZIONE_INTESA == "FRIULI-VENEZIA GIULIA" ~ "26",
                                           DENOMINAZIONE_INTESA == "LAZIO" ~ "32",
                                           DENOMINAZIONE_INTESA == "LIGURIA" ~ "27",
                                           DENOMINAZIONE_INTESA == "LOMBARDIA" ~ "01",
                                           DENOMINAZIONE_INTESA == "MARCHE" ~ "04",
                                           DENOMINAZIONE_INTESA == "MOLISE" ~ "34",
                                           DENOMINAZIONE_INTESA == "P.A. BOLZANO" ~ "41",
                                           DENOMINAZIONE_INTESA == "P.A. TRENTO" ~ "40",
                                           DENOMINAZIONE_INTESA == "PIEMONTE" ~ "21",
                                           DENOMINAZIONE_INTESA == "PUGLIA" ~ "36",
                                           DENOMINAZIONE_INTESA == "SARDEGNA" ~ "05",
                                           DENOMINAZIONE_INTESA == "SICILIA" ~ "39",
                                           DENOMINAZIONE_INTESA == "TOSCANA" ~ "02",
                                           DENOMINAZIONE_INTESA == "UMBRIA" ~ "03",
                                           DENOMINAZIONE_INTESA == "VALLE D'AOSTA" ~ "22",
                                           DENOMINAZIONE_INTESA == "VENETO" ~ "25")) %>% 
    mutate(MACROAREA = case_when(DENOMINAZIONE_INTESA == "ABRUZZO" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "BASILICATA" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "CALABRIA" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "CAMPANIA" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "EMILIA-ROMAGNA" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "FRIULI-VENEZIA GIULIA" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "LAZIO" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "LIGURIA" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "LOMBARDIA" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "MARCHE" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "MOLISE" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "P.A. BOLZANO" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "P.A. TRENTO" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "PIEMONTE" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "PUGLIA" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "SARDEGNA" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "SICILIA" ~ "Mezzogiorno",
                                 DENOMINAZIONE_INTESA == "TOSCANA" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "UMBRIA" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "VALLE D'AOSTA" ~ "Centro-Nord",
                                 DENOMINAZIONE_INTESA == "VENETO" ~ "Centro-Nord")) %>% 
    # psc
    left_join(matrix_po_psc %>% 
                distinct(OC_CODICE_PROGRAMMA, ID_PSC, PSC), 
              by = "OC_CODICE_PROGRAMMA") %>% 
    # tema
    left_join(art44 %>% 
                select(COD_LOCALE_PROGETTO, OC_CODICE_PROGRAMMA, COD_TEMA_NEW, DESCR_TEMA_NEW, 
                       COD_OPOS_NEW, DESCR_OPOS_NEW),
              by = c("COD_LOCALE_PROGETTO", "OC_CODICE_PROGRAMMA")) %>% 
    mutate(COD_SETTORE_INTERVENTO = COD_OPOS_NEW) %>% 
    # integra temi mancanti
    left_join(matrix_06 %>% 
                select(CODICE_STRUMENTO, COD_SETTORE_INTERVENTO),
              by = "CODICE_STRUMENTO") %>% 
    # TODO: qui va fix per ferrovie vs strade
    mutate(COD_SETTORE_INTERVENTO = if_else(is.na(COD_SETTORE_INTERVENTO.x), COD_SETTORE_INTERVENTO.y, COD_SETTORE_INTERVENTO.x)) %>% 
    select(-COD_SETTORE_INTERVENTO.x, -COD_SETTORE_INTERVENTO.y) %>% 
    # sovrascrive tema per tutti
    left_join(matrix_temi_settori, 
              by = "COD_SETTORE_INTERVENTO") %>% 
    mutate(AREA_TEMATICA = paste0(COD_AREA_TEMATICA, "-", DESCR_AREA_TEMATICA),
           SETTORE_INTERVENTO = paste0(COD_SETTORE_INTERVENTO, "-", DESCR_SETTORE_INTERVENTO)) %>% 
    # stato procedurale
    get_stato_attuazione(., chk_today = chk_today) %>% 
    # risorse coesione
    mutate(x = FINANZIAMENTO_FSC_NETTO / FINANZIAMENTO_TOTALE_PUBBLICO_NETTO,
           # TODO: 0.75 è quota random, serve soluzione!
           k = if_else(is.na(IMPORTO_REGIONALE), 0.75, 
                       IMPORTO_REGIONALE/(IMPORTO_REGIONALE+IMPORTO_NAZIONALE+IMPORTO_NON_DEFINITO)),
           COE = FINANZIAMENTO_FSC_NETTO * k,
           COE_IMP = IMPEGNI * x * k,
           COE_PAG = PAGAMENTI_TOTALI * x * k) # CHK: PAGAMENTI_FSC sono vuoti
  
  
  
  # calcola costo realizzato
  appo3 <- appo2 %>% 
    mutate_if(is.numeric, replace_na, replace = 0) %>% 
    mutate(FIN_TOT = TOTALE_FINANZIAMENTI - TOTALE_ECONOMIE,
           x = FINANZIAMENTO_FSC_NETTO / FIN_TOT,
           k = IMPORTO_REGIONALE / (IMPORTO_NAZIONALE + IMPORTO_REGIONALE + IMPORTO_NON_DEFINITO),
           COSTO_REALIZZATO_2 = COSTO_REALIZZATO * x * k,
           COE = FINANZIAMENTO_FSC_NETTO * k,
           COE_IMP = IMPEGNI * x * k,
           COE_PAG = PAGAMENTI_TOTALI * x * k)
  
  
  # appo3 %>%
  #   summarise(COE = sum(COE, na.rm = TRUE),
  #             PAGAMENTI_TOTALI = sum(PAGAMENTI_TOTALI, na.rm = TRUE),
  #             PAGAMENTI_FSC = sum(PAGAMENTI_FSC, na.rm = TRUE),
  #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO, na.rm = TRUE),
  #             FINANZIAMENTO_FSC_NETTO = sum(FINANZIAMENTO_FSC_NETTO, na.rm = TRUE),
  #             FINANZIAMENTO_TOTALE_PUBBLICO_NETTO = sum(FINANZIAMENTO_TOTALE_PUBBLICO_NETTO, na.rm = TRUE),
  #             IMPORTO_REGIONALE = sum(IMPORTO_REGIONALE, na.rm = TRUE),
  #             IMPORTO_NAZIONALE = sum(IMPORTO_NAZIONALE, na.rm = TRUE),
  #             IMPORTO_NON_DEFINITO = sum(IMPORTO_NON_DEFINITO, na.rm = TRUE),
  #             COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
  # appo3 %>%
  #   summarise(COE = sum(COE, na.rm = TRUE),
  #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
  #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
  #             COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
  # 
  # appo3 %>%
  #   group_by(ID_PSC, PSC, OC_CODICE_PROGRAMMA, CICLO) %>%
  #   summarise(COE = sum(COE, na.rm = TRUE),
  #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
  #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
  #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
  
  
  
  
  # export
  out <- appo3 %>%
    mutate(OC_FLAG_VISUALIZZAZIONE = 0) %>% 
    select(COD_LOCALE_PROGETTO, 
           CUP, 
           OC_TITOLO_PROGETTO = TITOLO,
           x_CICLO = CICLO,
           x_PROGRAMMA = DENOMINAZIONE_INTESA,
           OC_CODICE_PROGRAMMA,
           x_MACROAREA = MACROAREA,
           AREA_TEMATICA, 
           SETTORE_INTERVENTO,
           OC_STATO_PROCEDURALE = STATO_PROCED, 
           COE, 
           COE_IMP,
           COE_PAG,
           COE_CR = COSTO_REALIZZATO_2,
           PSC,
           ID_PSC, 
           OC_FLAG_VISUALIZZAZIONE)
  
  # da 20191231 (manuale)
  # out <- appo2 %>% 
  #   select(COD_LOCALE_PROGETTO,
  #          IMPORTO_REGIONALE, IMPORTO_NAZIONALE, IMPORTO_NON_DEFINITO)
  # write_csv2(out, file.path(INPUT, "quota_regionale_sgp_20191231.csv"))
  
  print(out %>% 
          summarise(COE = sum(COE, na.rm = TRUE),
                    COE_IMP = sum(COE_IMP, na.rm = TRUE),
                    COE_CR = sum(COE_CR, na.rm = TRUE),
                    COE_PAG = sum(COE_PAG, na.rm = TRUE)))
  
  write_csv2(out, file.path(PSC, "sgp", paste0("dati_sgp_", bimestre, ".csv")))
  
  
}


clean_data <- function(colonna_data) {
  temp <- sapply(colonna_data, function(x) {tryCatch(as.POSIXct(x), error = function(e) NA)}, USE.NAMES = FALSE)
  out <- as.POSIXct(temp, origin = "1970-01-01")
  return(out)
}

get_stato_attuazione <- function(df, chk_today) {
  # MEMO: 
  # formato per data è diverso da standad oc
  # può essere necessaria qualche pulizia nelle date in excel
  
  
  # chk_today <- as.POSIXct("2019-12-31")
  chk_today <- as.POSIXct(chk_today)
  
  # DEBUG:
  # df <- appo1
  
  appo <- df %>%
    select(COD_LOCALE_PROGETTO,
           # DATA_FINE_EFF_COLLAUDO,
           # DATA_INIZIO_EFF_COLLAUDO,
           DATA_FINE_EFF_ESECUZIONE = DATA_FINE_EFFETTIVA_ESECUZIONE_LAVORI_FORNITURE,
           DATA_INIZIO_EFF_ESECUZIONE = DATA_INIZIO_EFFETTIVA_ESECUZIONE_LAVORI_FORNITURE,
           DATA_FINE_EFF_STIP_ATTRIB = DATA_FINE_EFFETTIVA_STIPULA_CONTRATTO,
           DATA_INIZIO_EFF_STIP_ATTRIB = DATA_INIZIO_EFFETTIVA_STIPULA_CONTRATTO,
           # DATA_FINE_EFF_AGG_BANDO,
           # DATA_INIZIO_EFF_AGG_BANDO,
           DATA_FINE_EFF_PROG_ESEC = DATA_FINE_EFFETTIVA_PROGETT_ESECUTIVA,
           DATA_INIZIO_EFF_PROG_ESEC = DATA_INIZIO_EFFETTIVA_PROGETT_ESECUTIVA,
           DATA_FINE_EFF_PROG_DEF = DATA_FINE_EFFETTIVA_PROGETT_DEFINITIVA,
           DATA_INIZIO_EFF_PROG_DEF = DATA_INIZIO_EFFETTIVA_PROGETT_DEFINITIVA,
           DATA_FINE_EFF_PROG_PREL = DATA_FINE_EFFETTIVA_PROGETT_PRELIMINARE,
           DATA_INIZIO_EFF_PROG_PREL = DATA_INIZIO_EFFETTIVA_PROGETT_PRELIMINARE, 
           DATA_FINE_EFF_STUDIO_FATT = DATA_FINE_EFFETTIVA_STUDIO_FATTIBILITA,
           DATA_INIZIO_EFF_STUDIO_FATT = DATA_INIZIO_EFFETTIVA_STUDIO_FATTIBILITA) %>% 
    mutate(DATA_FINE_EFF_ESECUZIONE = clean_data(DATA_FINE_EFF_ESECUZIONE),
           DATA_INIZIO_EFF_ESECUZIONE = clean_data(DATA_INIZIO_EFF_ESECUZIONE),
           DATA_FINE_EFF_STIP_ATTRIB = clean_data(DATA_FINE_EFF_STIP_ATTRIB),
           DATA_INIZIO_EFF_STIP_ATTRIB = clean_data(DATA_INIZIO_EFF_STIP_ATTRIB),
           # DATA_FINE_EFF_AGG_BANDO,
           # DATA_INIZIO_EFF_AGG_BANDO,
           DATA_FINE_EFF_PROG_ESEC = clean_data(DATA_FINE_EFF_PROG_ESEC),
           DATA_INIZIO_EFF_PROG_ESEC = clean_data(DATA_INIZIO_EFF_PROG_ESEC),
           DATA_FINE_EFF_PROG_DEF = clean_data(DATA_FINE_EFF_PROG_DEF),
           DATA_INIZIO_EFF_PROG_DEF = clean_data(DATA_INIZIO_EFF_PROG_DEF),
           DATA_FINE_EFF_PROG_PREL = clean_data(DATA_FINE_EFF_PROG_PREL),
           DATA_INIZIO_EFF_PROG_PREL = clean_data(DATA_INIZIO_EFF_PROG_PREL), 
           DATA_FINE_EFF_STUDIO_FATT = clean_data(DATA_FINE_EFF_STUDIO_FATT),
           DATA_INIZIO_EFF_STUDIO_FATT = clean_data(DATA_INIZIO_EFF_STUDIO_FATT))
  # MEMO: recupera solo le variabili che non sono gia presenti in df
  
  out <- appo %>%
    mutate(CHK_END = case_when(# DATA_FINE_EFF_COLLAUDO <= chk_today ~ 1,
      # DATA_INIZIO_EFF_COLLAUDO <= chk_today ~ 1,
      DATA_FINE_EFF_ESECUZIONE <= chk_today ~ 1,
      TRUE ~ 0),
      CHK_ESEC = case_when(DATA_INIZIO_EFF_ESECUZIONE <= chk_today ~ 1,
                           DATA_FINE_EFF_STIP_ATTRIB <= chk_today ~ 1, # MEMO: da portare sotto...? altrimenti resta classe GARA quasi vuota
                           # DATA_FINE_EFF_AGG_BANDO <= chk_today ~ 1,
                           # is.na(DATA_INIZIO_EFF_ESECUZIONE) ~ 0,
                           TRUE ~ 0),
      CHK_GARA = case_when(DATA_INIZIO_EFF_STIP_ATTRIB <= chk_today ~ 1,
                           # DATA_FINE_EFF_AGG_BANDO <= chk_today ~ 1,
                           # DATA_INIZIO_EFF_AGG_BANDO <= chk_today ~ 1,
                           # DATA_FINE_EFF_PROG_ESEC <= chk_today ~ 1,
                           TRUE ~ 0),
      # MEMO: blocco su progettazione presente solo per le opere
      CHK_PROG = case_when(as.POSIXct(DATA_FINE_EFF_PROG_ESEC) <= chk_today ~ 1,
                           as.POSIXct(DATA_INIZIO_EFF_PROG_ESEC) <= chk_today ~ 1,
                           as.POSIXct(DATA_FINE_EFF_PROG_DEF) <= chk_today ~ 1,
                           as.POSIXct(DATA_INIZIO_EFF_PROG_DEF) <= chk_today ~ 1,
                           as.POSIXct(DATA_FINE_EFF_PROG_PREL) <= chk_today ~ 1,
                           as.POSIXct(DATA_INIZIO_EFF_PROG_PREL) <= chk_today ~ 1,
                           # DATA_FINE_EFF_STUDIO_FATT <= chk_today ~ 1,
                           # DATA_INIZIO_EFF_STUDIO_FATT <= chk_today ~ 1,
                           TRUE ~ 0),
      CHK_AVVP = case_when(DATA_FINE_EFF_STUDIO_FATT <= chk_today ~ 1,
                           DATA_INIZIO_EFF_STUDIO_FATT <= chk_today ~ 1,
                           TRUE ~ 0)) %>%
    mutate(STATO_PROCED = case_when(CHK_END == 1 ~ "Eseguito",
                                    CHK_ESEC == 1 ~ "In esecuzione",
                                    CHK_GARA == 1 ~ "In affidamento",
                                    CHK_PROG == 1 ~ "In corso di progettazione",
                                    CHK_AVVP == 1 ~ "In avvio di progettazione",
                                    # IMPEGNI > 0 ~ "esecuzione", # MEMO: assegnazione forzata per risolvere anomalie
                                    TRUE ~ "Non avviato")) %>%
    mutate(STATO_PROCED = factor(STATO_PROCED, levels = c("Non avviato", "In avvio di progettazione", "In corso di progettazione", 
                                                          "In affidamento", "In esecuzione", "Eseguito")))
  
  out <- df %>%
    left_join(out %>%
                select(COD_LOCALE_PROGETTO, STATO_PROCED),
              by = "COD_LOCALE_PROGETTO")
  
  print(out %>% count(STATO_PROCED))
  
  return(out)
}



#' Carica dati di base per PSC
#'
#' Carica dati di base per PSC
#'
#' @param bimestre Bimestre di riferimento
#' @return Dataframe
load_progetti_psc <- function(bimemstre) {
  progetti_psc <- read_csv2(file.path(PSC, "psc", paste0("dati_psc_", bimestre, ".csv")))
  return(progetti_psc)
}



#' Report PSC e PO d'origine
#'
#' Crea report di confronto programmazione attuazione per PSC e PO d'origine
#' 
#' @param progetti_psc Dataset da load_progetti_psc()
#' @param programmazione Dati di programmazione DBCOE di tipo "fsc_matrice_po_psc.xlsx"
#' @param visualizzati Logico. Vuoi solo i progetti visualizzati sul portale OC?
#' @param  usa_meuro Logico. Vuoi dati in Meuro?
#' @param export Vuoi salvare il file csv in TEMP?
#' @param export_xls Vuoi salvare i file xlsx per ciclo e ambito in OUTPUT?
#' @param fix_cis_taranto Vuoi correggere il ciclo del CIS Taranto? Nel PSC i progetti PRA del CIS per 320 sono spostati da 713 a 1420, il fix crea un programma fittizio lato risorse. Lato attuazione va sviluppato.
#' @return Report di confronto programmazione attuazione per PSC e PO d'origine. Le risorse delle sezioni speciali, nuove o da riprogrammazione, sono in righe separate.
#' @note Contiene patch per incorporare patti città metro anche se non sono PSC in DBCOE
make_report_report_po_psc <- function(progetti_psc, programmazione=NULL, visualizzati=TRUE, usa_meuro=FALSE, export=FALSE, export_xls=FALSE, fix_cis_taranto=TRUE) {
  
  # DEV: uso matrice_po_psc senza dichiararla!!!
  
  if (is.null(programmazione)) {
    programmazione <- read_xlsx(file.path(DB, "fsc_matrice_po_psc.xlsx")) %>% 
      select(ID_PSC, PSC, CICLO_PROGRAMMAZIONE, OC_CODICE_PROGRAMMA, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE, FINANZ_TOTALE)
    
    # # patch per patti metro
    # patti <- init_programmazione_dati(use_temi = TRUE, use_713 = TRUE, use_flt = TRUE, use_sog = TRUE) %>% 
    #   filter(TIPOLOGIA_PROGRAMMA == "PATTI") %>% 
    #   left_join(matrix_po_psc %>% 
    #               select(OC_CODICE_PROGRAMMA, ID_PSC, PSC),
    #             by = "OC_CODICE_PROGRAMMA") %>% 
    #   mutate(DESCRIZIONE_PROGRAMMA = PSC) %>% 
    #   select(ID_PSC, PSC, CICLO_PROGRAMMAZIONE = x_CICLO, OC_CODICE_PROGRAMMA, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE, FINANZ_TOTALE)
    # 
    # programmazione <- programmazione %>% 
    #   bind_rows(patti)
  }
  
  # fix per CIS Taranto (nel PSC i progetti PRA per 320 sono spostati da 713 a 1420)
  # 2007PU001FA010
  temp <- programmazione %>% 
    filter(OC_CODICE_PROGRAMMA == "2007PU001FA010")
  
  appo <- programmazione %>% 
    filter(OC_CODICE_PROGRAMMA != "2007PU001FA010")
  
  programmazione_2 <- appo %>% 
    # pra puglia normale
    bind_rows(temp %>% 
                mutate(# CICLO_PROGRAMMAZIONE = "2007-2013",
                       FINANZ_TOTALE = 2318573538)) %>% 
    # pra puglia in CIS
    bind_rows(temp %>% 
                mutate(CICLO_PROGRAMMAZIONE = "2014-2020",
                       FINANZ_TOTALE = 320667143))
  # MEMO: la somma delle due parti del PSC presa dalla Tavola 2 del PSC sballa rispetto al valore nel DB, ma è trascurabile
  # 2639264638 - 2639240681 = 23957
  
  # sum(programmazione$FINANZ_TOTALE) - sum(programmazione_2$FINANZ_TOTALE)
  # 23957.45
  
  programmazione <- programmazione_2
  
  if (visualizzati == TRUE){
    appo1 <- progetti_psc %>% filter(OC_FLAG_VISUALIZZAZIONE == 0)
  } else {
    appo1 <- progetti_psc
  }
  
  appo2 <- appo1 %>%
    group_by(ID_PSC, OC_CODICE_PROGRAMMA, x_CICLO) %>%
    summarise(COE = sum(COE, na.rm = TRUE),
              COE_IMP = sum(COE_IMP, na.rm = TRUE),
              COE_PAG = sum(COE_PAG, na.rm = TRUE),
              COE_CR = sum(COE_CR, na.rm = TRUE),
              N = n())
  
  
  
  # confronto programmazione e attuazione
  report <- programmazione %>% 
    # filter(TIPOLOGIA_PROGRAMMA != "COVID", # considero solo sezione ordinaria
    #        TIPOLOGIA_PROGRAMMA != "CSR") %>% 
    select(ID_PSC, PSC, x_CICLO = CICLO_PROGRAMMAZIONE, OC_CODICE_PROGRAMMA, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE, RISORSE = FINANZ_TOTALE) %>% 
    group_by(ID_PSC, PSC, x_CICLO, OC_CODICE_PROGRAMMA, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE) %>% 
    summarise(RISORSE = sum(RISORSE, na.rm = TRUE)) %>% 
    left_join(appo2 %>% 
                select(ID_PSC, x_CICLO, OC_CODICE_PROGRAMMA, COE, COE_IMP, COE_CR, COE_PAG, N),
              by = c("ID_PSC", "x_CICLO", "OC_CODICE_PROGRAMMA")) %>% 
    mutate_if(is.numeric, list(~replace_na(., 0)))
  
  report %>% count(ID_PSC, x_CICLO, OC_CODICE_PROGRAMMA) %>% filter(n>1)
  appo2 %>% count(ID_PSC, x_CICLO, OC_CODICE_PROGRAMMA) %>% filter(n>1)
  chk1 <- report %>% anti_join(appo2, by = c("ID_PSC", "x_CICLO", "OC_CODICE_PROGRAMMA"))
  chk2 <- appo2 %>% anti_join(report, by = c("ID_PSC", "x_CICLO", "OC_CODICE_PROGRAMMA"))
  # in chk1 tutte le assegnazioni nei psc non monitorate
  # in chk2 solo la parte fittizia della sicilia di direttrici ferroviarie
  
  report <- fix_id_psc_ministeri(report, var1="PSC")
  
  if (usa_meuro == TRUE) {
    report <- report %>% 
      mutate(RISORSE = RISORSE/1000000, 
             COE = COE/1000000, 
             COE_IMP = COE_IMP/1000000, 
             COE_CR = COE_CR/1000000, 
             COE_PAG = COE_PAG/1000000)
  }
  
  if (visualizzati == TRUE){
    if (export == TRUE) {
      write_csv2(report, file.path(TEMP, "report_po_psc_nodupli.csv"))
    }
    
    if (export_xls == TRUE) {
      message("Da implementare")
    }
  } else {
    if (export == TRUE) {
      write_csv2(report, file.path(TEMP, "report_po_psc_dupli.csv"))
    }
    
    if (export_xls == TRUE) {
      message("Da implementare")
    }
  }

  
  
  return(report)
}




#' Report PSC per temi
#'
#' Crea report di confronto programmazione attuazione per PSC e PO in essi confluiti
#' 
#' @param progetti_psc Dataset da load_progetti_psc()
#' @param programmazione Dati di programmazione DBCOE di tipo "fsc_matrice_po_psc.xlsx"
#' @param visualizzati Logico. Vuoi solo i progetti visualizzati sul portale OC?
#' @param  usa_meuro Logico. Vuoi dati in Meuro?
#' @param export Vuoi salvare il file csv in TEMP?
#' @param export_xls Vuoi salvare i file xlsx per ciclo e ambito in OUTPUT?
#' @return Report di confronto programmazione attuazione per PSC e PO in essi confluiti. I nuovi 
#' @note ...
make_report_report_temi_psc <- function(progetti_psc, programmazione=NULL, visualizzati=TRUE, usa_meuro=FALSE, export=FALSE, export_xls=FALSE) {
  
  if (is.null(programmazione)) {
    programmazione <- init_programmazione_dati(use_temi = TRUE, use_713 = TRUE, use_flt = TRUE, use_sog = TRUE) %>% 
      filter(TIPOLOGIA_PROGRAMMA == "PSC") %>% 
      rename(ID_PSC = OC_CODICE_PROGRAMMA)
  }
  
  if (visualizzati == TRUE){
    appo1 <- progetti_psc %>% filter(OC_FLAG_VISUALIZZAZIONE == 0)
  } else {
    appo1 <- progetti_psc
  }
  
  # temp <- tibble(ID_PSC = c("PSC_BARI", "PSC_BOLOGNA", "PSC_CAGLIARI", "PSC_CATANIA",
  #                           "PSC_FIRENZE", "PSC_GENOVA", "PSC_MESSINA", "PSC_MILANO", 
  #                           "PSC_NAPOLI", "PSC_PALERMO", "PSC_REGGIO_CALABRIA", "PSC_VENEZIA"))
  
  appo2 <- appo1 %>% 
    # anti_join(temp) %>% 
    group_by(ID_PSC, AREA_TEMATICA, x_CICLO) %>%
    summarise(COE = sum(COE, na.rm = TRUE),
              COE_IMP = sum(COE_IMP, na.rm = TRUE),
              COE_CR = sum(COE_CR, na.rm = TRUE),
              COE_PAG = sum(COE_PAG, na.rm = TRUE),
              N = n())
  
  # confronto programmazione e attuazione
  report <- programmazione %>% 
    # filter(TIPOLOGIA_PROGRAMMA != "COVID", # considero solo sezione ordinaria
    #        TIPOLOGIA_PROGRAMMA != "CSR") %>% 
    select(ID_PSC, x_CICLO, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE, RISORSE = FINANZ_TOTALE,
           AREA_TEMATICA = DESCR_AREA_TEMATICA_PSC) %>% 
    group_by(ID_PSC, x_CICLO, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE, AREA_TEMATICA) %>% 
    summarise(RISORSE = sum(RISORSE, na.rm = TRUE)) %>%
    # MEMO: que serve full join perché ci possono essere progetti monitorati associati a temi assenti in programmazione
    full_join(appo2 %>% 
                select(ID_PSC, x_CICLO, AREA_TEMATICA, COE, COE_IMP, COE_CR, COE_PAG, N),
              by = c("ID_PSC", "x_CICLO", "AREA_TEMATICA")) %>% 
    mutate_if(is.numeric, list(~replace_na(., 0))) %>% 
    # recupera variabili perse da full_join
    left_join(programmazione %>% 
                distinct(ID_PSC, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE),
              by = "ID_PSC") %>% 
    mutate(DESCRIZIONE_PROGRAMMA = if_else(is.na(DESCRIZIONE_PROGRAMMA.x),  DESCRIZIONE_PROGRAMMA.y, DESCRIZIONE_PROGRAMMA.x),
           TIPOLOGIA_AMMINISTRAZIONE= if_else(is.na(TIPOLOGIA_AMMINISTRAZIONE.x),  TIPOLOGIA_AMMINISTRAZIONE.y, TIPOLOGIA_AMMINISTRAZIONE.x)) %>% 
    select(-DESCRIZIONE_PROGRAMMA.y, -DESCRIZIONE_PROGRAMMA.x, -TIPOLOGIA_AMMINISTRAZIONE.y, -TIPOLOGIA_AMMINISTRAZIONE.x) %>% 
    select(ID_PSC, x_CICLO, DESCRIZIONE_PROGRAMMA, TIPOLOGIA_AMMINISTRAZIONE, AREA_TEMATICA, RISORSE, COE, COE_IMP, COE_CR, COE_PAG, N)
  
  report %>% count(ID_PSC, x_CICLO, AREA_TEMATICA) %>% filter(n>1)
  appo2 %>% count(ID_PSC, x_CICLO, AREA_TEMATICA) %>% filter(n>1)
  chk1 <- report %>% anti_join(appo2, by = c("ID_PSC", "x_CICLO", "AREA_TEMATICA"))
  chk2 <- appo2 %>% anti_join(report, by = c("ID_PSC", "x_CICLO", "AREA_TEMATICA"))
  # in chk1 tutte le assegnazioni nei psc non monitorate
  
  # crea sezione
  report <- report %>% 
    mutate(SEZIONE = case_when(AREA_TEMATICA == "Risorse da nuove assegnazioni FSC 2014-2020" ~ "Sez. speciale",
                               AREA_TEMATICA == "Risorse da riprogrammazione ex art. 44" ~ "Sez. speciale",
                               AREA_TEMATICA == "Risorse da compensazioni CSR" ~ "Sez. speciale",
                               TRUE ~ "Sez. ordinaria"))

  if (usa_meuro == TRUE) {
    report <- report %>% 
      mutate(RISORSE = RISORSE/1000000, 
             COE = COE/1000000, 
             COE_IMP = COE_IMP/1000000, 
             COE_CR = COE_CR/1000000, 
             COE_PAG = COE_PAG/1000000)
  }

  if (visualizzati == TRUE){
    if (export == TRUE) {
      write_csv2(report, file.path(TEMP, "report_temi_psc_nodupli.csv"))
    }
    
    if (export_xls == TRUE) {
      message("Da implementare")
    }
  } else {
    if (export == TRUE) {
      write_csv2(report, file.path(TEMP, "report_temi_psc_dupli.csv"))
    }
    
    if (export_xls == TRUE) {
      message("Da implementare")
    }
  }
  
  return(report)
}





#' #' Calcola costo realizzato
#' #'
#' #' Calcola costo realizzato con riproporzionamento su risorse coesione
#' #' 
#' #' @param bimestre Bimestre di riferimento
#' #' @param filename Nome file xlsx in DATI > SGP
#' #' @param chk_today Parametro da passare a get_stato_attuazione(), con formato "2021-02-28"
#' #' @param matrix_po_psc Matrice di riconciliazione PO - PSC
#' #' @return File "dati_sgp_BIMESTRE.csv" in TEMP 
#' #' @note ...
#' get_costo_realizzato_713_1420 <- function(progetti_psc, progetti, progetti_sgp, matrix_po_psc) {
#'   
#'   # clean sgp
#'   progetti_sgp <- progetti_sgp %>% 
#'     select(COD_LOCALE_PROGETTO, TITOLO, 
#'            DENOMINAZIONE_INTESA, CODICE_STRUMENTO,
#'            FINANZIAMENTO_FSC_NETTO, FINANZIAMENTO_TOTALE_PUBBLICO_NETTO, 
#'            TOTALE_FINANZIAMENTI_PVT, TOTALE_ECONOMIE_PVT, 
#'            TOTALE_FINANZIAMENTI, TOTALE_ECONOMIE,
#'            IMPORTO_NAZIONALE, IMPORTO_REGIONALE, IMPORTO_NON_DEFINITO,
#'            COSTO_REALIZZATO, COSTO_REALIZZATO_1,
#'            IMPEGNI,
#'            PAGAMENTI_TOTALI, PAGAMENTI_FSC) %>% 
#'     mutate(OC_CODICE_PROGRAMMA = case_when(DENOMINAZIONE_INTESA == "ABRUZZO" ~ "33",
#'                                            DENOMINAZIONE_INTESA == "BASILICATA" ~ "37",
#'                                            DENOMINAZIONE_INTESA == "CALABRIA" ~ "38",
#'                                            DENOMINAZIONE_INTESA == "CAMPANIA" ~ "35",
#'                                            DENOMINAZIONE_INTESA == "EMILIA-ROMAGNA" ~ "28",
#'                                            DENOMINAZIONE_INTESA == "FRIULI-VENEZIA GIULIA" ~ "26",
#'                                            DENOMINAZIONE_INTESA == "LAZIO" ~ "32",
#'                                            DENOMINAZIONE_INTESA == "LIGURIA" ~ "27",
#'                                            DENOMINAZIONE_INTESA == "LOMBARDIA" ~ "01",
#'                                            DENOMINAZIONE_INTESA == "MARCHE" ~ "04",
#'                                            DENOMINAZIONE_INTESA == "MOLISE" ~ "34",
#'                                            DENOMINAZIONE_INTESA == "P.A. BOLZANO" ~ "41",
#'                                            DENOMINAZIONE_INTESA == "P.A. TRENTO" ~ "40",
#'                                            DENOMINAZIONE_INTESA == "PIEMONTE" ~ "21",
#'                                            DENOMINAZIONE_INTESA == "PUGLIA" ~ "36",
#'                                            DENOMINAZIONE_INTESA == "SARDEGNA" ~ "05",
#'                                            DENOMINAZIONE_INTESA == "SICILIA" ~ "39",
#'                                            DENOMINAZIONE_INTESA == "TOSCANA" ~ "02",
#'                                            DENOMINAZIONE_INTESA == "UMBRIA" ~ "03",
#'                                            DENOMINAZIONE_INTESA == "VALLE D'AOSTA" ~ "22",
#'                                            DENOMINAZIONE_INTESA == "VENETO" ~ "25"))
#'   
#'   
#'   # calcola quota 713-1420
#'   message("calcola cr per 713 e 1420")
#'   appo <- progetti_psc %>% 
#'     # filter(OC_FLAG_VISUALIZZAZIONE == 0) %>% 
#'     left_join(progetti %>% 
#'                 select(COD_LOCALE_PROGETTO, COSTO_REALIZZATO, OC_FINANZ_STATO_FSC_NETTO, OC_FINANZ_TOT_PUB_NETTO, OC_FINANZ_PRIVATO_NETTO),
#'               by = "COD_LOCALE_PROGETTO") %>% 
#'     mutate_if(is.numeric, replace_na, replace = 0) %>% 
#'     mutate(FINANZ_TOT = OC_FINANZ_TOT_PUB_NETTO + OC_FINANZ_PRIVATO_NETTO,
#'            # x = OC_FINANZ_STATO_FSC_NETTO/FINANZ_TOT,
#'            x = COE/FINANZ_TOT,
#'            COSTO_REALIZZATO_2 = COSTO_REALIZZATO * x)
#'   
#'   dim(appo)[1] == dim(progetti_psc)[1]
#'   
#'   
#'   appo %>% 
#'     summarise(COE = sum(COE, na.rm = TRUE),
#'               COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'               COSTO_REALIZZATO = sum(COSTO_REALIZZATO, na.rm = TRUE),
#'               OC_FINANZ_STATO_FSC_NETTO = sum(OC_FINANZ_STATO_FSC_NETTO, na.rm = TRUE),
#'               OC_FINANZ_TOT_PUB_NETTO = sum(OC_FINANZ_TOT_PUB_NETTO, na.rm = TRUE),
#'               COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   # A tibble: 1 x 6
#'   # COE      COE_PAG COSTO_REALIZZATO OC_FINANZ_STATO_FSC_NETTO OC_FINANZ_TOT_PUB_NETTO COSTO_REALIZZATO_2
#'   # <dbl>        <dbl>            <dbl>                     <dbl>                   <dbl>              <dbl>
#'   # 49290164401. 10040154286.     21986749485.              50629969321.            68164313459.       15828065459.
#'   
#'   # report per programma
#'   # appo1 <- appo %>% 
#'   #   group_by(ID_PSC, PSC, OC_CODICE_PROGRAMMA, x_PROGRAMMA, x_CICLO) %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
#'   #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'   #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   
#'   # integra 06
#'   message("calcola cr per 06")
#'   temp <- progetti_sgp %>% 
#'     mutate(x_CICLO = "2000-2006",
#'            x_PROGRAMMA = paste0("INTESA ", DENOMINAZIONE_INTESA)) %>% 
#'     left_join(matrix_po_psc %>% 
#'                 select(OC_CODICE_PROGRAMMA, ID_PSC, PSC),
#'               by = "OC_CODICE_PROGRAMMA") %>% 
#'     mutate_if(is.numeric, replace_na, replace = 0) %>% 
#'     mutate(FIN_TOT = TOTALE_FINANZIAMENTI - TOTALE_ECONOMIE,
#'            x = FINANZIAMENTO_FSC_NETTO / FIN_TOT,
#'            k = IMPORTO_REGIONALE / (IMPORTO_NAZIONALE + IMPORTO_REGIONALE + IMPORTO_NON_DEFINITO),
#'            COSTO_REALIZZATO_2 = COSTO_REALIZZATO * x * k,
#'            COE = FINANZIAMENTO_FSC_NETTO * k,
#'            COE_IMP = IMPEGNI * x * k,
#'            COE_PAG = PAGAMENTI_TOTALI * x * k)
#'   
#'   dim(temp)[1] == dim(progetti_sgp)[1]
#'   
#'   # temp %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             PAGAMENTI_TOTALI = sum(PAGAMENTI_TOTALI, na.rm = TRUE),
#'   #             PAGAMENTI_FSC = sum(PAGAMENTI_FSC, na.rm = TRUE),
#'   #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO, na.rm = TRUE),
#'   #             FINANZIAMENTO_FSC_NETTO = sum(FINANZIAMENTO_FSC_NETTO, na.rm = TRUE),
#'   #             FINANZIAMENTO_TOTALE_PUBBLICO_NETTO = sum(FINANZIAMENTO_TOTALE_PUBBLICO_NETTO, na.rm = TRUE),
#'   #             IMPORTO_REGIONALE = sum(IMPORTO_REGIONALE, na.rm = TRUE),
#'   #             IMPORTO_NAZIONALE = sum(IMPORTO_NAZIONALE, na.rm = TRUE),
#'   #             IMPORTO_NON_DEFINITO = sum(IMPORTO_NON_DEFINITO, na.rm = TRUE),
#'   #             COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   # temp %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
#'   #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'   #             COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   # 
#'   # temp1 <- temp %>% 
#'   #   group_by(ID_PSC, PSC, OC_CODICE_PROGRAMMA, x_PROGRAMMA, x_CICLO) %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
#'   #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'   #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   
#'   # bind
#'   # appo2 <- appo1 %>%
#'   #   bind_rows(temp1)
#'   message("bind di 713-1420 e 06")
#'   
#'   appo2 <- appo %>%
#'     filter(x_CICLO != "2000-2006") %>% 
#'     bind_rows(temp) %>% 
#'     select(COD_LOCALE_PROGETTO, COSTO_REALIZZATO_2) %>% 
#'     rename(COSTO_REALIZZATO = COSTO_REALIZZATO_2)
#'   
#'   chk <- appo %>% 
#'     bind_rows(temp) %>% 
#'     mutate(CHK = COSTO_REALIZZATO_2 - COE) %>% 
#'     filter(CHK > 1)
#'   
#'   chk %>% count(x_CICLO)
#'   # CHK: queste sono le uniche anomalie?
#'   
#'   # export
#'   message("export")
#'   dim(progetti_psc)[1] == dim(appo2)[1]
#'   
#'   progetti_psc <- progetti_psc %>% 
#'     left_join(appo2, by = "COD_LOCALE_PROGETTO")
#'   
#'   return(progetti_psc)
#'   
#' }
#' 

#' #' Calcola costo realizzato
#' #'
#' #' Calcola costo realizzato con riproporzionamento su risorse coesione
#' #' 
#' #' @param bimestre Bimestre di riferimento
#' #' @param filename Nome file xlsx in DATI > SGP
#' #' @param chk_today Parametro da passare a get_stato_attuazione(), con formato "2021-02-28"
#' #' @param matrix_po_psc Matrice di riconciliazione PO - PSC
#' #' @return File "dati_sgp_BIMESTRE.csv" in TEMP 
#' #' @note ...
#' get_costo_realizzato_06 <- function(progetti_psc, progetti, progetti_sgp, matrix_po_psc) {
#'   
#'   # clean sgp
#'   progetti_sgp <- progetti_sgp %>% 
#'     select(COD_LOCALE_PROGETTO, TITOLO, 
#'            DENOMINAZIONE_INTESA, CODICE_STRUMENTO,
#'            FINANZIAMENTO_FSC_NETTO, FINANZIAMENTO_TOTALE_PUBBLICO_NETTO, 
#'            TOTALE_FINANZIAMENTI_PVT, TOTALE_ECONOMIE_PVT, 
#'            TOTALE_FINANZIAMENTI, TOTALE_ECONOMIE,
#'            IMPORTO_NAZIONALE, IMPORTO_REGIONALE, IMPORTO_NON_DEFINITO,
#'            COSTO_REALIZZATO, COSTO_REALIZZATO_1,
#'            IMPEGNI,
#'            PAGAMENTI_TOTALI, PAGAMENTI_FSC) %>% 
#'     mutate(OC_CODICE_PROGRAMMA = case_when(DENOMINAZIONE_INTESA == "ABRUZZO" ~ "33",
#'                                            DENOMINAZIONE_INTESA == "BASILICATA" ~ "37",
#'                                            DENOMINAZIONE_INTESA == "CALABRIA" ~ "38",
#'                                            DENOMINAZIONE_INTESA == "CAMPANIA" ~ "35",
#'                                            DENOMINAZIONE_INTESA == "EMILIA-ROMAGNA" ~ "28",
#'                                            DENOMINAZIONE_INTESA == "FRIULI-VENEZIA GIULIA" ~ "26",
#'                                            DENOMINAZIONE_INTESA == "LAZIO" ~ "32",
#'                                            DENOMINAZIONE_INTESA == "LIGURIA" ~ "27",
#'                                            DENOMINAZIONE_INTESA == "LOMBARDIA" ~ "01",
#'                                            DENOMINAZIONE_INTESA == "MARCHE" ~ "04",
#'                                            DENOMINAZIONE_INTESA == "MOLISE" ~ "34",
#'                                            DENOMINAZIONE_INTESA == "P.A. BOLZANO" ~ "41",
#'                                            DENOMINAZIONE_INTESA == "P.A. TRENTO" ~ "40",
#'                                            DENOMINAZIONE_INTESA == "PIEMONTE" ~ "21",
#'                                            DENOMINAZIONE_INTESA == "PUGLIA" ~ "36",
#'                                            DENOMINAZIONE_INTESA == "SARDEGNA" ~ "05",
#'                                            DENOMINAZIONE_INTESA == "SICILIA" ~ "39",
#'                                            DENOMINAZIONE_INTESA == "TOSCANA" ~ "02",
#'                                            DENOMINAZIONE_INTESA == "UMBRIA" ~ "03",
#'                                            DENOMINAZIONE_INTESA == "VALLE D'AOSTA" ~ "22",
#'                                            DENOMINAZIONE_INTESA == "VENETO" ~ "25"))
#' 
#'   
#'   # calcola quota 713-1420
#'   message("calcola cr per 713 e 1420")
#'   appo <- progetti_psc %>% 
#'     # filter(OC_FLAG_VISUALIZZAZIONE == 0) %>% 
#'     left_join(progetti %>% 
#'                 select(COD_LOCALE_PROGETTO, COSTO_REALIZZATO, OC_FINANZ_STATO_FSC_NETTO, OC_FINANZ_TOT_PUB_NETTO, OC_FINANZ_PRIVATO_NETTO),
#'               by = "COD_LOCALE_PROGETTO") %>% 
#'     mutate_if(is.numeric, replace_na, replace = 0) %>% 
#'     mutate(FINANZ_TOT = OC_FINANZ_TOT_PUB_NETTO + OC_FINANZ_PRIVATO_NETTO,
#'            # x = OC_FINANZ_STATO_FSC_NETTO/FINANZ_TOT,
#'            x = COE/FINANZ_TOT,
#'            COSTO_REALIZZATO_2 = COSTO_REALIZZATO * x)
#'   
#'   dim(appo)[1] == dim(progetti_psc)[1]
#'   
#'   
#'   appo %>% 
#'     summarise(COE = sum(COE, na.rm = TRUE),
#'               COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'               COSTO_REALIZZATO = sum(COSTO_REALIZZATO, na.rm = TRUE),
#'               OC_FINANZ_STATO_FSC_NETTO = sum(OC_FINANZ_STATO_FSC_NETTO, na.rm = TRUE),
#'               OC_FINANZ_TOT_PUB_NETTO = sum(OC_FINANZ_TOT_PUB_NETTO, na.rm = TRUE),
#'               COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   # A tibble: 1 x 6
#'   # COE      COE_PAG COSTO_REALIZZATO OC_FINANZ_STATO_FSC_NETTO OC_FINANZ_TOT_PUB_NETTO COSTO_REALIZZATO_2
#'   # <dbl>        <dbl>            <dbl>                     <dbl>                   <dbl>              <dbl>
#'   # 49290164401. 10040154286.     21986749485.              50629969321.            68164313459.       15828065459.
#'   
#'   # report per programma
#'   # appo1 <- appo %>% 
#'   #   group_by(ID_PSC, PSC, OC_CODICE_PROGRAMMA, x_PROGRAMMA, x_CICLO) %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
#'   #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'   #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   
#'   # integra 06
#'   message("calcola cr per 06")
#'   temp <- progetti_sgp %>% 
#'     mutate(x_CICLO = "2000-2006",
#'            x_PROGRAMMA = paste0("INTESA ", DENOMINAZIONE_INTESA)) %>% 
#'     left_join(matrix_po_psc %>% 
#'                 select(OC_CODICE_PROGRAMMA, ID_PSC, PSC),
#'               by = "OC_CODICE_PROGRAMMA") %>% 
#'     mutate_if(is.numeric, replace_na, replace = 0) %>% 
#'     mutate(FIN_TOT = TOTALE_FINANZIAMENTI - TOTALE_ECONOMIE,
#'            x = FINANZIAMENTO_FSC_NETTO / FIN_TOT,
#'            k = IMPORTO_REGIONALE / (IMPORTO_NAZIONALE + IMPORTO_REGIONALE + IMPORTO_NON_DEFINITO),
#'            COSTO_REALIZZATO_2 = COSTO_REALIZZATO * x * k,
#'            COE = FINANZIAMENTO_FSC_NETTO * k,
#'            COE_IMP = IMPEGNI * x * k,
#'            COE_PAG = PAGAMENTI_TOTALI * x * k)
#'   
#'   dim(temp)[1] == dim(progetti_sgp)[1]
#'   
#'   # temp %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             PAGAMENTI_TOTALI = sum(PAGAMENTI_TOTALI, na.rm = TRUE),
#'   #             PAGAMENTI_FSC = sum(PAGAMENTI_FSC, na.rm = TRUE),
#'   #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO, na.rm = TRUE),
#'   #             FINANZIAMENTO_FSC_NETTO = sum(FINANZIAMENTO_FSC_NETTO, na.rm = TRUE),
#'   #             FINANZIAMENTO_TOTALE_PUBBLICO_NETTO = sum(FINANZIAMENTO_TOTALE_PUBBLICO_NETTO, na.rm = TRUE),
#'   #             IMPORTO_REGIONALE = sum(IMPORTO_REGIONALE, na.rm = TRUE),
#'   #             IMPORTO_NAZIONALE = sum(IMPORTO_NAZIONALE, na.rm = TRUE),
#'   #             IMPORTO_NON_DEFINITO = sum(IMPORTO_NON_DEFINITO, na.rm = TRUE),
#'   #             COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   # temp %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
#'   #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'   #             COSTO_REALIZZATO_2 = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   # 
#'   # temp1 <- temp %>% 
#'   #   group_by(ID_PSC, PSC, OC_CODICE_PROGRAMMA, x_PROGRAMMA, x_CICLO) %>% 
#'   #   summarise(COE = sum(COE, na.rm = TRUE),
#'   #             COE_IMP = sum(COE_IMP, na.rm = TRUE),
#'   #             COE_PAG = sum(COE_PAG, na.rm = TRUE),
#'   #             COSTO_REALIZZATO = sum(COSTO_REALIZZATO_2, na.rm = TRUE))
#'   
#'   # bind
#'   # appo2 <- appo1 %>%
#'   #   bind_rows(temp1)
#'   message("bind di 713-1420 e 06")
#'   
#'   appo2 <- appo %>%
#'     filter(x_CICLO != "2000-2006") %>% 
#'     bind_rows(temp) %>% 
#'     select(COD_LOCALE_PROGETTO, COSTO_REALIZZATO_2) %>% 
#'     rename(COSTO_REALIZZATO = COSTO_REALIZZATO_2)
#'   
#'   chk <- appo %>% 
#'     bind_rows(temp) %>% 
#'     mutate(CHK = COSTO_REALIZZATO_2 - COE) %>% 
#'     filter(CHK > 1)
#'   
#'   chk %>% count(x_CICLO)
#'   # CHK: queste sono le uniche anomalie?
#'   
#'   # export
#'   message("export")
#'   dim(progetti_psc)[1] == dim(appo2)[1]
#'   
#'   progetti_psc <- progetti_psc %>% 
#'     left_join(appo2, by = "COD_LOCALE_PROGETTO")
#'   
#'   return(progetti_psc)
#'   
#' }
andreoliant/octk documentation built on Dec. 15, 2024, 2:39 a.m.