# 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