Files
zentral/docs/procedures/README.md
2025-11-28 10:59:10 +01:00

91 lines
3.2 KiB
Markdown

# 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).