Initial commit
This commit is contained in:
22
docs/functions/CLOB2BLOB.md
Normal file
22
docs/functions/CLOB2BLOB.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# CLOB2BLOB
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "CLOB2BLOB" (AClob CLOB) return BLOB is
|
||||
Result BLOB;
|
||||
o1 integer;
|
||||
o2 integer;
|
||||
c integer;
|
||||
w integer;
|
||||
begin
|
||||
o1 := 1;
|
||||
o2 := 1;
|
||||
c := 0;
|
||||
w := 0;
|
||||
DBMS_LOB.CreateTemporary(Result, true);
|
||||
DBMS_LOB.ConvertToBlob(Result, AClob, length(AClob), o1, o2, 0, c, w);
|
||||
return(Result);
|
||||
end clob2blob;
|
||||
|
||||
```
|
||||
10
docs/functions/EXTDATE_GET_ITA.md
Normal file
10
docs/functions/EXTDATE_GET_ITA.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# EXTDATE_GET_ITA
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
function extdate_get_ita( p_date date ) return varchar2
|
||||
as
|
||||
begin
|
||||
return REGEXP_REPLACE(TO_CHAR(p_date, 'Day dd Month yyyy', 'NLS_DATE_LANGUAGE = ITALIAN'), ' [ ]+', ' ');
|
||||
end;```
|
||||
37
docs/functions/F_CI_SONO_EVENTI_CONFERMATI.md
Normal file
37
docs/functions/F_CI_SONO_EVENTI_CONFERMATI.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# F_CI_SONO_EVENTI_CONFERMATI
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION F_CI_SONO_EVENTI_CONFERMATI
|
||||
(
|
||||
P_EVT_DATE IN DATE
|
||||
, P_LOCATION_ID IN NUMBER
|
||||
, P_BYPASS IN NUMBER
|
||||
) RETURN NUMBER AS
|
||||
|
||||
v_evt_cnt number;
|
||||
|
||||
BEGIN
|
||||
|
||||
-- function bypass
|
||||
if P_BYPASS > 0 then
|
||||
return 0;
|
||||
end if;
|
||||
|
||||
select
|
||||
count(e.id) as evt_cnt
|
||||
into v_evt_cnt
|
||||
from eventi e
|
||||
join vw_event_color c on c.id = e.id
|
||||
where e.data = P_EVT_DATE
|
||||
and e.id_location = P_LOCATION_ID
|
||||
and c.status = 'Confermato';
|
||||
|
||||
if v_evt_cnt > 0 then
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
end if;
|
||||
|
||||
END F_CI_SONO_EVENTI_CONFERMATI;```
|
||||
45
docs/functions/F_DAY_TO_NAME.md
Normal file
45
docs/functions/F_DAY_TO_NAME.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# F_DAY_TO_NAME
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION F_DAY_TO_NAME
|
||||
(
|
||||
DAY_NUMBER IN NUMBER
|
||||
) RETURN VARCHAR2 AS
|
||||
v_day_number number := DAY_NUMBER;
|
||||
v_language varchar2(255);
|
||||
BEGIN
|
||||
with t as (
|
||||
select DECODE(parameter, 'NLS_CHARACTERSET', 'CHARACTER SET',
|
||||
'NLS_LANGUAGE', 'LANGUAGE',
|
||||
'NLS_TERRITORY', 'TERRITORY') name,
|
||||
value from v$nls_parameters
|
||||
WHERE parameter IN ( 'NLS_CHARACTERSET', 'NLS_LANGUAGE', 'NLS_TERRITORY')
|
||||
)
|
||||
select value into v_language
|
||||
from t
|
||||
where name = 'LANGUAGE';
|
||||
|
||||
if v_language = 'AMERICAN' then
|
||||
case v_day_number
|
||||
when 1 then return 'Domenica';
|
||||
when 2 then return 'Lunedì';
|
||||
when 3 then return 'Martedì';
|
||||
when 4 then return 'Mercoledì';
|
||||
when 5 then return 'Giovedì';
|
||||
when 6 then return 'Venerdì';
|
||||
when 7 then return 'Sabato';
|
||||
end case;
|
||||
else
|
||||
case v_day_number
|
||||
when 1 then return 'Lunedì';
|
||||
when 2 then return 'Martedì';
|
||||
when 3 then return 'Mercoledì';
|
||||
when 4 then return 'Giovedì';
|
||||
when 5 then return 'Venerdì';
|
||||
when 6 then return 'Sabato';
|
||||
when 7 then return 'Domenica';
|
||||
end case;
|
||||
end if;
|
||||
END F_DAY_TO_NAME;```
|
||||
22
docs/functions/F_EVENTO_SCADUTO.md
Normal file
22
docs/functions/F_EVENTO_SCADUTO.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# F_EVENTO_SCADUTO
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION F_EVENTO_SCADUTO
|
||||
(
|
||||
DATA_SCADENZA IN DATE,
|
||||
STATO_EVENTO IN NUMBER,
|
||||
STATO_FROM IN NUMBER,
|
||||
STATO_TO IN NUMBER
|
||||
) RETURN NUMBER AS
|
||||
BEGIN
|
||||
if trunc(DATA_SCADENZA) <= trunc(sysdate)
|
||||
and STATO_EVENTO between STATO_FROM and STATO_TO
|
||||
then
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
end if;
|
||||
END F_EVENTO_SCADUTO;
|
||||
```
|
||||
31
docs/functions/F_GET_ANGOLO_ALLESTIMENTO.md
Normal file
31
docs/functions/F_GET_ANGOLO_ALLESTIMENTO.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# F_GET_ANGOLO_ALLESTIMENTO
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "F_GET_ANGOLO_ALLESTIMENTO" (
|
||||
p_filtro VARCHAR2,
|
||||
p_id NUMBER
|
||||
) RETURN VARCHAR2 AS
|
||||
|
||||
TYPE ref_cur IS REF CURSOR;
|
||||
c_data ref_cur;
|
||||
v_val VARCHAR2(1000);
|
||||
v_filtro VARCHAR2(100);
|
||||
v_id NUMBER;
|
||||
BEGIN
|
||||
v_filtro := p_filtro;
|
||||
v_id := p_id;
|
||||
OPEN c_data FOR ' select substr(a.descrizione || '' - '' || p.note ,1,1000)
|
||||
from eventi e
|
||||
left join location l on e.id_location = l.id
|
||||
join eventi_det_prel p on e.id=p.id_evento
|
||||
join articoli a on p.cod_articolo=a.cod_articolo
|
||||
where p.COD_ARTICOLO = :filtro -- AN-GELAT
|
||||
and e.id = to_number(:id)'
|
||||
USING v_filtro, v_id;
|
||||
|
||||
FETCH c_data INTO v_val;
|
||||
CLOSE c_data;
|
||||
RETURN v_val;
|
||||
END;```
|
||||
34
docs/functions/F_GET_ANGOLO_ALLESTIMENTO_OB.md
Normal file
34
docs/functions/F_GET_ANGOLO_ALLESTIMENTO_OB.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# F_GET_ANGOLO_ALLESTIMENTO_OB
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "F_GET_ANGOLO_ALLESTIMENTO_OB" (
|
||||
p_filtro VARCHAR2,
|
||||
p_id NUMBER
|
||||
) RETURN VARCHAR2
|
||||
--ANGOLI OPEN BAR
|
||||
AS
|
||||
|
||||
TYPE ref_cur IS REF CURSOR;
|
||||
c_data ref_cur;
|
||||
v_val VARCHAR2(1000);
|
||||
v_filtro VARCHAR2(100);
|
||||
v_id NUMBER;
|
||||
BEGIN
|
||||
v_filtro := p_filtro;
|
||||
v_id := p_id;
|
||||
OPEN c_data FOR ' select substr(a.descrizione || '' - '' || p.note ,1,1000)
|
||||
from eventi e
|
||||
left join location l on e.id_location = l.id
|
||||
join eventi_det_prel p on e.id=p.id_evento
|
||||
join articoli a on p.cod_articolo=a.cod_articolo
|
||||
where a.cod_categ = ''AN-FIN''
|
||||
and a.descrizione like :filtro -- AN-GELAT
|
||||
and e.id = to_number(:id)'
|
||||
USING v_filtro, v_id;
|
||||
|
||||
FETCH c_data INTO v_val;
|
||||
CLOSE c_data;
|
||||
RETURN v_val;
|
||||
END;```
|
||||
37
docs/functions/F_GET_COSTO_ARTICOLO.md
Normal file
37
docs/functions/F_GET_COSTO_ARTICOLO.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# F_GET_COSTO_ARTICOLO
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
function f_get_costo_articolo(p_cod_articolo varchar2, p_date date)
|
||||
return number
|
||||
as
|
||||
v_costo number := null;
|
||||
begin
|
||||
|
||||
-- Cerco il costo alla data
|
||||
begin
|
||||
SELECT a.costo_uni
|
||||
into v_costo
|
||||
FROM COSTI_ARTICOLI a
|
||||
where a.data_costo = p_date
|
||||
and a.cod_articolo = p_cod_articolo;
|
||||
exception when no_data_found then
|
||||
v_costo := null;
|
||||
end;
|
||||
|
||||
-- Se non lo trovo prendo l'ultimo costo
|
||||
begin
|
||||
SELECT a.costo_uni
|
||||
into v_costo
|
||||
FROM COSTI_ARTICOLI a
|
||||
WHERE a.DATA_COSTO = (SELECT max(b.DATA_COSTO) FROM COSTI_ARTICOLI b where b.cod_articolo = a.cod_articolo)
|
||||
and a.cod_articolo = p_cod_articolo;
|
||||
exception when no_data_found then
|
||||
v_costo := null;
|
||||
end;
|
||||
|
||||
-- se non trovo niente torno 0
|
||||
return nvl(v_costo, 0);
|
||||
end;
|
||||
```
|
||||
164
docs/functions/F_GET_OSPITI.md
Normal file
164
docs/functions/F_GET_OSPITI.md
Normal file
@@ -0,0 +1,164 @@
|
||||
# F_GET_OSPITI
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "F_GET_OSPITI" (
|
||||
p_id_evento IN NUMBER
|
||||
) RETURN t_det_ospiti_tab
|
||||
PIPELINED
|
||||
AS
|
||||
|
||||
v_data DATE;
|
||||
v_location VARCHAR2(100);
|
||||
v_cliente VARCHAR2(100);
|
||||
v_descrizione VARCHAR2(100);
|
||||
v_ora_cerimonia VARCHAR2(10);
|
||||
v_ora_evento VARCHAR2(10);
|
||||
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(1000);
|
||||
v_confettata VARCHAR2(100);
|
||||
v_stampa_menu VARCHAR2(100);
|
||||
v_angoli VARCHAR2(1000);
|
||||
v_extra_info VARCHAR2(1000);
|
||||
v_note_adulti VARCHAR2(1000);
|
||||
v_note_kinder VARCHAR2(1000);
|
||||
v_note_baby VARCHAR2(1000);
|
||||
v_note_staff VARCHAR2(1000);
|
||||
BEGIN
|
||||
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 := '';
|
||||
|
||||
--ospiti
|
||||
SELECT
|
||||
nvl(SUM(o.numero),
|
||||
0)
|
||||
INTO v_tot_adulti
|
||||
FROM
|
||||
eventi_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
AND o.cod_tipo_ospite = 8; -- adulti
|
||||
|
||||
BEGIN
|
||||
SELECT
|
||||
o.note
|
||||
INTO v_note_adulti
|
||||
FROM
|
||||
eventi_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
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_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
AND o.cod_tipo_ospite = 5; --Kinder
|
||||
|
||||
BEGIN
|
||||
SELECT
|
||||
o.note
|
||||
INTO v_note_kinder
|
||||
FROM
|
||||
eventi_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
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_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
AND o.cod_tipo_ospite = 6; -- Baby
|
||||
|
||||
BEGIN
|
||||
SELECT
|
||||
o.note
|
||||
INTO v_note_baby
|
||||
FROM
|
||||
eventi_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
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_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
AND o.cod_tipo_ospite = 7; -- Staff
|
||||
|
||||
BEGIN
|
||||
SELECT
|
||||
o.note
|
||||
INTO v_note_staff
|
||||
FROM
|
||||
eventi_det_ospiti o
|
||||
WHERE
|
||||
o.id_evento = p_id_evento
|
||||
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 = p_id_evento;
|
||||
|
||||
PIPE ROW ( t_det_ospiti_row(p_id_evento, v_tot_adulti, v_tot_kinder, v_tot_baby, v_tot_staff,
|
||||
v_tot_invitati, v_note_adulti, v_note_kinder, v_note_baby, v_note_staff) );
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
NULL;
|
||||
END;
|
||||
|
||||
RETURN;
|
||||
END;```
|
||||
36
docs/functions/F_GET_QTA_IMPEGNATA.md
Normal file
36
docs/functions/F_GET_QTA_IMPEGNATA.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# F_GET_QTA_IMPEGNATA
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "F_GET_QTA_IMPEGNATA" (
|
||||
p_codart VARCHAR2,
|
||||
p_data_from DATE,
|
||||
p_data_to DATE DEFAULT NULL
|
||||
) RETURN NUMBER AS
|
||||
v_qta NUMBER;
|
||||
v_data_to DATE := p_data_to;
|
||||
BEGIN
|
||||
v_qta := 0;
|
||||
IF ( p_data_to IS NULL ) THEN
|
||||
v_data_to := p_data_from;
|
||||
END IF;
|
||||
BEGIN
|
||||
SELECT
|
||||
nvl(SUM(qta_imp),
|
||||
0)
|
||||
INTO v_qta
|
||||
FROM
|
||||
v_impegni_articoli
|
||||
WHERE
|
||||
cod_articolo = p_codart
|
||||
--and data <= p_data --
|
||||
AND data BETWEEN p_data_from AND v_data_to; -- qta impegnata per quella data
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
v_qta := 0;
|
||||
END;
|
||||
|
||||
RETURN v_qta;
|
||||
END;```
|
||||
31
docs/functions/F_GET_TOT_OSPITI.md
Normal file
31
docs/functions/F_GET_TOT_OSPITI.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# F_GET_TOT_OSPITI
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "F_GET_TOT_OSPITI" (
|
||||
p_id_evento IN NUMBER,
|
||||
p_tipo_ospite IN NUMBER := -1
|
||||
) RETURN NUMBER AS
|
||||
v_tot NUMBER;
|
||||
BEGIN
|
||||
v_tot := 0;
|
||||
BEGIN
|
||||
SELECT
|
||||
nvl(SUM(numero),
|
||||
0)
|
||||
INTO v_tot
|
||||
FROM
|
||||
eventi_det_ospiti
|
||||
WHERE
|
||||
id_evento = p_id_evento
|
||||
AND ( cod_tipo_ospite = p_tipo_ospite
|
||||
OR p_tipo_ospite = - 1 );
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
v_tot := 0;
|
||||
END;
|
||||
|
||||
RETURN v_tot;
|
||||
END;```
|
||||
34
docs/functions/F_GET_TOVAGLIATO_ALLESTIMENTO.md
Normal file
34
docs/functions/F_GET_TOVAGLIATO_ALLESTIMENTO.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# F_GET_TOVAGLIATO_ALLESTIMENTO
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "F_GET_TOVAGLIATO_ALLESTIMENTO" (
|
||||
p_filtro VARCHAR2,
|
||||
p_id NUMBER
|
||||
) RETURN VARCHAR2 AS
|
||||
|
||||
TYPE ref_cur IS REF CURSOR;
|
||||
c_data ref_cur;
|
||||
v_val VARCHAR2(1000);
|
||||
v_filtro VARCHAR2(100);
|
||||
v_id NUMBER;
|
||||
BEGIN
|
||||
v_filtro := p_filtro;
|
||||
v_id := p_id;
|
||||
OPEN c_data FOR ' select substr(a.descrizione || '' - '' || p.note ,1,1000) as dato
|
||||
from eventi e
|
||||
left join location l on e.id_location = l.id
|
||||
join eventi_det_prel p on e.id=p.id_evento
|
||||
join articoli a on p.cod_articolo=a.cod_articolo
|
||||
join TB_CODICI_CATEG c on a.cod_categ=c.cod_categ
|
||||
--where c.COD_TIPO = ''TVB'' -- dividere tovagliolo da tovagliato con i codici categ
|
||||
where c.COD_TIPO = :filtro
|
||||
and rownum = 1 -- se esistono più articoli fare list_agg op loop
|
||||
and e.id = to_number(:id)'
|
||||
USING v_filtro, v_id;
|
||||
|
||||
FETCH c_data INTO v_val;
|
||||
CLOSE c_data;
|
||||
RETURN v_val;
|
||||
END;```
|
||||
84
docs/functions/F_LIST_PRELIEVO_ADD_ARTICOLO.md
Normal file
84
docs/functions/F_LIST_PRELIEVO_ADD_ARTICOLO.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# F_LIST_PRELIEVO_ADD_ARTICOLO
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
function f_list_prelievo_add_articolo(
|
||||
p_event_id number,
|
||||
p_articolo_add varchar2,
|
||||
p_qta_aperitivo NUMBER := 0,
|
||||
p_qta_seduto NUMBER := 0,
|
||||
p_qta_dolci NUMBER := 0
|
||||
)
|
||||
return varchar2
|
||||
as
|
||||
v_qta_imp number;
|
||||
v_qta_giac number;
|
||||
v_data_evento date;
|
||||
v_cod_art varchar2(10);
|
||||
v_error_json varchar2(4000);
|
||||
v_qta_da_imp NUMBER;
|
||||
v_qta_da_imp_test NUMBER;
|
||||
v_num_evt_imp number;
|
||||
BEGIN
|
||||
|
||||
v_cod_art := p_articolo_add;
|
||||
v_qta_da_imp := nvl(p_qta_aperitivo, 0) + nvl(p_qta_seduto, 0) + nvl(p_qta_dolci, 0);
|
||||
|
||||
begin
|
||||
|
||||
select trunc(data) as data
|
||||
into v_data_evento
|
||||
from eventi where id = p_event_id;
|
||||
exception when no_data_found then
|
||||
rollback;
|
||||
RETURN '{"type":"error","code":"'||SQLCODE||'","stack":"'||SQLERRM||'","message":"Evento non trovato"}';
|
||||
end;
|
||||
begin
|
||||
select qta_giac
|
||||
into v_qta_giac
|
||||
from articoli
|
||||
where COD_ARTICOLO = v_cod_art;
|
||||
exception when no_data_found then
|
||||
rollback;
|
||||
RETURN '{"type":"error","code":"'||SQLCODE||'","stack":"'||SQLERRM||'","message":"Articolo non trovato"}';
|
||||
end;
|
||||
|
||||
|
||||
select count(*)
|
||||
into v_num_evt_imp
|
||||
from V_IMPEGNI_ARTICOLI
|
||||
where COD_ARTICOLO = v_cod_art
|
||||
and data between v_data_evento - 2 and v_data_evento + 2;
|
||||
|
||||
v_qta_imp := nvl(f_get_qta_impegnata (v_cod_art, v_data_evento - 2, v_data_evento + 2 ) , 0);
|
||||
|
||||
--insert impegno articolo
|
||||
begin
|
||||
insert into eventi_det_prel (id_evento, cod_articolo,QTA_MAN_APE,QTA_MAN_SEDU,QTA_MAN_BUFDOL, COSTO_ARTICOLO)
|
||||
values (p_event_id, p_articolo_add, p_qta_aperitivo, p_qta_seduto, p_qta_dolci, f_get_costo_articolo(v_cod_art, v_data_evento));
|
||||
|
||||
-- aggiorna liste prelievo
|
||||
EVENTI_AGGIORNA_QTA_LISTA(
|
||||
P_ID_EVENTO => p_event_id
|
||||
);
|
||||
|
||||
-- Controlla banalmente se sono stati prelevati su altri eventi
|
||||
if v_qta_imp + v_qta_da_imp > v_qta_giac then
|
||||
RETURN '{"type":"warning","message":"Attenzione: Non hai abbastanza articoli di questo tipo a magazzino"}';
|
||||
end if;
|
||||
|
||||
-- Se trovo articoli già impegnati in quel giorno mostro un messaggio - 16/11/2022
|
||||
-- Continuo lo stesso ma do un messaggio di errore anzichè di successo
|
||||
if(v_qta_imp > 0 and v_num_evt_imp > 0) then
|
||||
RETURN '{"type":"warning","code":"'||SQLCODE||'","stack":"'||SQLERRM||'","message":"Attenzione! Articolo '||p_articolo_add||' già impegnato '||v_num_evt_imp||' '||(case when v_num_evt_imp > 1 then 'volte' else 'volta' end)||' dal '||to_char(v_data_evento - 2, 'dd-mm-yyyy')||' al '||to_char(v_data_evento + 2, 'dd-mm-yyyy')||'"}';
|
||||
end if;
|
||||
|
||||
RETURN '{"type":"success","message":"Articolo aggiunto con successo"}';
|
||||
exception when others then
|
||||
RETURN '{"type":"success","message":"Articolo aggiunto con errori: '||replace(replace(SQLERRM, 'ORA-20000: Errore:', ''), '-20000 - ', '')||'"}';
|
||||
end;
|
||||
|
||||
rollback;
|
||||
return '{"type":"error","code":"","stack":"","message":"Errore sconosciuto"}';
|
||||
end f_list_prelievo_add_articolo;```
|
||||
38
docs/functions/F_MAX_NUMERO_EVENTI_RAGGIUNTO.md
Normal file
38
docs/functions/F_MAX_NUMERO_EVENTI_RAGGIUNTO.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# F_MAX_NUMERO_EVENTI_RAGGIUNTO
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION F_MAX_NUMERO_EVENTI_RAGGIUNTO
|
||||
(
|
||||
P_GIORNO IN DATE
|
||||
) RETURN NUMBER AS
|
||||
v_max_eventi TB_CALENDAR_LOCKS.max_eventi%TYPE; -- Variable to hold the max_eventi value from TB_CALENDAR_LOCKS
|
||||
v_event_count NUMBER; -- Variable to hold the count of events from EVENTI
|
||||
BEGIN
|
||||
-- Step 1: Check if P_GIORNO is present in TB_CALENDAR_LOCKS and get the max_eventi value for that day
|
||||
BEGIN
|
||||
SELECT max_eventi
|
||||
INTO v_max_eventi
|
||||
FROM TB_CALENDAR_LOCKS
|
||||
WHERE giorno = P_GIORNO;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
-- If the date is not found in TB_CALENDAR_LOCKS, return -1 (or some other code to indicate the absence)
|
||||
RETURN -1;
|
||||
END;
|
||||
|
||||
-- Step 2: Count how many events occurred on P_GIORNO in the EVENTI table
|
||||
SELECT COUNT(*)
|
||||
INTO v_event_count
|
||||
FROM EVENTI
|
||||
WHERE TRUNC(DATA) = TRUNC(P_GIORNO); -- Use TRUNC to compare only the date part
|
||||
|
||||
-- Step 3: Compare the event count with the max_eventi and return the appropriate result
|
||||
IF v_event_count >= v_max_eventi THEN
|
||||
RETURN 1; -- Maximum number of events has been reached or exceeded
|
||||
ELSE
|
||||
RETURN 0; -- Maximum number of events has not been reached
|
||||
END IF;
|
||||
|
||||
END F_MAX_NUMERO_EVENTI_RAGGIUNTO;```
|
||||
36
docs/functions/F_MAX_NUM_EVENTI_CONFERMATI.md
Normal file
36
docs/functions/F_MAX_NUM_EVENTI_CONFERMATI.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# F_MAX_NUM_EVENTI_CONFERMATI
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION F_MAX_NUM_EVENTI_CONFERMATI
|
||||
(
|
||||
P_EVT_DATE IN DATE
|
||||
, P_MAX_EVT_NUM NUMBER
|
||||
, P_BYPASS IN NUMBER
|
||||
) RETURN NUMBER AS
|
||||
|
||||
v_evt_cnt number;
|
||||
|
||||
BEGIN
|
||||
|
||||
-- function bypass
|
||||
if P_BYPASS > 0 then
|
||||
return 0;
|
||||
end if;
|
||||
|
||||
select
|
||||
count(e.id) as evt_cnt
|
||||
into v_evt_cnt
|
||||
from eventi e
|
||||
join vw_event_color c on c.id = e.id
|
||||
where e.data = P_EVT_DATE
|
||||
and c.status = 'Confermato';
|
||||
|
||||
if v_evt_cnt >= P_MAX_EVT_NUM then
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
end if;
|
||||
|
||||
END F_MAX_NUM_EVENTI_CONFERMATI;```
|
||||
433
docs/functions/F_REP_ALLESTIMENTI.md
Normal file
433
docs/functions/F_REP_ALLESTIMENTI.md
Normal file
@@ -0,0 +1,433 @@
|
||||
# F_REP_ALLESTIMENTI
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "F_REP_ALLESTIMENTI" ( p_data_in IN varchar2 default to_char(sysdate,'YYYYMMD'),
|
||||
p_data_fi IN varchar2 default to_char(sysdate + 30,'YYYYMMD')
|
||||
)
|
||||
RETURN t_rep_allestimenti_tab PIPELINED AS
|
||||
|
||||
v_data_in varchar2(100);
|
||||
v_data_fi varchar2(100);
|
||||
|
||||
cursor c_evento is
|
||||
with t as (--select e.id, e.data, l.location, e.torta, e.confettata, e.stampa_menu
|
||||
select e.id, e.data, l.location, e.torta,
|
||||
e.altro_a as confettata,
|
||||
e.sedia as stampa_menu
|
||||
from eventi e
|
||||
left join location l on e.id_location = l.id
|
||||
--where data >= sysdate
|
||||
where e.data between to_date(v_data_in,'YYYYMMDD') and to_date(v_data_fi,'YYYYMMDD')
|
||||
and e.stato in (300, 400) -- 300 Scheda Confermata, 400 Confermato (Lista)
|
||||
and e.disabled = 0
|
||||
and e.deleted = 0
|
||||
order by data, to_number(to_char(e.ora_evento,'HH24MI'))
|
||||
)
|
||||
, q as (select t.* , rownum as order_id
|
||||
from t
|
||||
order by data
|
||||
)
|
||||
, r as (select
|
||||
case when order_id =1 then id else null end as id1,
|
||||
case when order_id =2 then id else null end as id2,
|
||||
case when order_id =3 then id else null end as id3,
|
||||
case when order_id =4 then id else null end as id4,
|
||||
case when order_id =5 then id else null end as id5,
|
||||
case when order_id =6 then id else null end as id6,
|
||||
case when order_id =7 then id else null end as id7,
|
||||
case when order_id =8 then id else null end as id8,
|
||||
case when order_id =9 then id else null end as id9,
|
||||
case when order_id =10 then id else null end as id10,
|
||||
case when order_id =11 then id else null end as id11,
|
||||
case when order_id =12 then id else null end as id12,
|
||||
|
||||
case when order_id =1 then data else null end as data1,
|
||||
case when order_id =2 then data else null end as data2,
|
||||
case when order_id =3 then data else null end as data3,
|
||||
case when order_id =4 then data else null end as data4,
|
||||
case when order_id =5 then data else null end as data5,
|
||||
case when order_id =6 then data else null end as data6,
|
||||
case when order_id =7 then data else null end as data7,
|
||||
case when order_id =8 then data else null end as data8,
|
||||
case when order_id =9 then data else null end as data9,
|
||||
case when order_id =10 then data else null end as data10,
|
||||
case when order_id =11 then data else null end as data11,
|
||||
case when order_id =12 then data else null end as data12,
|
||||
|
||||
case when order_id =1 then location else null end as location1,
|
||||
case when order_id =2 then location else null end as location2,
|
||||
case when order_id =3 then location else null end as location3,
|
||||
case when order_id =4 then location else null end as location4,
|
||||
case when order_id =5 then location else null end as location5,
|
||||
case when order_id =6 then location else null end as location6,
|
||||
case when order_id =7 then location else null end as location7,
|
||||
case when order_id =8 then location else null end as location8,
|
||||
case when order_id =9 then location else null end as location9,
|
||||
case when order_id =10 then location else null end as location10,
|
||||
case when order_id =11 then location else null end as location11,
|
||||
case when order_id =12 then location else null end as location12,
|
||||
|
||||
case when order_id =1 then torta else null end as torta1,
|
||||
case when order_id =2 then torta else null end as torta2,
|
||||
case when order_id =3 then torta else null end as torta3,
|
||||
case when order_id =4 then torta else null end as torta4,
|
||||
case when order_id =5 then torta else null end as torta5,
|
||||
case when order_id =6 then torta else null end as torta6,
|
||||
case when order_id =7 then torta else null end as torta7,
|
||||
case when order_id =8 then torta else null end as torta8,
|
||||
case when order_id =9 then torta else null end as torta9,
|
||||
case when order_id =10 then torta else null end as torta10,
|
||||
case when order_id =11 then torta else null end as torta11,
|
||||
case when order_id =12 then torta else null end as torta12,
|
||||
|
||||
case when order_id =1 then confettata else null end as confettata1,
|
||||
case when order_id =2 then confettata else null end as confettata2,
|
||||
case when order_id =3 then confettata else null end as confettata3,
|
||||
case when order_id =4 then confettata else null end as confettata4,
|
||||
case when order_id =5 then confettata else null end as confettata5,
|
||||
case when order_id =6 then confettata else null end as confettata6,
|
||||
case when order_id =7 then confettata else null end as confettata7,
|
||||
case when order_id =8 then confettata else null end as confettata8,
|
||||
case when order_id =9 then confettata else null end as confettata9,
|
||||
case when order_id =10 then confettata else null end as confettata10,
|
||||
case when order_id =11 then confettata else null end as confettata11,
|
||||
case when order_id =12 then confettata else null end as confettata12,
|
||||
|
||||
case when order_id =1 then stampa_menu else null end as stampa_menu1,
|
||||
case when order_id =2 then stampa_menu else null end as stampa_menu2,
|
||||
case when order_id =3 then stampa_menu else null end as stampa_menu3,
|
||||
case when order_id =4 then stampa_menu else null end as stampa_menu4,
|
||||
case when order_id =5 then stampa_menu else null end as stampa_menu5,
|
||||
case when order_id =6 then stampa_menu else null end as stampa_menu6,
|
||||
case when order_id =7 then stampa_menu else null end as stampa_menu7,
|
||||
case when order_id =8 then stampa_menu else null end as stampa_menu8,
|
||||
case when order_id =9 then stampa_menu else null end as stampa_menu9,
|
||||
case when order_id =10 then stampa_menu else null end as stampa_menu10,
|
||||
case when order_id =11 then stampa_menu else null end as stampa_menu11,
|
||||
case when order_id =12 then stampa_menu else null end as stampa_menu12
|
||||
from q
|
||||
)
|
||||
select min(id1) as id1,
|
||||
min(id2) as id2,
|
||||
min(id3) as id3,
|
||||
min(id4) as id4,
|
||||
min(id5) as id5,
|
||||
min(id6) as id6,
|
||||
min(id7) as id7,
|
||||
min(id8) as id8,
|
||||
min(id9) as id9,
|
||||
min(id10) as id10,
|
||||
min(id11) as id11,
|
||||
min(id12) as id12,
|
||||
|
||||
min(data1) as d1,
|
||||
min(data2) as d2,
|
||||
min(data3) as d3,
|
||||
min(data4) as d4,
|
||||
min(data5) as d5,
|
||||
min(data6) as d6,
|
||||
min(data7) as d7,
|
||||
min(data8) as d8,
|
||||
min(data9) as d9,
|
||||
min(data10) as d10,
|
||||
min(data11) as d11,
|
||||
min(data12) as d12,
|
||||
|
||||
min(location1) as l1,
|
||||
min(location2) as l2,
|
||||
min(location3) as l3,
|
||||
min(location4) as l4,
|
||||
min(location5) as l5,
|
||||
min(location6) as l6,
|
||||
min(location7) as l7,
|
||||
min(location8) as l8,
|
||||
min(location9) as l9,
|
||||
min(location10) as l10,
|
||||
min(location11) as l11,
|
||||
min(location12) as l12,
|
||||
|
||||
min(torta1) as t1,
|
||||
min(torta2) as t2,
|
||||
min(torta3) as t3,
|
||||
min(torta4) as t4,
|
||||
min(torta5) as t5,
|
||||
min(torta6) as t6,
|
||||
min(torta7) as t7,
|
||||
min(torta8) as t8,
|
||||
min(torta9) as t9,
|
||||
min(torta10) as t10,
|
||||
min(torta11) as t11,
|
||||
min(torta12) as t12,
|
||||
|
||||
min(confettata1) as c1,
|
||||
min(confettata2) as c2,
|
||||
min(confettata3) as c3,
|
||||
min(confettata4) as c4,
|
||||
min(confettata5) as c5,
|
||||
min(confettata6) as c6,
|
||||
min(confettata7) as c7,
|
||||
min(confettata8) as c8,
|
||||
min(confettata9) as c9,
|
||||
min(confettata10) as c10,
|
||||
min(confettata11) as c11,
|
||||
min(confettata12) as c12,
|
||||
|
||||
min(stampa_menu1) as SM1,
|
||||
min(stampa_menu2) as SM2,
|
||||
min(stampa_menu3) as SM3,
|
||||
min(stampa_menu4) as SM4,
|
||||
min(stampa_menu5) as SM5,
|
||||
min(stampa_menu6) as SM6,
|
||||
min(stampa_menu7) as SM7,
|
||||
min(stampa_menu8) as SM8,
|
||||
min(stampa_menu9) as SM9,
|
||||
min(stampa_menu10) as SM10,
|
||||
min(stampa_menu11) as SM11,
|
||||
min(stampa_menu12) as SM12
|
||||
from r;
|
||||
|
||||
c_evt c_evento%ROWTYPE;
|
||||
|
||||
type v_TOVAGLIATO_AR IS VARRAY(12) OF VARCHAR2(4000);
|
||||
v_TOVAGLIATO v_TOVAGLIATO_AR;
|
||||
|
||||
C1 varchar2(100);
|
||||
C2 varchar2(100);
|
||||
C3 varchar2(100);
|
||||
C4 varchar2(100);
|
||||
C5 varchar2(100);
|
||||
C6 varchar2(100);
|
||||
C7 varchar2(100);
|
||||
C8 varchar2(100);
|
||||
C9 varchar2(100);
|
||||
C10 varchar2(100);
|
||||
C11 varchar2(100);
|
||||
C12 varchar2(100);
|
||||
|
||||
type v_TOVAGLIOLO_AR IS VARRAY(12) OF VARCHAR2(1000);
|
||||
v_TOVAGLIOLO v_TOVAGLIOLO_AR;
|
||||
|
||||
type v_AN_GELATO_AR IS VARRAY(12) OF VARCHAR2(1000);
|
||||
v_AN_GELATO v_AN_GELATO_AR;
|
||||
type v_AN_GELATO2_AR IS VARRAY(12) OF VARCHAR2(1000);
|
||||
v_AN_GELATO2 v_AN_GELATO2_AR;
|
||||
|
||||
type v_AN_OPENBAR_AR IS VARRAY(12) OF VARCHAR2(1000);
|
||||
v_AN_OPENBAR v_AN_OPENBAR_AR;
|
||||
type v_AN_RUM_AR IS VARRAY(12) OF VARCHAR2(1000);
|
||||
v_AN_RUM v_AN_RUM_AR;
|
||||
|
||||
T1 varchar2(100);
|
||||
T2 varchar2(100);
|
||||
T3 varchar2(100);
|
||||
T4 varchar2(100);
|
||||
T5 varchar2(100);
|
||||
T6 varchar2(100);
|
||||
T7 varchar2(100);
|
||||
T8 varchar2(100);
|
||||
T9 varchar2(100);
|
||||
T10 varchar2(100);
|
||||
T11 varchar2(100);
|
||||
T12 varchar2(100);
|
||||
|
||||
v_appo varchar2(100);
|
||||
|
||||
v_dato varchar2(100);
|
||||
v_id_str varchar2(100);
|
||||
v_id number;
|
||||
v_qry varchar2(1000);
|
||||
|
||||
type v_IDEVT_AR IS VARRAY(12) OF number;
|
||||
v_IDEVT v_IDEVT_AR;
|
||||
|
||||
BEGIN
|
||||
--default su date
|
||||
if p_data_in is null then
|
||||
v_data_in := to_char(sysdate,'YYYYMMD');
|
||||
else
|
||||
v_data_in := p_data_in;
|
||||
end if;
|
||||
if p_data_fi is null then
|
||||
v_data_fi := to_char(sysdate + 30,'YYYYMMD');
|
||||
else
|
||||
v_data_fi := p_data_fi;
|
||||
end if;
|
||||
|
||||
v_TOVAGLIATO := v_TOVAGLIATO_AR(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
v_TOVAGLIOLO := v_TOVAGLIOLO_AR(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
v_AN_GELATO := v_AN_GELATO_AR(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
v_AN_GELATO2 := v_AN_GELATO2_AR(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
v_AN_OPENBAR := v_AN_OPENBAR_AR(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
v_AN_RUM := v_AN_RUM_AR(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
v_IDEVT := v_IDEVT_AR(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
|
||||
open c_evento;
|
||||
fetch c_evento into c_evt;
|
||||
--exit when c_evento%NOTFOUND;
|
||||
|
||||
--caricare su vettore gli id:
|
||||
v_IDEVT(1) := c_evt.id1;
|
||||
v_IDEVT(2) := c_evt.id2;
|
||||
v_IDEVT(3) := c_evt.id3;
|
||||
v_IDEVT(4) := c_evt.id4;
|
||||
v_IDEVT(5) := c_evt.id5;
|
||||
v_IDEVT(6) := c_evt.id6;
|
||||
v_IDEVT(7) := c_evt.id7;
|
||||
v_IDEVT(8) := c_evt.id8;
|
||||
v_IDEVT(9) := c_evt.id9;
|
||||
v_IDEVT(10) := c_evt.id10;
|
||||
v_IDEVT(11) := c_evt.id11;
|
||||
v_IDEVT(12) := c_evt.id12;
|
||||
|
||||
FOR i in 1 .. 12 LOOP
|
||||
v_dato := '';
|
||||
|
||||
v_id := to_char(v_IDEVT(i));
|
||||
|
||||
v_TOVAGLIATO(i) := f_get_tovagliato_allestimento ('TVB', v_IDEVT(i) ) ;
|
||||
v_AN_GELATO(i) := f_get_angolo_allestimento ('AN-GELAT', v_IDEVT(i) ) ;
|
||||
v_AN_GELATO2(i) := f_get_angolo_allestimento ('AN-GEL-BOM', v_IDEVT(i) ) ;
|
||||
--v_AN_OPENBAR(i) := f_get_angolo_allestimento ('OPEN-B', v_IDEVT(i) ) ;
|
||||
v_AN_OPENBAR(i) := f_get_angolo_allestimento_OB ('%OPEN BAR%', v_IDEVT(i) ) ;
|
||||
v_AN_RUM(i) := f_get_angolo_allestimento ('AN-RUM-CI', v_IDEVT(i) ) ;
|
||||
|
||||
END LOOP;
|
||||
|
||||
PIPE ROW(t_rep_allestimenti_row(c_evt.D1 ,
|
||||
c_evt.D2 ,
|
||||
c_evt.D3 ,
|
||||
c_evt.D4 ,
|
||||
c_evt.D5 ,
|
||||
c_evt.D6 ,
|
||||
c_evt.D7 ,
|
||||
c_evt.D8 ,
|
||||
c_evt.D9 ,
|
||||
c_evt.D10 ,
|
||||
c_evt.D11 ,
|
||||
c_evt.D12 ,
|
||||
|
||||
c_evt.L1 ,
|
||||
c_evt.L2 ,
|
||||
c_evt.L3 ,
|
||||
c_evt.L4 ,
|
||||
c_evt.L5 ,
|
||||
c_evt.L6 ,
|
||||
c_evt.L7 ,
|
||||
c_evt.L8 ,
|
||||
c_evt.L9 ,
|
||||
c_evt.L10 ,
|
||||
c_evt.L11 ,
|
||||
c_evt.L12 ,
|
||||
|
||||
v_TOVAGLIATO(1),
|
||||
v_TOVAGLIATO(2),
|
||||
v_TOVAGLIATO(3),
|
||||
v_TOVAGLIATO(4),
|
||||
v_TOVAGLIATO(5),
|
||||
v_TOVAGLIATO(6),
|
||||
v_TOVAGLIATO(7),
|
||||
v_TOVAGLIATO(8),
|
||||
v_TOVAGLIATO(9),
|
||||
v_TOVAGLIATO(10),
|
||||
v_TOVAGLIATO(11),
|
||||
v_TOVAGLIATO(12),
|
||||
|
||||
c_evt.C1 ,
|
||||
c_evt.C2 ,
|
||||
c_evt.C3 ,
|
||||
c_evt.C4 ,
|
||||
c_evt.C5 ,
|
||||
c_evt.C6 ,
|
||||
c_evt.C7 ,
|
||||
c_evt.C8 ,
|
||||
c_evt.C9 ,
|
||||
c_evt.C10 ,
|
||||
c_evt.C11 ,
|
||||
c_evt.C12 ,
|
||||
|
||||
v_TOVAGLIOLO(1),
|
||||
v_TOVAGLIOLO(2),
|
||||
v_TOVAGLIOLO(3),
|
||||
v_TOVAGLIOLO(4),
|
||||
v_TOVAGLIOLO(5),
|
||||
v_TOVAGLIOLO(6),
|
||||
v_TOVAGLIOLO(7),
|
||||
v_TOVAGLIOLO(8),
|
||||
v_TOVAGLIOLO(9),
|
||||
v_TOVAGLIOLO(10),
|
||||
v_TOVAGLIOLO(11),
|
||||
v_TOVAGLIOLO(12),
|
||||
|
||||
v_AN_GELATO(1) || ', ' || v_AN_GELATO2(1),
|
||||
v_AN_GELATO(2) || ', ' || v_AN_GELATO2(2),
|
||||
v_AN_GELATO(3) || ', ' || v_AN_GELATO2(3),
|
||||
v_AN_GELATO(4) || ', ' || v_AN_GELATO2(4),
|
||||
v_AN_GELATO(5) || ', ' || v_AN_GELATO2(5),
|
||||
v_AN_GELATO(6) || ', ' || v_AN_GELATO2(6),
|
||||
v_AN_GELATO(7) || ', ' || v_AN_GELATO2(7),
|
||||
v_AN_GELATO(8) || ', ' || v_AN_GELATO2(8),
|
||||
v_AN_GELATO(9) || ', ' || v_AN_GELATO2(9),
|
||||
v_AN_GELATO(10) || ', ' || v_AN_GELATO2(10),
|
||||
v_AN_GELATO(11) || ', ' || v_AN_GELATO2(11),
|
||||
v_AN_GELATO(12) || ', ' || v_AN_GELATO2(12),
|
||||
|
||||
v_AN_OPENBAR(1),
|
||||
v_AN_OPENBAR(2),
|
||||
v_AN_OPENBAR(3),
|
||||
v_AN_OPENBAR(4),
|
||||
v_AN_OPENBAR(5),
|
||||
v_AN_OPENBAR(6),
|
||||
v_AN_OPENBAR(7),
|
||||
v_AN_OPENBAR(8),
|
||||
v_AN_OPENBAR(9),
|
||||
v_AN_OPENBAR(10),
|
||||
v_AN_OPENBAR(11),
|
||||
v_AN_OPENBAR(12),
|
||||
|
||||
v_AN_RUM(1),
|
||||
v_AN_RUM(2),
|
||||
v_AN_RUM(3),
|
||||
v_AN_RUM(4),
|
||||
v_AN_RUM(5),
|
||||
v_AN_RUM(6),
|
||||
v_AN_RUM(7),
|
||||
v_AN_RUM(8),
|
||||
v_AN_RUM(9),
|
||||
v_AN_RUM(10),
|
||||
v_AN_RUM(11),
|
||||
v_AN_RUM(12),
|
||||
|
||||
c_evt.T1 ,
|
||||
c_evt.T2 ,
|
||||
c_evt.T3 ,
|
||||
c_evt.T4 ,
|
||||
c_evt.T5 ,
|
||||
c_evt.T6 ,
|
||||
c_evt.T7 ,
|
||||
c_evt.T8 ,
|
||||
c_evt.T9 ,
|
||||
c_evt.T10 ,
|
||||
c_evt.T11 ,
|
||||
c_evt.T12 ,
|
||||
|
||||
c_evt.SM1 ,
|
||||
c_evt.SM2 ,
|
||||
c_evt.SM3 ,
|
||||
c_evt.SM4 ,
|
||||
c_evt.SM5 ,
|
||||
c_evt.SM6 ,
|
||||
c_evt.SM7 ,
|
||||
c_evt.SM8 ,
|
||||
c_evt.SM9 ,
|
||||
c_evt.SM10 ,
|
||||
c_evt.SM11 ,
|
||||
c_evt.SM12
|
||||
));
|
||||
|
||||
close c_evento;
|
||||
|
||||
RETURN;
|
||||
|
||||
END;```
|
||||
245
docs/functions/F_REP_CUCINA.md
Normal file
245
docs/functions/F_REP_CUCINA.md
Normal file
@@ -0,0 +1,245 @@
|
||||
# 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;```
|
||||
20
docs/functions/F_USER_IN_ROLE.md
Normal file
20
docs/functions/F_USER_IN_ROLE.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# F_USER_IN_ROLE
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION F_USER_IN_ROLE
|
||||
(
|
||||
P_USER IN VARCHAR2
|
||||
, P_ROLE IN VARCHAR2
|
||||
) RETURN NUMBER AS
|
||||
v_has_role number := 0;
|
||||
BEGIN
|
||||
select count(column_value)
|
||||
into v_has_role
|
||||
from tb_config, table(split(strvalue, ':'))
|
||||
where upper(name) = upper(P_ROLE)
|
||||
and upper(column_value) = upper(P_USER);
|
||||
|
||||
return case when v_has_role > 0 then 1 else 0 end;
|
||||
END F_USER_IN_ROLE;```
|
||||
15
docs/functions/F_USER_IN_ROLE_STR.md
Normal file
15
docs/functions/F_USER_IN_ROLE_STR.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# F_USER_IN_ROLE_STR
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION F_USER_IN_ROLE_STR
|
||||
(
|
||||
P_USER IN VARCHAR2
|
||||
, P_ROLE IN VARCHAR2
|
||||
) RETURN VARCHAR2 AS
|
||||
v_has_role number := 0;
|
||||
BEGIN
|
||||
return case when F_USER_IN_ROLE(P_USER, P_ROLE) > 0 then 'true' else 'false' end;
|
||||
END F_USER_IN_ROLE_STR;
|
||||
```
|
||||
19
docs/functions/GET_PARAM_VALUE.md
Normal file
19
docs/functions/GET_PARAM_VALUE.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# GET_PARAM_VALUE
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
function get_param_value(p_name varchar2)
|
||||
return varchar2 as
|
||||
v_result varchar2(255);
|
||||
begin
|
||||
select strvalue
|
||||
into v_result
|
||||
from tb_config
|
||||
where upper(name) = upper(p_name);
|
||||
|
||||
return v_result;
|
||||
exception when others then
|
||||
return null;
|
||||
end;
|
||||
```
|
||||
36
docs/functions/MY_INSTR.md
Normal file
36
docs/functions/MY_INSTR.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# MY_INSTR
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
function my_instr( p_value varchar2,
|
||||
p_delim varchar2 )
|
||||
return number
|
||||
as
|
||||
|
||||
i number;
|
||||
|
||||
l_length number;
|
||||
|
||||
begin
|
||||
|
||||
if p_value is null then
|
||||
return null;
|
||||
end if;
|
||||
|
||||
i := 1;
|
||||
|
||||
l_length := length(p_value);
|
||||
|
||||
for i in 1..l_length
|
||||
loop
|
||||
if substr(p_value, i, length(p_delim)) = p_delim then
|
||||
return i;
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
end;
|
||||
```
|
||||
127
docs/functions/README.md
Normal file
127
docs/functions/README.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# Funzioni Database
|
||||
|
||||
Questa cartella contiene la documentazione di tutte le 23 funzioni del database.
|
||||
|
||||
## Funzioni Calcolo Quantità e Disponibilità
|
||||
|
||||
| Funzione | Ritorno | Descrizione |
|
||||
|----------|---------|-------------|
|
||||
| [F_GET_QTA_IMPEGNATA](F_GET_QTA_IMPEGNATA.md) | NUMBER | Quantità impegnata di un articolo in un range di date |
|
||||
| [F_GET_TOT_OSPITI](F_GET_TOT_OSPITI.md) | NUMBER | Totale ospiti per evento (opzionale per tipo) |
|
||||
| [F_GET_OSPITI](F_GET_OSPITI.md) | TABLE | Dettaglio ospiti per evento (funzione pipelined) |
|
||||
| [F_LIST_PRELIEVO_ADD_ARTICOLO](F_LIST_PRELIEVO_ADD_ARTICOLO.md) | VARCHAR2 (JSON) | Aggiunge articolo alla lista prelievo con validazioni |
|
||||
|
||||
## Funzioni Calcolo Costi
|
||||
|
||||
| Funzione | Ritorno | Descrizione |
|
||||
|----------|---------|-------------|
|
||||
| [F_GET_COSTO_ARTICOLO](F_GET_COSTO_ARTICOLO.md) | NUMBER | Costo unitario articolo a una data specifica |
|
||||
|
||||
## Funzioni Validazione
|
||||
|
||||
| Funzione | Ritorno | Descrizione |
|
||||
|----------|---------|-------------|
|
||||
| [F_EVENTO_SCADUTO](F_EVENTO_SCADUTO.md) | NUMBER (0/1) | Verifica se preventivo è scaduto |
|
||||
| [F_MAX_NUMERO_EVENTI_RAGGIUNTO](F_MAX_NUMERO_EVENTI_RAGGIUNTO.md) | NUMBER (-1/0/1) | Verifica limite eventi giornaliero |
|
||||
| [F_MAX_NUM_EVENTI_CONFERMATI](F_MAX_NUM_EVENTI_CONFERMATI.md) | NUMBER (0/1) | Verifica limite eventi confermati |
|
||||
| [F_CI_SONO_EVENTI_CONFERMATI](F_CI_SONO_EVENTI_CONFERMATI.md) | NUMBER (0/1) | Check esistenza eventi confermati in data/location |
|
||||
|
||||
## Funzioni Report
|
||||
|
||||
| Funzione | Ritorno | Descrizione |
|
||||
|----------|---------|-------------|
|
||||
| [F_REP_ALLESTIMENTI](F_REP_ALLESTIMENTI.md) | TABLE | Dati per report allestimenti (pipelined) |
|
||||
| [F_REP_CUCINA](F_REP_CUCINA.md) | TABLE | Dati per report cucina (pipelined) |
|
||||
| [F_GET_ANGOLO_ALLESTIMENTO](F_GET_ANGOLO_ALLESTIMENTO.md) | VARCHAR2 | Descrizione angolo allestimento |
|
||||
| [F_GET_ANGOLO_ALLESTIMENTO_OB](F_GET_ANGOLO_ALLESTIMENTO_OB.md) | VARCHAR2 | Descrizione angolo open bar |
|
||||
| [F_GET_TOVAGLIATO_ALLESTIMENTO](F_GET_TOVAGLIATO_ALLESTIMENTO.md) | VARCHAR2 | Descrizione tovagliato |
|
||||
|
||||
## Funzioni Autorizzazione
|
||||
|
||||
| Funzione | Ritorno | Descrizione |
|
||||
|----------|---------|-------------|
|
||||
| [F_USER_IN_ROLE](F_USER_IN_ROLE.md) | NUMBER (0/1) | Verifica appartenenza utente a ruolo |
|
||||
| [F_USER_IN_ROLE_STR](F_USER_IN_ROLE_STR.md) | VARCHAR2 | Verifica ruolo (ritorna stringa) |
|
||||
|
||||
## Funzioni Utility
|
||||
|
||||
| Funzione | Ritorno | Descrizione |
|
||||
|----------|---------|-------------|
|
||||
| [F_DAY_TO_NAME](F_DAY_TO_NAME.md) | VARCHAR2 | Converte numero giorno in nome italiano |
|
||||
| [STRING_TO_TABLE_ENUM](STRING_TO_TABLE_ENUM.md) | TABLE | Converte stringa delimitata in tabella |
|
||||
| [GET_PARAM_VALUE](GET_PARAM_VALUE.md) | VARCHAR2 | Recupera valore parametro da TB_CONFIG |
|
||||
| [SPLIT](SPLIT.md) | TABLE | Split stringa in elementi |
|
||||
| [MY_INSTR](MY_INSTR.md) | NUMBER | Funzione INSTR personalizzata |
|
||||
| [CLOB2BLOB](CLOB2BLOB.md) | BLOB | Conversione CLOB → BLOB |
|
||||
| [EXTDATE_GET_ITA](EXTDATE_GET_ITA.md) | VARCHAR2 | Formatta data in italiano esteso |
|
||||
|
||||
## Dettaglio Funzioni Critiche
|
||||
|
||||
### F_GET_QTA_IMPEGNATA
|
||||
|
||||
```sql
|
||||
FUNCTION F_GET_QTA_IMPEGNATA(
|
||||
p_codart VARCHAR2,
|
||||
p_data_from DATE,
|
||||
p_data_to DATE DEFAULT NULL
|
||||
) RETURN NUMBER
|
||||
```
|
||||
|
||||
**Logica:**
|
||||
- Interroga `V_IMPEGNI_ARTICOLI`
|
||||
- Somma quantità impegnate nel range di date
|
||||
- Se `p_data_to` è NULL, usa `p_data_from`
|
||||
|
||||
### F_EVENT0_SCADUTO
|
||||
|
||||
```sql
|
||||
FUNCTION F_EVENTO_SCADUTO(
|
||||
DATA_SCADENZA IN DATE,
|
||||
STATO_EVENTO IN NUMBER,
|
||||
STATO_FROM IN NUMBER,
|
||||
STATO_TO IN NUMBER
|
||||
) RETURN NUMBER
|
||||
```
|
||||
|
||||
**Logica:**
|
||||
- Ritorna 1 se `TRUNC(DATA_SCADENZA) <= TRUNC(SYSDATE)`
|
||||
AND `STATO_EVENTO BETWEEN STATO_FROM AND STATO_TO`
|
||||
- Altrimenti ritorna 0
|
||||
|
||||
### F_LIST_PRELIEVO_ADD_ARTICOLO
|
||||
|
||||
```sql
|
||||
FUNCTION F_LIST_PRELIEVO_ADD_ARTICOLO(
|
||||
p_event_id NUMBER,
|
||||
p_articolo_add VARCHAR2,
|
||||
p_qta_aperitivo NUMBER := 0,
|
||||
p_qta_seduto NUMBER := 0,
|
||||
p_qta_dolci NUMBER := 0
|
||||
) RETURN VARCHAR2
|
||||
```
|
||||
|
||||
**Logica:**
|
||||
1. Verifica esistenza evento
|
||||
2. Verifica esistenza articolo
|
||||
3. Recupera giacenza articolo
|
||||
4. Controlla impegni in date vicine (±2 giorni)
|
||||
5. Inserisce record in `EVENTI_DET_PREL`
|
||||
6. Chiama `EVENTI_AGGIORNA_QTA_LISTA`
|
||||
7. Ritorna JSON con esito:
|
||||
- `{"type":"success","message":"..."}`
|
||||
- `{"type":"warning","message":"..."}`
|
||||
- `{"type":"error","code":"...","stack":"...","message":"..."}`
|
||||
|
||||
### F_GET_COSTO_ARTICOLO
|
||||
|
||||
```sql
|
||||
FUNCTION F_GET_COSTO_ARTICOLO(
|
||||
p_cod_articolo VARCHAR2,
|
||||
p_date DATE
|
||||
) RETURN NUMBER
|
||||
```
|
||||
|
||||
**Logica:**
|
||||
1. Cerca costo in `COSTI_ARTICOLI` alla data esatta
|
||||
2. Se non trovato, prende ultimo costo disponibile
|
||||
3. Se non trovato nulla, ritorna 0
|
||||
46
docs/functions/SPLIT.md
Normal file
46
docs/functions/SPLIT.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# SPLIT
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "SPLIT"
|
||||
(
|
||||
p_list varchar2,
|
||||
p_del varchar2 := ','
|
||||
) return string_list
|
||||
is
|
||||
l_idx integer;
|
||||
l_list varchar2(32767) := p_list;
|
||||
|
||||
l_value varchar2(32767);
|
||||
|
||||
l_retval string_list;
|
||||
begin
|
||||
|
||||
l_retval := string_list();
|
||||
|
||||
loop
|
||||
|
||||
--l_idx := instr(l_list,p_del);
|
||||
l_idx := my_instr(l_list,p_del);
|
||||
|
||||
l_retval.extend;
|
||||
|
||||
if l_idx > 0 then
|
||||
--pipe row(substr(l_list,1,l_idx-1));
|
||||
--l_list := substr(l_list,l_idx+length(p_del));
|
||||
l_retval(l_retval.count) := substr(l_list, 1, l_idx - 1);
|
||||
l_list := substr(l_list,l_idx+length(p_del));
|
||||
else
|
||||
--pipe row(l_list);
|
||||
--exit;
|
||||
l_retval(l_retval.count) := l_list;
|
||||
exit;
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
|
||||
return l_retval;
|
||||
|
||||
end split;
|
||||
```
|
||||
26
docs/functions/STRING_TO_TABLE_ENUM.md
Normal file
26
docs/functions/STRING_TO_TABLE_ENUM.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# STRING_TO_TABLE_ENUM
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
FUNCTION "STRING_TO_TABLE_ENUM" (p_string VARCHAR2, v_level in number default 0, p_separator varchar2 default ':') RETURN ENUM_TABLE_TYPE pipelined IS
|
||||
conta number := 0;
|
||||
BEGIN
|
||||
FOR c IN ( select ROW_NUMBER() OVER (ORDER BY ROWNUM) id, result
|
||||
from (
|
||||
with test as (
|
||||
select p_string col
|
||||
from dual
|
||||
)
|
||||
select nvl(regexp_substr(col, '[^' || p_separator || ']+', 1, level), '') result
|
||||
from test
|
||||
connect by level <= length(regexp_replace(col, '[^' || p_separator || ']+')) + 1)
|
||||
)
|
||||
LOOP
|
||||
conta := conta + 1;
|
||||
if v_level = 0 or ( v_level = conta ) then
|
||||
pipe row(enum_table_object(c.id,c.result));
|
||||
end if;
|
||||
END LOOP;
|
||||
RETURN;
|
||||
END STRING_TO_TABLE_ENUM;```
|
||||
Reference in New Issue
Block a user