SELECT
   id_progetto AS idprogetto
 , presenza_varianti
 , erogatore
 , organismo_intermedio
 , stato_richiesta AS status
 , tipo_iniziativa
 , COALESCE(programma, 'N/D') AS programma
 , COALESCE(linea, 'N/D') AS linea
 , COALESCE(linea, 'N/D') AS clin
 , descrizione_linea AS dlin
 , atto_approvazione_bando AS attobando
 , (atto_approvazione_bando).numero AS nattobando
 , (atto_approvazione_bando).data AS dattobando
 , dirigente AS dirigenteregionaleresponsabile
 , tipologia_aiuto AS tipologiaaiuto
 , data_domanda AS ddom
 , descrizione_attivita AS desat
 , data_avvio_investimento AS dai
 , data_ultimazione_prevista AS dataprevistafineprogetto
 , data_completamento_istruttoria AS dci
 , data_respinta AS dres
 , titolo_progetto AS titoloprogetto
 , data_inizio_progetto_prevista AS inizio_progetto_previsto
 , data_inizio_progetto_effettiva AS inizio_progetto_effettivo
 , data_fine_progetto_prevista AS fine_progetto_prevista
 , data_fine_progetto_effettiva AS fine_progetto_effettiva
 , piano_dei_costi AS pdc
 , link_documentazione AS documenti
 , procedura_attivazione AS pratt
 , controlli_in_loco AS cil
 , data_ultimo_controllo_in_loco AS ducil
 , organismo_concedente AS organismoconcedente
 , norma_agevolazione AS normaagevolazione
 , titolare_bando AS titolarebando
 , codice_ateco_progetto AS ateco_progetto
 , atto_revoca AS atrev
 , array_to_string(array_distinct(tipo_agevolazione), ',') AS formaagevolazione
 , importo_richiesto AS iric
 , importo_richiesto_deminimis AS iricdm
 , array_to_string(atto_concessione_provvisoria, ',') AS atpro
 , importo_provvisorio AS ipro
 , importo_provvisorio_deminimis AS iprodm
 , array_to_string(atto_concessione_definitiva, ',') AS atdef
 , array_to_string(array(SELECT (unnest(atto_concessione_definitiva)).data), ',') AS dataammissionefinanziamento
 , array_to_string(array(SELECT (unnest(atto_concessione_definitiva)).numero), ',') AS numeroammissionefinanziamento
 , array_to_string(data_erogazione, ',') AS dataultimaerogazionebeneficiario
 , importo_definitivo AS contributoammesso
 , importo_definitivo_deminimis AS idefdm
-- , importo_definitivo_deminimis_lty AS idefdm_lty
 , array_to_string(data_erogazione, ',') AS dataultimaerogazione
 , importo_erogato AS contributoerogato
 , importo_erogato_deminimis AS contributoerogatodm
-- , importo_erogato_deminimis_lty AS contributoerogatodm_lty
 , erogazione_bancaria
 , array_to_string(banca_erogatrice, ',') AS banca_erogatrice
 , array_to_string(motivo_revoca, ',') AS motivorevoca
 , importo_revocato AS irev
 , array_to_string(atto_agevolazione_revocata, ',') AS attrev
 , spesa_richiesta AS costototaleprogetto
 , spesa_ammessa_in_istruttoria AS speseammissibiliistruttoria
 , spesa_ammessa AS investimentoammesso
 , cup AS cup_cipe
 , cup AS cupcipe
 , array_to_string(codici_di_progetto, ',') AS codiciprogetto
 , codice_progetto AS codiceprogetto
 , array_to_string(verbale, ',') AS verb
 , array_to_string(tipo_verbale, ',') AS tipoverb
 , partenariato
FROM progetti
LEFT JOIN (SELECT id_progetto, max(fonte_dati) AS fonte_dati, bool_or(ruolo_partner IS NOT NULL) AS partenariato FROM beneficiari_progetti GROUP BY id_progetto) partenariato USING(id_progetto)
LEFT JOIN linee USING(programma,linea)
LEFT JOIN bandi USING(atto_approvazione_bando)
LEFT JOIN (SELECT id_progetto, array_agg(codice) AS codici_di_progetto FROM codici_di_progetto GROUP BY id_progetto) codici_di_progetto USING(id_progetto)
LEFT JOIN (SELECT id_progetto, codifica AS fonte_dati, codice AS codice_progetto FROM codici_di_progetto) codice_progetto USING(id_progetto,fonte_dati)
LEFT JOIN (
	SELECT
	   id_progetto
	 , array_agg(DISTINCT tipo_verbale) AS tipo_verbale
	 , array_agg(DISTINCT verbale) AS verbale
	FROM verbali
	GROUP BY id_progetto
) AS verbali USING(id_progetto)
LEFT JOIN dati_finanziari_progetti_mv USING(id_progetto)
WHERE :codiceprogetto::text IS NOT NULL
  AND (id_progetto = :codiceprogetto OR id_progetto IN (SELECT id_progetto FROM codici_di_progetto WHERE codice = :codiceprogetto))
  AND CASE WHEN :ricerca::text IS NOT NULL THEN tipo_linea = 'Ricerca' ELSE TRUE END