91 lines
3.2 KiB
Markdown
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).
|