246 lines
8.1 KiB
Markdown
246 lines
8.1 KiB
Markdown
# 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;```
|