128 lines
4.5 KiB
Markdown
128 lines
4.5 KiB
Markdown
# Funzioni Database
|
|
|
|
Questa cartella contiene la documentazione di tutte le 23 funzioni del database.
|
|
|
|
## Funzioni Calcolo Quantità e Disponibilità
|
|
|
|
| Funzione | Ritorno | Descrizione |
|
|
|----------|---------|-------------|
|
|
| [F_GET_QTA_IMPEGNATA](F_GET_QTA_IMPEGNATA.md) | NUMBER | Quantità impegnata di un articolo in un range di date |
|
|
| [F_GET_TOT_OSPITI](F_GET_TOT_OSPITI.md) | NUMBER | Totale ospiti per evento (opzionale per tipo) |
|
|
| [F_GET_OSPITI](F_GET_OSPITI.md) | TABLE | Dettaglio ospiti per evento (funzione pipelined) |
|
|
| [F_LIST_PRELIEVO_ADD_ARTICOLO](F_LIST_PRELIEVO_ADD_ARTICOLO.md) | VARCHAR2 (JSON) | Aggiunge articolo alla lista prelievo con validazioni |
|
|
|
|
## Funzioni Calcolo Costi
|
|
|
|
| Funzione | Ritorno | Descrizione |
|
|
|----------|---------|-------------|
|
|
| [F_GET_COSTO_ARTICOLO](F_GET_COSTO_ARTICOLO.md) | NUMBER | Costo unitario articolo a una data specifica |
|
|
|
|
## Funzioni Validazione
|
|
|
|
| Funzione | Ritorno | Descrizione |
|
|
|----------|---------|-------------|
|
|
| [F_EVENTO_SCADUTO](F_EVENTO_SCADUTO.md) | NUMBER (0/1) | Verifica se preventivo è scaduto |
|
|
| [F_MAX_NUMERO_EVENTI_RAGGIUNTO](F_MAX_NUMERO_EVENTI_RAGGIUNTO.md) | NUMBER (-1/0/1) | Verifica limite eventi giornaliero |
|
|
| [F_MAX_NUM_EVENTI_CONFERMATI](F_MAX_NUM_EVENTI_CONFERMATI.md) | NUMBER (0/1) | Verifica limite eventi confermati |
|
|
| [F_CI_SONO_EVENTI_CONFERMATI](F_CI_SONO_EVENTI_CONFERMATI.md) | NUMBER (0/1) | Check esistenza eventi confermati in data/location |
|
|
|
|
## Funzioni Report
|
|
|
|
| Funzione | Ritorno | Descrizione |
|
|
|----------|---------|-------------|
|
|
| [F_REP_ALLESTIMENTI](F_REP_ALLESTIMENTI.md) | TABLE | Dati per report allestimenti (pipelined) |
|
|
| [F_REP_CUCINA](F_REP_CUCINA.md) | TABLE | Dati per report cucina (pipelined) |
|
|
| [F_GET_ANGOLO_ALLESTIMENTO](F_GET_ANGOLO_ALLESTIMENTO.md) | VARCHAR2 | Descrizione angolo allestimento |
|
|
| [F_GET_ANGOLO_ALLESTIMENTO_OB](F_GET_ANGOLO_ALLESTIMENTO_OB.md) | VARCHAR2 | Descrizione angolo open bar |
|
|
| [F_GET_TOVAGLIATO_ALLESTIMENTO](F_GET_TOVAGLIATO_ALLESTIMENTO.md) | VARCHAR2 | Descrizione tovagliato |
|
|
|
|
## Funzioni Autorizzazione
|
|
|
|
| Funzione | Ritorno | Descrizione |
|
|
|----------|---------|-------------|
|
|
| [F_USER_IN_ROLE](F_USER_IN_ROLE.md) | NUMBER (0/1) | Verifica appartenenza utente a ruolo |
|
|
| [F_USER_IN_ROLE_STR](F_USER_IN_ROLE_STR.md) | VARCHAR2 | Verifica ruolo (ritorna stringa) |
|
|
|
|
## Funzioni Utility
|
|
|
|
| Funzione | Ritorno | Descrizione |
|
|
|----------|---------|-------------|
|
|
| [F_DAY_TO_NAME](F_DAY_TO_NAME.md) | VARCHAR2 | Converte numero giorno in nome italiano |
|
|
| [STRING_TO_TABLE_ENUM](STRING_TO_TABLE_ENUM.md) | TABLE | Converte stringa delimitata in tabella |
|
|
| [GET_PARAM_VALUE](GET_PARAM_VALUE.md) | VARCHAR2 | Recupera valore parametro da TB_CONFIG |
|
|
| [SPLIT](SPLIT.md) | TABLE | Split stringa in elementi |
|
|
| [MY_INSTR](MY_INSTR.md) | NUMBER | Funzione INSTR personalizzata |
|
|
| [CLOB2BLOB](CLOB2BLOB.md) | BLOB | Conversione CLOB → BLOB |
|
|
| [EXTDATE_GET_ITA](EXTDATE_GET_ITA.md) | VARCHAR2 | Formatta data in italiano esteso |
|
|
|
|
## Dettaglio Funzioni Critiche
|
|
|
|
### F_GET_QTA_IMPEGNATA
|
|
|
|
```sql
|
|
FUNCTION F_GET_QTA_IMPEGNATA(
|
|
p_codart VARCHAR2,
|
|
p_data_from DATE,
|
|
p_data_to DATE DEFAULT NULL
|
|
) RETURN NUMBER
|
|
```
|
|
|
|
**Logica:**
|
|
- Interroga `V_IMPEGNI_ARTICOLI`
|
|
- Somma quantità impegnate nel range di date
|
|
- Se `p_data_to` è NULL, usa `p_data_from`
|
|
|
|
### F_EVENT0_SCADUTO
|
|
|
|
```sql
|
|
FUNCTION F_EVENTO_SCADUTO(
|
|
DATA_SCADENZA IN DATE,
|
|
STATO_EVENTO IN NUMBER,
|
|
STATO_FROM IN NUMBER,
|
|
STATO_TO IN NUMBER
|
|
) RETURN NUMBER
|
|
```
|
|
|
|
**Logica:**
|
|
- Ritorna 1 se `TRUNC(DATA_SCADENZA) <= TRUNC(SYSDATE)`
|
|
AND `STATO_EVENTO BETWEEN STATO_FROM AND STATO_TO`
|
|
- Altrimenti ritorna 0
|
|
|
|
### F_LIST_PRELIEVO_ADD_ARTICOLO
|
|
|
|
```sql
|
|
FUNCTION F_LIST_PRELIEVO_ADD_ARTICOLO(
|
|
p_event_id NUMBER,
|
|
p_articolo_add VARCHAR2,
|
|
p_qta_aperitivo NUMBER := 0,
|
|
p_qta_seduto NUMBER := 0,
|
|
p_qta_dolci NUMBER := 0
|
|
) RETURN VARCHAR2
|
|
```
|
|
|
|
**Logica:**
|
|
1. Verifica esistenza evento
|
|
2. Verifica esistenza articolo
|
|
3. Recupera giacenza articolo
|
|
4. Controlla impegni in date vicine (±2 giorni)
|
|
5. Inserisce record in `EVENTI_DET_PREL`
|
|
6. Chiama `EVENTI_AGGIORNA_QTA_LISTA`
|
|
7. Ritorna JSON con esito:
|
|
- `{"type":"success","message":"..."}`
|
|
- `{"type":"warning","message":"..."}`
|
|
- `{"type":"error","code":"...","stack":"...","message":"..."}`
|
|
|
|
### F_GET_COSTO_ARTICOLO
|
|
|
|
```sql
|
|
FUNCTION F_GET_COSTO_ARTICOLO(
|
|
p_cod_articolo VARCHAR2,
|
|
p_date DATE
|
|
) RETURN NUMBER
|
|
```
|
|
|
|
**Logica:**
|
|
1. Cerca costo in `COSTI_ARTICOLI` alla data esatta
|
|
2. Se non trovato, prende ultimo costo disponibile
|
|
3. Se non trovato nulla, ritorna 0
|