Vai al contenuto

# 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 | NUMBER | Quantità impegnata di un articolo in un range di date
F_GET_TOT_OSPITI | NUMBER | Totale ospiti per evento (opzionale per tipo)
F_GET_OSPITI | TABLE | Dettaglio ospiti per evento (funzione pipelined)
F_LIST_PRELIEVO_ADD_ARTICOLO | VARCHAR2 (JSON) | Aggiunge articolo alla lista prelievo con validazioni

## Funzioni Calcolo Costi

Funzione | Ritorno | Descrizione
--- | --- | ---
F_GET_COSTO_ARTICOLO | NUMBER | Costo unitario articolo a una data specifica

## Funzioni Validazione

Funzione | Ritorno | Descrizione
--- | --- | ---
F_EVENTO_SCADUTO | NUMBER (0/1) | Verifica se preventivo è scaduto
F_MAX_NUMERO_EVENTI_RAGGIUNTO | NUMBER (-1/0/1) | Verifica limite eventi giornaliero
F_MAX_NUM_EVENTI_CONFERMATI | NUMBER (0/1) | Verifica limite eventi confermati
F_CI_SONO_EVENTI_CONFERMATI | NUMBER (0/1) | Check esistenza eventi confermati in data/location

## Funzioni Report

Funzione | Ritorno | Descrizione
--- | --- | ---
F_REP_ALLESTIMENTI | TABLE | Dati per report allestimenti (pipelined)
F_REP_CUCINA | TABLE | Dati per report cucina (pipelined)
F_GET_ANGOLO_ALLESTIMENTO | VARCHAR2 | Descrizione angolo allestimento
F_GET_ANGOLO_ALLESTIMENTO_OB | VARCHAR2 | Descrizione angolo open bar
F_GET_TOVAGLIATO_ALLESTIMENTO | VARCHAR2 | Descrizione tovagliato

## Funzioni Autorizzazione

Funzione | Ritorno | Descrizione
--- | --- | ---
F_USER_IN_ROLE | NUMBER (0/1) | Verifica appartenenza utente a ruolo
F_USER_IN_ROLE_STR | VARCHAR2 | Verifica ruolo (ritorna stringa)

## Funzioni Utility

Funzione | Ritorno | Descrizione
--- | --- | ---
F_DAY_TO_NAME | VARCHAR2 | Converte numero giorno in nome italiano
STRING_TO_TABLE_ENUM | TABLE | Converte stringa delimitata in tabella
GET_PARAM_VALUE | VARCHAR2 | Recupera valore parametro da TB_CONFIG
SPLIT | TABLE | Split stringa in elementi
MY_INSTR | NUMBER | Funzione INSTR personalizzata
CLOB2BLOB | BLOB | Conversione CLOB → BLOB
EXTDATE_GET_ITA | VARCHAR2 | Formatta data in italiano esteso

## Dettaglio Funzioni Critiche

### F_GET_QTA_IMPEGNATA

    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

    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

    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

    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