Vai al contenuto

# Stored Procedures

Questa cartella contiene la documentazione di tutte le 11 stored procedures del database.

## Procedures Business Logic

Procedura | Descrizione
--- | ---
EVENTI_AGGIORNA_QTA_LISTA | Ricalcola tutte le quantità della lista prelievo
EVENTI_AGGIORNA_TOT_OSPITI | Aggiorna il totale ospiti in testata evento
EVENTI_COPIA | Duplica un evento con tutti i dettagli
EVENTI_RICALCOLA_ACCONTI | Ricalcola gli importi degli acconti
EVENTO_ELIMINA_PRELIEVI | Elimina i prelievi di un evento
LISTE_COPIA | Copia selettiva di liste tra due eventi
P_CANCEL_SAME_LOCATION_EVENTS | Annulla eventi nella stessa location/data

## Procedures Utility

Procedura | Descrizione
--- | ---
ROWSORT_TIPI | Riordina i tipi materiale
HTPPRN | Output HTTP per APEX
SEND_DATA_TO_DROPBOX | Export dati verso Dropbox
XLOG | Procedura di logging

## Dettaglio Procedures Critiche

### EVENTI_AGGIORNA_QTA_LISTA

Parametri: - `p_id_evento NUMBER` - ID dell'evento

Logica: 1. Cicla su tutti gli articoli nella lista prelievo 2. Per ogni articolo determina il metodo di calcolo: - Quantità Standard: Se `QTA_STD_A/S/B` sono valorizzate - Tovagliato/Caraffe: Moltiplica per quantità tavoli/angoli - Codice Relativo: Moltiplica per quantità articolo di riferimento - Standard: Moltiplica coefficienti per totale ospiti 3. Verifica disponibilità rispetto alla giacenza 4. Aggiorna note con warning se quantità insufficiente

### EVENTI_COPIA

Parametri: - `id_evento_old NUMBER` - ID evento da copiare - `nuova_versione NUMBER DEFAULT 0` - 1 per creare nuova versione - `id_evento_new OUT NUMBER` - ID nuovo evento creato

Logica: 1. Copia testata evento 2. Se nuova versione: imposta `ID_EVT_PADRE`, incrementa `VERS_NUMBER` 3. Aggiorna evento vecchio con `ID_EVT_FIGLIO` 4. Copia tutte le tabelle dettaglio: - `EVENTI_DET_DEGUST` - `EVENTI_DET_OSPITI` (via UPDATE, non INSERT) - `EVENTI_DET_PREL` - `EVENTI_DET_RIS` - `EVENTI_ACCONTI` - `EVENTI_ALTRICOSTI` 5. In caso di errore: elimina evento creato e solleva eccezione

### EVENTI_RICALCOLA_ACCONTI

Parametri: - `p_event_id NUMBER` - ID evento

Logica: 1. Calcola totale evento dalle viste costo 2. Se nessun acconto pagato: - Elimina acconti esistenti - Inserisce nuovi acconti con percentuali 30%-50%-20% 3. Se acconti parzialmente pagati: - Mantiene importi pagati - Ricalcola solo acconti non pagati - Verifica che totale acconti ≤ totale evento

### LISTE_COPIA

Parametri: - `id_evento_from NUMBER` - Evento sorgente - `id_evento_to NUMBER` - Evento destinazione - `copia_degustazioni NUMBER DEFAULT 0` - `copia_prelievi NUMBER DEFAULT 0` - `copia_risorse NUMBER DEFAULT 0` - `copia_acconti NUMBER DEFAULT 0` - `copia_altricosti NUMBER DEFAULT 0`

Logica: Per ogni flag > 0 esegue un MERGE (UPDATE se esiste, INSERT altrimenti).