SELECT v.id, v.idluce, v.anno, v.numero, tvl.codice lettera, v.dataemissione, v.datascadenza, ri.codice codicefiscale, ri.cognome cognomei, ri.nome nomei, trim(ri.indirizzo) || ' ' || trim(ri.indirizzocivico) indirizzoi, ri.citta cittai, ri.cittaprovincia provinciai, ri.cap capi, (SELECT sum(lv.misura) FROM lavoro lv INNER JOIN tipolavoro tl ON lv.tipolavoro=tl.id WHERE lv.idversamento=v.id AND tl.codiceinterno IN (31) ) totaleluci, (SELECT sum((lv.misura * lv.importo)::numeric(19, 4)) FROM lavoro lv INNER JOIN tipolavoro tl ON lv.tipolavoro=tl.id WHERE lv.idversamento=v.id AND tl.codiceinterno IN (31,32) ) imponibileluci, (SELECT sum((lv.misura * lv.importo)::numeric(19, 4)) FROM lavoro lv INNER JOIN tipolavoro tl ON lv.tipolavoro=tl.id WHERE lv.idversamento=v.id AND tl.codiceinterno IN (34) ) imponibilespedizione, (SELECT sum((lv.misura * lv.importo)::numeric(19, 4)) FROM lavoro lv INNER JOIN tipolavoro tl ON lv.tipolavoro=tl.id WHERE lv.idversamento=v.id AND tl.codiceinterno NOT IN (31,32,34) ) imponibilealtro, (SELECT sum(vr.imponibile) FROM versamentoriepilogo vr WHERE vr.idversamento=v.id) totaleimponibile, (SELECT sum(vr.imposta) FROM versamentoriepilogo vr WHERE vr.idversamento=v.id) totaleimposta, (SELECT sum(vr.imponibile + vr.imposta) FROM versamentoriepilogo vr WHERE vr.idversamento=v.id) totaleimporto, (SELECT sum(vr.imponibile)+sum(vr.imposta) FROM versamentoinsoluto vi INNER JOIN versamentoriepilogo vr ON vi.idversamentoinsoluto=vr.idversamento WHERE vi.idversamento=v.id AND vi.sommareimporto='true') totaleimportoinsoluti, (SELECT sum(p.importoversato::decimal(19, 4)) FROM pagamento p INNER JOIN modalitaincasso mi ON p.idmodalitaincasso=mi.id WHERE mi.apareggio='false' AND p.datapagamento is NOT null AND p.idversamento = v.id) pagato, (SELECT sum(p2.importoversato::decimal(19, 4)) FROM pagamento p1 INNER JOIN pagamento p2 ON p1.id = p2.idpagamentoscaricato INNER JOIN modalitaincasso m2 ON p2.idmodalitaincasso = m2.id WHERE m2.apareggio='false' AND p2.datapagamento is NOT null AND p2.id>0 AND p1.idversamento = v.id) pagatoinsoluto, (SELECT sum(p.importoversato::decimal(19, 4)) FROM pagamento p INNER JOIN modalitaincasso mi ON p.idmodalitaincasso=mi.id WHERE mi.apareggio='true' AND p.datapagamento is NOT null AND p.idversamento = v.id) sopravvenienza, (SELECT sum(p2.importoversato::decimal(19, 4)) FROM pagamento p1 INNER JOIN pagamento p2 ON p1.id = p2.idpagamentoscaricato INNER JOIN modalitaincasso m2 ON p2.idmodalitaincasso = m2.id WHERE m2.apareggio='true' AND p2.datapagamento is NOT null AND p2.id>0 AND p1.idversamento = v.id) sopravvenienzainsoluto, (SELECT array_to_string(array_agg(ddd.nominativo), ', ', '') FROM (SELECT DISTINCT d.cognome || ' ' || d.nome nominativo FROM defunto d INNER JOIN lavoro lav ON lav.iddefunto=d.id WHERE lav.idversamento=v.id AND d.id>0 AND trim(d.cognome || d.nome)<>'') ddd) defunti FROM versamento v INNER JOIN tipoversamentolettera tvl ON v.idtipoversamentolettera=tvl.id INNER JOIN richiedente ri ON v.idrichiedenteintestatario = ri.id INNER JOIN richiedente rs ON v.idrichiedentespedizione = rs.id WHERE v.idruolo = [[ruolo_id]] AND v.notacredito='false' AND (SELECT count(*) FROM versamento nc WHERE v.id>0 AND v.id=nc.idversamentonotacredito AND nc.notacredito='true')=0 AND ( (1=[[tipo_selezione]]) OR (2=[[tipo_selezione]] AND (SELECT count(*) FROM pagamento p WHERE p.idversamento=v.id)> (SELECT count(*) FROM pagamento p WHERE p.idversamento=v.id AND p.datapagamento is NOT null) ) OR (3=[[tipo_selezione]] AND (SELECT count(*) FROM pagamento p WHERE p.idversamento=v.id)>0 AND (SELECT count(*) FROM pagamento p WHERE p.idversamento=v.id)= (SELECT count(*) FROM pagamento p WHERE p.idversamento=v.id AND p.datapagamento is NOT null) ) ) ORDER BY v.anno, v.numero, ri.cognome, ri.nome