# 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)) %>%
fix_id_psc_15_digit(.)
# 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"))
lista_psc <<- 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) %>%
distinct(ID_PSC, TIPOLOGIA_AMMINISTRAZIONE)
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)) %>%
# ricodifica PSC
mutate(PSC = case_when(PSC == "MIPAF" ~ "MIPAAF",
PSC == "MIUR-RICERCA" ~ "MUR",
PSC == "MIUR-SCUOLA" ~ "MI",
OC_CODICE_PROGRAMMA == "OPCM_CAM" ~ "CAMPANIA",
OC_CODICE_PROGRAMMA == "DEBITI_CAM" ~ "CAMPANIA",
OC_CODICE_PROGRAMMA == "2016MISEBULFSC1" ~ "MISE",
OC_CODICE_PROGRAMMA == "FONDOGARANFSC" ~ "MISE",
COD_LOCALE_PROGETTO == "1MISESARCANAS121SV" ~ "CAMPANIA",
COD_LOCALE_PROGETTO == "1MISESARCANAS154" ~ "CAMPANIA",
COD_LOCALE_PROGETTO == "1MISESARCANAS2" ~ "BASILICATA",
COD_LOCALE_PROGETTO == "1MISESARCANAS3.3" ~ "CALABRIA",
COD_LOCALE_PROGETTO == "5MTRA1B1R003" ~ "MIT",
COD_LOCALE_PROGETTO == "5MTRA1B2R008" ~ "MIT",
TRUE ~ PSC)) %>%
mutate(ID_PSC = case_when(is.na(PSC) ~ "",
PSC == "DEAD" ~ "",
PSC == "???" ~ "",
PSC == "ACT" ~ "",
PSC == "COMM_BONIFICHE" ~ "",
PSC == "MIDIFESA" ~ "",
TRUE ~ paste0("PSC_", gsub(" ", "_", PSC)))) %>%
fix_id_psc_15_digit(.) %>%
# scarta progetti non psc
filter(ID_PSC != "") %>%
# clean
mutate(x_CICLO = X_CICLO) %>%
# sovrascrive descrizione tema
mutate(COD_SETTORE_INTERVENTO = COD_OPOS_NEW) %>%
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)) %>%
# variabili coesione
mutate(COE = case_when(PSC == "MOLISE" ~ OC_FINANZ_COESIONE_NETTO,
PSC == "CAMPANIA" ~ OC_FINANZ_COESIONE_NETTO,
PSC == "SICILIA" ~ OC_FINANZ_COESIONE_NETTO,
PSC == "ABRUZZO" ~ OC_FINANZ_COESIONE_NETTO,
TRUE ~ OC_FINANZ_COE_NETTOMIX),
COE_IMP = OC_IMPEGNI_COESIONE, # CHK: verificare associazione
COE_PAG = OC_PAG_COESIONE, # CHK: verificare associazione
# COE_ECO = FINANZ_STATO_FSC - OC_FINANZ_STATO_FSC_NETTO,
COE_ECO = FINANZ_STATO_FSC - OC_FINANZ_COESIONE_NETTO) %>%
select(COD_LOCALE_PROGETTO,
CUP,
OC_TITOLO_PROGETTO = TITOLO_PROGETTO,
OC_CODICE_PROGRAMMA,
x_PROGRAMMA = OC_DESCRIZIONE_PROGRAMMA,
OC_STATO_PROCEDURALE,
PSC,
ID_PSC,
x_CICLO,
COD_TEMA_NEW,
DESCR_TEMA_NEW,
COD_OPOS_NEW,
DESCR_OPOS_NEW,
AREA_TEMATICA,
COD_AREA_TEMATICA,
DESCR_AREA_TEMATICA,
SETTORE_INTERVENTO,
COD_SETTORE_INTERVENTO,
DESCR_SETTORE_INTERVENTO,
COE,
COE_IMP,
COE_PAG,
COE_ECO,
OC_FLAG_VISUALIZZAZIONE)
art44_liste <<- read_csv2(file.path(DRIVE, "ELAB", "20201031", "DB_FSC", "crea_db", "V.01", "temp",
"lista_progetti_all.csv"))%>%
rename(COD_LOCALE_PROGETTO = CODICE_LOCALE_PROGETTO) %>%
mutate(AREA_TEMATICA = gsub(" - ", "-", AREA_TEMATICA)) %>%
rename(x_MACROAREA = MACROAREA,
SETTORE_INTERVENTO = SETTORE_INTERVENTO_PSC,
OC_TITOLO_PROGETTO = TITOLO_PROGETTO,
x_CICLO = CICLO_PROGRAMMAZIONE,
x_PROGRAMMA = PROGRAMMA,
COE = RISORSE) %>%
mutate(ID_PSC = paste0("PSC_", gsub(" ", "_", PSC))) %>%
fix_id_psc_15_digit(.)
# art44 <<- art44_psc %>%
# semi_join(lista_psc %>%
# filter(TIPOLOGIA_AMMINISTRAZIONE == "REGIONALE"),
# by = "ID_PSC") %>%
# select(COD_LOCALE_PROGETTO, OC_CODICE_PROGRAMMA, COD_TEMA_NEW, DESCR_TEMA_NEW,
# COD_OPOS_NEW, DESCR_OPOS_NEW, COE) %>%
# bind_rows(art44_liste %>%
# semi_join(lista_psc %>%
# filter(TIPOLOGIA_AMMINISTRAZIONE != "REGIONALE"),
# by = "ID_PSC") %>%
# select(COD_LOCALE_PROGETTO, OC_CODICE_PROGRAMMA, COD_TEMA_NEW, DESCR_TEMA_NEW,
# COD_OPOS_NEW, DESCR_OPOS_NEW, COE))
# DEV: mancano variabili in art44_liste
}
#' 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,
COSTO_AMM_FSC = costo_ammesso_FSC) %>% # MEMO: porto dietro per analisi variabili COE
distinct(COD_LOCALE_PROGETTO,
OC_CODICE_PROGRAMMA,
COD_SETTORE_STRATEGICO_FSC,
# DESCR_SETTORE_STRATEGICO_FSC,
COD_ASSE_TEMATICO_FSC,
# DESCR_ASSE_TEMATICO_FSC,
COSTO_AMM_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"))
# risolve conflitti di naming (che ancora cambiano ogni volta...)
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)
} else 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)
}
# ------------------ 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")))
message("Questi sono gli strumenti attuativi non censiti in matrix:")
chk2 <- chk %>%
mutate(CHK = case_when(COE > 0 ~ "to_fix",
COE <= 0 ~ "zero",
is.na(COE) ~ "na")) %>%
count(x_CICLO, OC_CODICE_PROGRAMMA, x_PROGRAMMA, SETTORE_INTERVENTO, CHK)
print(chk2)
write_csv2(chk2, file.path(TEMP, paste0("fix_mapping_", bimestre, ".csv")))
message("Se ci sono NA-NA con COE NA va bene, restano così. Per tutti gli altri casi va rivisto lo script, che incorpora direttamente le correzioni")
# fix classi
appo <- appo %>%
mutate(AREA_TEMATICA = case_when(OC_CODICE_PROGRAMMA == "2016PATTIPUG" & AREA_TEMATICA == "NA-NA" & SETTORE_INTERVENTO == "09.02-NA" ~ "08-RIQUALIFICAZIONE URBANA",
TRUE ~ AREA_TEMATICA)) %>%
mutate(SETTORE_INTERVENTO = case_when(OC_CODICE_PROGRAMMA == "2016PATTIPUG" & SETTORE_INTERVENTO == "09.02-NA" ~ "08.01-EDILIZIA E SPAZI PUBBLICI",
TRUE ~ SETTORE_INTERVENTO))
message("Il caso Puglia con 09.02-NA è già gestito")
# calcola costo realizzato e economie
appo1 <- appo %>%
# filter(OC_FLAG_VISUALIZZAZIONE == 0) %>%
left_join(progetti %>%
select(COD_LOCALE_PROGETTO, COSTO_REALIZZATO, FINANZ_STATO_FSC, 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,
COE_ECO = FINANZ_STATO_FSC - OC_FINANZ_STATO_FSC_NETTO)
dim(appo)[1] == dim(appo1)[1]
# chk finanziamenti vs costi
chk <- appo1 %>%
group_by(COD_LOCALE_PROGETTO, x_CICLO) %>%
summarise(COE = sum(COE, na.rm = TRUE),
FINANZ_STATO_FSC = sum(FINANZ_STATO_FSC, na.rm = TRUE),
OC_FINANZ_STATO_FSC_NETTO = sum(OC_FINANZ_STATO_FSC_NETTO, na.rm = TRUE),
COSTO_AMM_FSC = sum(COSTO_AMM_FSC, na.rm = TRUE)) %>%
mutate(CHK = case_when(x_CICLO == "2014-2020" & abs(COE - COSTO_AMM_FSC) < 0.1 ~ "cost", # possibile solo su 1420
abs(COE - OC_FINANZ_STATO_FSC_NETTO) < 0.1 ~ "fin_net",
abs(COE- FINANZ_STATO_FSC) < 0.1 ~ "fin",
TRUE ~ "chk"))
chk %>%
# filter(x_CICLO == "2014-2020") %>%
# filter(x_CICLO == "2007-2013") %>%
group_by(CHK, x_CICLO) %>%
summarise(N = n(),
COE = sum(COE, na.rm = TRUE),
FINANZ_STATO_FSC = sum(FINANZ_STATO_FSC, na.rm = TRUE),
OC_FINANZ_STATO_FSC_NETTO = sum(OC_FINANZ_STATO_FSC_NETTO, na.rm = TRUE),
COSTO_AMM_FSC = sum(COSTO_AMM_FSC, na.rm = TRUE))
# chk economie
appo1 %>%
mutate(FINANZ_STATO_FSC = if_else(is.na(FINANZ_STATO_FSC), 0, FINANZ_STATO_FSC),
OC_FINANZ_STATO_FSC_NETTO = if_else(is.na(OC_FINANZ_STATO_FSC_NETTO), 0, OC_FINANZ_STATO_FSC_NETTO)) %>%
mutate(ECO = FINANZ_STATO_FSC - OC_FINANZ_STATO_FSC_NETTO) %>%
filter(ECO != 0) %>%
mutate(OC_STATO_PROGETTO = case_when(OC_STATO_PROGETTO == "Concluso" ~ "Concluso",
OC_STATO_PROGETTO == "Liquidato" ~ "Concluso",
TRUE ~ "In corso")) %>%
group_by(OC_STATO_PROGETTO) %>%
summarise(N = n(),
FSC = sum(FINANZ_STATO_FSC, na.rm = TRUE),
FSC_NET = sum(OC_FINANZ_STATO_FSC_NETTO, na.rm = TRUE)) %>%
mutate(ECO = FSC - FSC_NET)
# OC_STATO_PROGETTO N FSC FSC_NET ECO
# <chr> <int> <dbl> <dbl> <dbl>
# 1 Concluso 5269 1739358008. 1562285368. 177072641.
# 2 In corso 2437 2595703054. 2212930337. 382772717.
appo1 %>%
mutate(ECO = FINANZ_STATO_FSC - OC_FINANZ_STATO_FSC_NETTO,
DELTA = OC_FINANZ_STATO_FSC_NETTO - COSTO_AMM_FSC) %>%
filter(DELTA != 0) %>%
summarise(N = n(),
DELTA = sum(DELTA, na.rm = TRUE),
ECO = sum(ECO, na.rm = TRUE))
# 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))
# stato progetto per economie
appo2 <- appo1 %>%
rename(COE_CR = COSTO_REALIZZATO_2) %>%
mutate(STATO = case_when(COE_PAG / COE > 0.95 ~ "Conclusi",
COE_CR / COE > 0.95 ~ "Conclusi",
OC_STATO_PROCEDURALE == "Eseguito" ~ "Conclusi",
TRUE ~ "In corso"))
# fix CIS Taranto in PRA Puglia
appo3 <- fix_ciclo_cis_taranto_pra_puglia(progetti_psc = appo2)
# fix visualizzati PRA Campania
appo4 <- fix_visualizzati_pra_campania(progetti_psc = appo3)
# accoda 06
temp <- read_csv2(file.path(PSC, "sgp", paste0("dati_sgp_", bimestre, ".csv")), col_types = "ccccccccccdddddcccd")
out <- appo4 %>%
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_CR,
COE_PAG,
COE_ECO,
PSC,
ID_PSC,
STATO,
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 <- "Estrazione dati e calcolo indicatori_30062021.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)
# appo <- read_csv2(file.path(SGP, filename), guess_max = 25000) # 24928 progetti
# sum(appo$FINANZIAMENTO_FSC_NETTO) # 19027452171
# sum(appo$FINANZIAMENTO_TOTALE_PUBBLICO_NETTO) # 71662352262
# 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 ("COSTO_REALIZZATO...104" %in% names(appo)) {
appo <- appo %>%
rename(COSTO_REALIZZATO = COSTO_REALIZZATO...104)
}
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)
# chk costo realizzato doppia
# appo %>%
# summarise(CR_1 = sum(`COSTO_REALIZZATO...104`, na.rm=TRUE),
# CR_2 = sum(`COSTO_REALIZZATO...170`, na.rm=TRUE))
#
# appo %>%
# mutate(CHK = `COSTO_REALIZZATO...104` - `COSTO_REALIZZATO...170`) %>%
# summarise(CHK = sum(CHK, na.rm=TRUE))
# chk NA su importi
appo %>%
filter(is.na(IMPORTO_NAZIONALE) | is.na(IMPORTO_REGIONALE) | is.na(IMPORTO_NON_DEFINITO)) %>%
count()
# chk finanziamenti
appo %>%
mutate(TOT_IMPORTI = IMPORTO_NAZIONALE + IMPORTO_REGIONALE + IMPORTO_NON_DEFINITO) %>%
summarise(TOT_IMPORTI = sum(TOT_IMPORTI, na.rm = TRUE),
FINANZIAMENTO_FSC = sum(FINANZIAMENTO_FSC, na.rm = TRUE))
appo %>%
mutate(TOT_IMPORTI = IMPORTO_NAZIONALE + IMPORTO_REGIONALE + IMPORTO_NON_DEFINITO,
CHK = TOT_IMPORTI - FINANZIAMENTO_FSC) %>%
filter(CHK != 0) %>%
summarise(N = n(),
TOT_IMPORTI = sum(TOT_IMPORTI, na.rm = TRUE),
FINANZIAMENTO_FSC = sum(FINANZIAMENTO_FSC, na.rm = TRUE))
# chk pagamenti fSC
appo %>% summarise(PAG = sum(PAGAMENTI_FSC, na.rm = TRUE))
# chk su economie
appo %>%
mutate(FINANZIAMENTO_FSC = if_else(is.na(FINANZIAMENTO_FSC), 0, FINANZIAMENTO_FSC),
FINANZIAMENTO_FSC_NETTO = if_else(is.na(FINANZIAMENTO_FSC_NETTO), 0, FINANZIAMENTO_FSC_NETTO),
TOTALE_ECONOMIE_FSC = if_else(is.na(TOTALE_ECONOMIE_FSC), 0, TOTALE_ECONOMIE_FSC)) %>%
mutate(DELTA = FINANZIAMENTO_FSC - FINANZIAMENTO_FSC_NETTO,
CHK = TOTALE_ECONOMIE_FSC - DELTA) %>%
filter(CHK != 0) %>%
summarise(N = n(),
DELTA = sum(DELTA, na.rm = TRUE),
ECO = sum(TOTALE_ECONOMIE_FSC, na.rm = TRUE),
CHK = sum(CHK, na.rm = TRUE))
# 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(across(where(is.numeric), ~replace_na(., replace = 0))) %>%
mutate(x = FINANZIAMENTO_FSC_NETTO / FINANZIAMENTO_TOTALE_PUBBLICO_NETTO,
# x = FINANZIAMENTO_FSC / FINANZIAMENTO_TOTALE_PUBBLICO,
# k = if_else(is.na(IMPORTO_REGIONALE), 0, # MEMO: da 2010630 non si verifica più il problema; prima c'era quota random di 0.75
# IMPORTO_REGIONALE/(IMPORTO_REGIONALE+IMPORTO_NAZIONALE+IMPORTO_NON_DEFINITO)),
k = IMPORTO_REGIONALE / (IMPORTO_REGIONALE + IMPORTO_NAZIONALE + IMPORTO_NON_DEFINITO),
COE = FINANZIAMENTO_FSC_NETTO * k,
COE_IMP = IMPEGNI * x * k,
COE_CR = COSTO_REALIZZATO * x * k,
COE_PAG = PAGAMENTI_TOTALI * x * k, # MEMO: PAGAMENTI_FSC sono vuoti
COE_ECO = TOTALE_ECONOMIE_FSC * k)
# 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)
# economie
appo3 <- appo2
# 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),
# COE_CR = sum(COE_CR, 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),
COE_CR = sum(COE_CR, na.rm = TRUE),
COE_ECO = sum(COE_ECO, 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),
# COE_CR = sum(COE_CR, na.rm = TRUE))
# debug
print(appo3 %>% count(AREA_TEMATICA))
chk <- appo3 %>% filter(AREA_TEMATICA == "NA-NA")
write_csv2(chk, file.path(TEMP, paste0("chk_classi_missing_0006_", bimestre, ".csv")))
message("Questi sono gli strumenti attuativi non censiti in matrix:")
chk2 <- chk %>% count(CODICE_STRUMENTO, DESCRIZIONE_STRUMENTO)
print(chk2)
write_csv2(chk2, file.path(TEMP, paste0("add_to_mapping_0006_", bimestre, ".csv")))
message("Se ci sono NA-NA, correggi mapping.xlsx e rilancia")
# fix
appo4 <- fix_progetti_sgp(progetti_sgp = appo3, bimestre)
# stato progetto per economie
appo5 <- appo4 %>%
rename(OC_STATO_PROCEDURALE = STATO_PROCED) %>%
mutate(STATO = case_when(COE_PAG / COE > 0.95 ~ "Conclusi",
COE_CR / COE > 0.95 ~ "Conclusi",
OC_STATO_PROCEDURALE == "Eseguito" ~ "Conclusi",
TRUE ~ "In corso"))
# export
out <- appo5 %>%
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,
COE,
COE_IMP,
COE_CR,
COE_PAG,
COE_ECO,
PSC,
ID_PSC,
STATO,
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
#' @param fix_no_temi_no_coe Logico. Vuoi scartare i progetti con tema missing e finanziamenti pari a 0?
#' @return Dataframe
load_progetti_psc <- function(bimestre, fix_no_temi_no_coe=FALSE) {
progetti_psc <- read_csv2(file.path(PSC, "psc", paste0("dati_psc_", bimestre, ".csv")))
if (fix_no_temi_no_coe == TRUE) {
progetti_psc <- progetti_psc %>%
filter(!(AREA_TEMATICA == "NA-NA" & COE == 0))
}
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
appo1 <- progetti_psc %>% filter(OC_FLAG_VISUALIZZAZIONE != 4 &
OC_FLAG_VISUALIZZAZIONE != 5)
# MEMO: così scarto solo casi anomali PSC, rilevante per debiti e opcm campania
}
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
appo1 <- progetti_psc %>% filter(OC_FLAG_VISUALIZZAZIONE != 4 &
OC_FLAG_VISUALIZZAZIONE != 5)
# MEMO: così scarto solo casi anomali PSC, rilevante per debiti e opcm campania
}
# 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"))
# fix
report <- report %>%
# fix SIN BRINDISI lato DBCOE
filter(!(ID_PSC == "PSC_MATTM" & is.na(AREA_TEMATICA) & RISORSE == 0))
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)
#'
#' }
#'
#' Correzioni dati SGP
#'
#' Correzioni dati SGP per bimestre
#'
#' @param progetti_sgp Dataset progetti PSC da dentro prep_dati_sgp_bimestre()
#' @param bimestre Bimestre di riferimento
#' @return dataframe
#' @note Da usare dentro prep_dati_sgp_bimestre()
fix_progetti_sgp <- function(progetti_sgp, bimestre) {
if (bimestre == "20210630"){
progetti_sgp <- progetti_sgp %>%
mutate(ID_PSC = case_when(COD_LOCALE_PROGETTO == "EMIRIMO25" ~ "PSC_EMILIA-ROMA",
COD_LOCALE_PROGETTO == "EMIVUFE04/V" ~ "PSC_EMILIA-ROMA",
COD_LOCALE_PROGETTO == "UMBDTFR_09" ~ "PSC_UMBRIA",
COD_LOCALE_PROGETTO == "UMBDTFR_10" ~ "PSC_UMBRIA",
COD_LOCALE_PROGETTO == "UMBDTFR_15" ~ "PSC_UMBRIA",
TRUE ~ ID_PSC))
}
return(progetti_sgp)
}
#' Correzione progetti CIS Taranto in PRA Puglia
#'
#' Correzione progetti CIS Taranto in PRA Puglia, che vengono spostati su ciclo 2014-2020 ma restano nel PRA Puglia
#'
#' @param progetti_psc Dataset progetti PSC da dentro prep_dati_psc_bimestre()
#' @return dataframe
#' @note Da usare dentro prep_dati_psc_bimestre()
fix_ciclo_cis_taranto_pra_puglia <- function(progetti_psc) {
progetti_psc <- progetti_psc %>%
mutate(x_CICLO = as.character(x_CICLO)) %>%
mutate(x_CICLO = case_when(COD_LOCALE_PROGETTO == "1PUFC3.100006" ~ "2014-2020",
COD_LOCALE_PROGETTO == "1PUFC5.100029" ~ "2014-2020",
COD_LOCALE_PROGETTO == "1PUFC2.600004" ~ "2014-2020",
COD_LOCALE_PROGETTO == "1PUFC2.600003" ~ "2014-2020", # CHK: perché manca in interventi CIS?
COD_LOCALE_PROGETTO == "1PUFC2.600002" ~ "2014-2020",
COD_LOCALE_PROGETTO == "1PUFC2.600001" ~ "2014-2020",
TRUE ~ x_CICLO)) %>%
refactor_ciclo(.)
return(progetti_psc)
}
#' Correzione progetti con OC_FLAG_VISUALIZZAZIONE = 4 in PRA Campania
#'
#' Correzione progetti con OC_FLAG_VISUALIZZAZIONE = 4 in PRA Campania, che sono tutti ripresi perché presenti nel PSC se relativi a compensazioni ambientali e rifiuti (ex OPCM), tranne quello relativo ai debiti di EAV (1MISETPL.EAV01)
#'
#' @param progetti_psc Dataset progetti PSC da dentro prep_dati_psc_bimestre()
#' @return dataframe
#' @note Da usare dentro prep_dati_psc_bimestre()
fix_visualizzati_pra_campania <- function(progetti_psc) {
progetti_psc <- progetti_psc %>%
mutate(OC_FLAG_VISUALIZZAZIONE = case_when(OC_CODICE_PROGRAMMA == "2007CA001FA009" &
OC_FLAG_VISUALIZZAZIONE == 4 & COD_LOCALE_PROGETTO != "1MISETPL.EAV01" ~ 0,
TRUE ~ OC_FLAG_VISUALIZZAZIONE))
return(progetti_psc)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.