extracted objects
This commit is contained in:
214
docs/procedures/EVENTI_COPIA.md
Normal file
214
docs/procedures/EVENTI_COPIA.md
Normal file
@@ -0,0 +1,214 @@
|
||||
# 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;```
|
||||
Reference in New Issue
Block a user