# GET_COSTO_ART_BY_EVT

## Colonne

| Colonna | Tipo |
|---------|------|
| ID_EVENTO | NUMBER |
| COD_ARTICOLO | VARCHAR2(10) |
| COSTO_UNI | NUMBER |
| NUMERO | NUMBER |
| COSTO_CALC | NUMBER |
| COSTO_CALC_IVA | NUMBER |

## Definizione

```sql
CREATE OR REPLACE VIEW GET_COSTO_ART_BY_EVT AS
SELECT p.id_evento, ca.COD_ARTICOLO, nvl(p.COSTO_ARTICOLO, ca.costo_uni) as costo_uni,
(
    case when a.flg_qta_type = 'S' then nvl(qta_std_prel_tot, 0) else 1 end
    *
    case when a.flg_qta_type = 'C' then nvl(qta_coeff_prel_tot, 0) else 1 end
    *
    case when a.flg_qta_type = 'P' then nvl(qta_prec_prel_tot, 0) else 1 end
) as numero,
NVL(p.COSTO_ARTICOLO, ca.COSTO_UNI)
*
(
    case when a.flg_qta_type = 'S' then nvl(qta_std_prel_tot, 0) else 1 end
    *
    case when a.flg_qta_type = 'C' then nvl(qta_coeff_prel_tot, 0) else 1 end
    *
    case when a.flg_qta_type = 'P' then nvl(qta_prec_prel_tot, 0) else 1 end
) as costo_calc,
(NVL(p.COSTO_ARTICOLO, ca.COSTO_UNI)+NVL(p.COSTO_ARTICOLO, ca.COSTO_UNI)*(a.perc_iva/100))
*
(
    case when a.flg_qta_type = 'S' then nvl(qta_std_prel_tot, 0) else 1 end
    *
    case when a.flg_qta_type = 'C' then nvl(qta_coeff_prel_tot, 0) else 1 end
    *
    case when a.flg_qta_type = 'P' then nvl(qta_prec_prel_tot, 0) else 1 end
)
as costo_calc_iva
FROM ARTICOLI a
left JOIN COSTI_ARTICOLI ca ON a.COD_ARTICOLO = ca.COD_ARTICOLO
left join get_prel_art_tot p on a.cod_articolo = p.cod_articolo
left join eventi ed on ed.id = p.id_evento
left join eventi e on e.id = p.id_evento and e.data in (SELECT b.DATA_COSTO FROM COSTI_ARTICOLI b where b.cod_articolo = a.cod_articolo)
left join EVENTI_DET_OSPITI d on d.id_evento = nvl(e.id, ed.id) and d.cod_tipo_ospite = 8 -- adulti (se non trovo un evento per quel costo articolo lo devo ignorare)
WHERE (e.id is not null and ca.DATA_COSTO = nvl(e.data, (SELECT max(b.DATA_COSTO) FROM COSTI_ARTICOLI b where b.cod_articolo = a.cod_articolo)))
or (e.id is null and ca.cod_articolo is not null and ca.DATA_COSTO = nvl(e.data, (SELECT max(b.DATA_COSTO) FROM COSTI_ARTICOLI b where b.cod_articolo = a.cod_articolo)))
```
