# GET_EVENTI_DA_PAGARE_ENTRO_65GG ## Colonne | Colonna | Tipo | |---------|------| | ID | NUMBER | | CLIENTE | VARCHAR2(100) | | DATA | DATE | | LOCATION | VARCHAR2(200) | | DESCRIZIONE_TIPO_EVENTO | VARCHAR2(100) | | STATO | NUMBER | | TOTALE_CAPARRE_DOVUTE | NUMBER | | TOTALE_VERSATO | NUMBER | ## Definizione ```sql CREATE OR REPLACE VIEW GET_EVENTI_DA_PAGARE_ENTRO_65GG AS SELECT e.ID, e.CLIENTE, e.DATA, loc.LOCATION, -- Campo aggiornato per mostrare il nome della location te.DESCRIZIONE AS DESCRIZIONE_TIPO_EVENTO, e.STATO, NVL(caparre.TOTALE_DOVUTO, 0) AS TOTALE_CAPARRE_DOVUTE, NVL(pagamenti.TOTALE_PAGATO, 0) AS TOTALE_VERSATO FROM EVENTI e LEFT JOIN TB_TIPI_EVENTO te ON e.COD_TIPO = te.COD_TIPO LEFT JOIN LOCATION loc ON e.ID_LOCATION = loc.ID -- JOIN aggiunta per la tabella LOCATION LEFT JOIN ( -- Calcola il totale dovuto per la prima e seconda caparra (importi positivi) SELECT ID_EVENTO, SUM(ACCONTO) AS TOTALE_DOVUTO FROM EVENTI_ACCONTI WHERE ORDINE IN (10, 20) GROUP BY ID_EVENTO ) caparre ON e.ID = caparre.ID_EVENTO LEFT JOIN ( -- Calcola il totale versato, invertendo il segno della somma (gli importi sono negativi) SELECT ID_EVENTO, SUM(ACCONTO) * -1 AS TOTALE_PAGATO FROM EVENTI_ACCONTI WHERE ORDINE >= 1000 GROUP BY ID_EVENTO ) pagamenti ON e.ID = pagamenti.ID_EVENTO WHERE -- Lo stato deve essere 'Scheda Confermata' e.STATO = 300 -- Filtra per eventi futuri entro 65 giorni AND e.DATA BETWEEN SYSDATE AND SYSDATE + 65 -- ==================================================================================== -- CONDIZIONE DI PAGAMENTO CON TOLLERANZA AND NVL(pagamenti.TOTALE_PAGATO, 0) < (NVL(caparre.TOTALE_DOVUTO, 0) * (1 - /* TOLLERANZA */ 10 /* % */ / 100)) -- ==================================================================================== -- Assicuriamoci di considerare solo eventi per cui รจ richiesta almeno una caparra AND caparre.TOTALE_DOVUTO IS NOT NULL AND caparre.TOTALE_DOVUTO > 0 ORDER BY e.DATA ```