# F_REP_CUCINA ## Codice Sorgente ```sql FUNCTION "F_REP_CUCINA" (p_data_in IN varchar2,p_data_fi IN varchar2) RETURN t_rep_cucina_tab PIPELINED AS cursor c_evento is select e.id, e.data, l.LOCATION, e.cliente, t.DESCRIZIONE, e.ORA_CERIMONIA, e.ORA_EVENTO, e.ALLERGIE, e.torta, e.CONFETTATA, e.STAMPA_MENU, e.extra_info, e.cliente_email, e.cliente_tel, e.referente_tel, e.distanza_location, e.buffet_iniziale, e.buffet_finale, e.primi, e.secondi, e.vini, e.extra_costi from eventi e left join location l on e.id_location = l.id join tb_tipi_evento t on e.cod_tipo = t.cod_tipo where e.data between to_date(p_data_in,'YYYYMMDD') and to_date(p_data_fi,'YYYYMMDD') and e.stato = 300 -- Considero soltanto le schede confermate and e.disabled = 0 and e.deleted = 0; v_data date; v_LOCATION varchar2(4000); v_cliente varchar2(4000); v_DESCRIZIONE varchar2(4000); v_ORA_CERIMONIA varchar2(4000); v_ORA_EVENTO varchar2(4000); v_TOT_ADULTI number; v_TOT_KINDER number; v_TOT_BABY number; v_TOT_STAFF number; v_TOT_INVITATI number; v_ALLERGIE varchar2(4000); v_TORTA varchar2(4000); v_CONFETTATA varchar2(4000); v_STAMPA_MENU varchar2(4000); v_angoli varchar2(4000); v_EXTRA_INFO varchar2(4000); v_NOTE_ADULTI varchar2(4000); v_NOTE_KINDER varchar2(4000); v_NOTE_BABY varchar2(4000); v_NOTE_STAFF varchar2(4000); v_cliente_email varchar2(4000) := ''; v_cliente_tel varchar2(4000) := ''; v_referente_tel varchar2(4000) := ''; v_distanza_location varchar2(4000) := ''; v_buffet_iniziale varchar2(4000) := ''; v_buffet_finale varchar2(4000) := ''; v_primi varchar2(4000) := ''; v_secondi varchar2(4000) := ''; v_vini varchar2(4000) := ''; v_extra_costi varchar2(4000) := ''; v_event_id number; BEGIN for c in c_evento loop begin v_TOT_ADULTI := 0; v_TOT_KINDER := 0; v_TOT_BABY := 0; v_TOT_STAFF := 0; v_TOT_INVITATI := 0; v_angoli := 0; v_NOTE_ADULTI := ''; v_NOTE_KINDER := ''; v_NOTE_BABY := ''; v_NOTE_STAFF := ''; v_cliente_email := c.cliente_email; v_cliente_tel := c.cliente_tel; v_referente_tel := c.referente_tel; v_distanza_location := c.distanza_location; v_buffet_iniziale := c.buffet_iniziale; v_buffet_finale := c.buffet_finale; v_primi := c.primi; v_secondi := c.secondi; v_vini := c.vini; v_extra_costi := c.extra_costi; v_event_id := c.id; --ospiti select nvl(sum(o.NUMERO),0) into v_TOT_ADULTI from eventi e join eventi_det_ospiti o on e.id = o.id_evento --join tb_tipi_ospiti tos on o.cod_tipo_ospite = tos.COD_TIPO where e.id = c.id and o.cod_tipo_ospite = 8; -- adulti begin select o.NOTE into v_NOTE_ADULTI from eventi e join eventi_det_ospiti o on e.id = o.id_evento where e.id = c.id and o.cod_tipo_ospite = 8; -- adulti exception when no_data_found then null; end; select nvl(sum(o.NUMERO),0) into v_TOT_KINDER from eventi e join eventi_det_ospiti o on e.id = o.id_evento --join tb_tipi_ospiti tos on o.cod_tipo_ospite = tos.COD_TIPO where e.id = c.id and o.cod_tipo_ospite = 5; --Kinder begin select o.NOTE into v_NOTE_KINDER from eventi e join eventi_det_ospiti o on e.id = o.id_evento where e.id = c.id and o.cod_tipo_ospite = 5; --Kinder exception when no_data_found then null; end; select nvl(sum(o.NUMERO),0) into v_TOT_BABY from eventi e join eventi_det_ospiti o on e.id = o.id_evento --join tb_tipi_ospiti tos on o.cod_tipo_ospite = tos.COD_TIPO where e.id = c.id and o.cod_tipo_ospite = 6; -- Baby begin select o.NOTE into v_NOTE_BABY from eventi e join eventi_det_ospiti o on e.id = o.id_evento where e.id = c.id and o.cod_tipo_ospite = 6; -- Baby exception when no_data_found then null; end; select nvl(sum(o.NUMERO),0) into v_TOT_STAFF from eventi e join eventi_det_ospiti o on e.id = o.id_evento --join tb_tipi_ospiti tos on o.cod_tipo_ospite = tos.COD_TIPO where e.id = c.id and o.cod_tipo_ospite = 7; -- Staff begin select o.NOTE into v_NOTE_STAFF from eventi e join eventi_det_ospiti o on e.id = o.id_evento where e.id = c.id and o.cod_tipo_ospite = 7; -- Staff exception when no_data_found then null; end; select nvl(e.tot_ospiti,0) into v_TOT_INVITATI from eventi e where e.id = c.id; --angoli "speciali" v_angoli := ''; for a in ( select trim(substr(a.descrizione || ' - ' || p.note,1,1000)) descrizione from eventi e join eventi_det_prel p on e.id=p.id_evento join articoli a on p.cod_articolo=a.cod_articolo where a.flg_cucina = 1 and e.id = c.id ) loop v_angoli := a.descrizione || ', ' || v_angoli ; end loop; PIPE ROW(t_rep_cucina_row( c.data,c.location,c.cliente, c.DESCRIZIONE, to_char(c.ORA_CERIMONIA,'HH24:MI'), to_char(c.ORA_EVENTO,'HH24:MI'), v_TOT_ADULTI , v_TOT_KINDER , v_TOT_BABY , v_TOT_STAFF , v_TOT_INVITATI , c.ALLERGIE , c.TORTA , c.CONFETTATA , c.STAMPA_MENU , v_angoli, c.extra_info , v_NOTE_ADULTI , v_NOTE_KINDER , v_NOTE_BABY , v_NOTE_STAFF , v_cliente_email , v_cliente_tel , v_referente_tel , v_distanza_location , v_buffet_iniziale , v_buffet_finale , v_primi , v_secondi , v_vini , v_extra_costi , v_event_id )); --exception when others -- then null; exception when others then RAISE_APPLICATION_ERROR(-20000, 'Errore: ' || SQLCODE || ' - ' || SUBSTR(SQLERRM, 1 , 64)); end; end loop; RETURN; END;```