215 lines
4.6 KiB
Markdown
215 lines
4.6 KiB
Markdown
# EVENTI_COPIA
|
|
|
|
## Codice Sorgente
|
|
|
|
```sql
|
|
PROCEDURE eventi_copia (
|
|
id_evento_old IN NUMBER,
|
|
nuova_versione IN NUMBER DEFAULT 0,
|
|
id_evento_new OUT NUMBER
|
|
) AS
|
|
r_evento eventi%rowtype;
|
|
v_new_evt_id eventi.id%TYPE;
|
|
BEGIN
|
|
SELECT
|
|
*
|
|
INTO r_evento
|
|
FROM
|
|
eventi
|
|
WHERE
|
|
id = id_evento_old;
|
|
|
|
r_evento.id := NULL;
|
|
r_evento.is_template := 0;
|
|
IF nuova_versione = 1 THEN
|
|
r_evento.id_evt_padre := id_evento_old;
|
|
r_evento.vers_number := nvl(r_evento.vers_number, 0) + 1; -- aggiorno il numero versione
|
|
ELSE
|
|
r_evento.id_evt_padre := NULL;
|
|
r_evento.vers_number := 0;
|
|
END IF;
|
|
|
|
-- Copio l'evento facendo creare il nuovo id dal trigger
|
|
INSERT INTO eventi VALUES r_evento RETURNING id INTO v_new_evt_id;
|
|
|
|
IF nuova_versione = 1 THEN
|
|
-- Aggiorno il vecchio evento col nuovo id
|
|
UPDATE eventi
|
|
SET
|
|
id_evt_figlio = v_new_evt_id
|
|
WHERE
|
|
id = id_evento_old;
|
|
|
|
END IF;
|
|
|
|
COMMIT;
|
|
|
|
-- Aggiungo i figli alla nuova versione
|
|
-- Degustazioni
|
|
INSERT INTO eventi_det_degust (
|
|
id_evento,
|
|
data,
|
|
ora,
|
|
nome,
|
|
telefono,
|
|
email,
|
|
location,
|
|
n_persone,
|
|
menu,
|
|
n_paganti,
|
|
note,
|
|
n_degustazione,
|
|
consumata,
|
|
costo_degustazione
|
|
)
|
|
SELECT
|
|
v_new_evt_id,
|
|
data,
|
|
ora,
|
|
nome,
|
|
telefono,
|
|
email,
|
|
location,
|
|
n_persone,
|
|
menu,
|
|
n_paganti,
|
|
note,
|
|
n_degustazione,
|
|
consumata,
|
|
costo_degustazione
|
|
FROM
|
|
eventi_det_degust
|
|
WHERE
|
|
id_evento = id_evento_old;
|
|
|
|
-- Ospiti
|
|
-- Devo fare una update... DIO TRIGGER
|
|
FOR c IN (
|
|
SELECT
|
|
id_evento,
|
|
cod_tipo_ospite,
|
|
numero,
|
|
note
|
|
FROM
|
|
eventi_det_ospiti
|
|
WHERE
|
|
id_evento = id_evento_old
|
|
) LOOP
|
|
UPDATE eventi_det_ospiti
|
|
SET
|
|
numero = c.numero,
|
|
note = c.note
|
|
WHERE
|
|
id_evento = v_new_evt_id
|
|
AND cod_tipo_ospite = c.cod_tipo_ospite;
|
|
|
|
END LOOP;
|
|
-- insert into eventi_det_ospiti (ID_EVENTO, COD_TIPO_OSPITE, NUMERO, NOTE)
|
|
-- select v_new_evt_id, COD_TIPO_OSPITE, NUMERO, NOTE
|
|
-- from eventi_det_ospiti
|
|
-- where id_evento = ID_EVENTO_OLD;
|
|
|
|
-- Prelievi
|
|
/* COME DA RICHIESTA DEL 01/2024 NON COPIO LA LISTA PRELIEVO NELLA NUOVA VERSIONE */
|
|
/* RIATTIVO NUOVAMENTE LA COPIA IL 12/02/2024 */
|
|
INSERT INTO eventi_det_prel (
|
|
id_evento,
|
|
cod_articolo,
|
|
qta,
|
|
note,
|
|
qta_ape,
|
|
qta_sedu,
|
|
qta_bufdol,
|
|
qta_man_ape,
|
|
qta_man_sedu,
|
|
qta_man_bufdol,
|
|
costo_articolo
|
|
)
|
|
SELECT
|
|
v_new_evt_id,
|
|
cod_articolo,
|
|
qta,
|
|
note,
|
|
qta_ape,
|
|
qta_sedu,
|
|
qta_bufdol,
|
|
qta_man_ape,
|
|
qta_man_sedu,
|
|
qta_man_bufdol,
|
|
costo_articolo
|
|
FROM
|
|
eventi_det_prel
|
|
WHERE
|
|
id_evento = id_evento_old;
|
|
|
|
-- Risorse
|
|
INSERT INTO eventi_det_ris (
|
|
id_evento,
|
|
id_risorsa,
|
|
ore_lav,
|
|
costo,
|
|
note
|
|
)
|
|
SELECT
|
|
v_new_evt_id,
|
|
id_risorsa,
|
|
ore_lav,
|
|
costo,
|
|
note
|
|
FROM
|
|
eventi_det_ris
|
|
WHERE
|
|
id_evento = id_evento_old;
|
|
|
|
-- Costi
|
|
INSERT INTO eventi_acconti (
|
|
data,
|
|
acconto,
|
|
id_evento,
|
|
a_conferma,
|
|
ordine,
|
|
descrizione
|
|
)
|
|
SELECT
|
|
data,
|
|
acconto,
|
|
v_new_evt_id,
|
|
a_conferma,
|
|
ordine,
|
|
descrizione
|
|
FROM
|
|
eventi_acconti
|
|
WHERE
|
|
id_evento = id_evento_old;
|
|
|
|
-- Altri Costi
|
|
INSERT INTO eventi_altricosti (
|
|
id_evento,
|
|
descrizione,
|
|
costo,
|
|
quantity
|
|
)
|
|
SELECT
|
|
v_new_evt_id,
|
|
descrizione,
|
|
costo,
|
|
quantity
|
|
FROM
|
|
eventi_altricosti
|
|
WHERE
|
|
id_evento = id_evento_old;
|
|
|
|
-- Carico il nuovo id nella pagina
|
|
id_evento_new := v_new_evt_id;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
DELETE FROM eventi
|
|
WHERE
|
|
id = v_new_evt_id;
|
|
|
|
COMMIT;
|
|
raise_application_error(-20001, sqlcode
|
|
|| ' - '
|
|
|| sqlerrm);
|
|
END eventi_copia;```
|