# Stored Procedures Questa cartella contiene la documentazione di tutte le 11 stored procedures del database. ## Procedures Business Logic | Procedura | Descrizione | |-----------|-------------| | [EVENTI_AGGIORNA_QTA_LISTA](EVENTI_AGGIORNA_QTA_LISTA.md) | Ricalcola tutte le quantità della lista prelievo | | [EVENTI_AGGIORNA_TOT_OSPITI](EVENTI_AGGIORNA_TOT_OSPITI.md) | Aggiorna il totale ospiti in testata evento | | [EVENTI_COPIA](EVENTI_COPIA.md) | Duplica un evento con tutti i dettagli | | [EVENTI_RICALCOLA_ACCONTI](EVENTI_RICALCOLA_ACCONTI.md) | Ricalcola gli importi degli acconti | | [EVENTO_ELIMINA_PRELIEVI](EVENTO_ELIMINA_PRELIEVI.md) | Elimina i prelievi di un evento | | [LISTE_COPIA](LISTE_COPIA.md) | Copia selettiva di liste tra due eventi | | [P_CANCEL_SAME_LOCATION_EVENTS](P_CANCEL_SAME_LOCATION_EVENTS.md) | Annulla eventi nella stessa location/data | ## Procedures Utility | Procedura | Descrizione | |-----------|-------------| | [ROWSORT_TIPI](ROWSORT_TIPI.md) | Riordina i tipi materiale | | [HTPPRN](HTPPRN.md) | Output HTTP per APEX | | [SEND_DATA_TO_DROPBOX](SEND_DATA_TO_DROPBOX.md) | Export dati verso Dropbox | | [XLOG](XLOG.md) | 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).