# Apollinare Catering - Documentazione Completa Questa documentazione contiene l'estrazione completa di tutti gli oggetti del database Oracle e dell'applicazione APEX di Apollinare Catering & Banqueting. ## [Application Overview](APPLICATION_OVERVIEW.md) **Apollinare Catering & Banqueting Management Software** è un gestionale completo per aziende di catering che gestisce l'intero ciclo di vita di un evento: dalla richiesta del cliente, al preventivo, alla conferma, fino all'esecuzione. ### Funzionalità Principali | Area | Descrizione | | --------------------- | ------------------------------------------- | | **Gestione Eventi** | Creazione, workflow stati, versioning | | **Gestione Ospiti** | Tipologie ospiti, conteggi, coefficienti | | **Lista Prelievo** | Calcolo automatico quantità materiale | | **Risorse/Staff** | Pianificazione personale per evento | | **Acconti/Pagamenti** | Sistema caparre 30%-50%-20%, solleciti | | **Calendario** | Vista eventi, limiti giornalieri, conflitti | | **Reporting** | Schede evento, preventivi, report cucina | ### Proposta SaaS: CaterPro La documentazione include una proposta per trasformare Apollinare in **CaterPro**, una piattaforma SaaS multi-tenant: - **Target**: Piccole, medie e grandi aziende di catering - **Stack**: .NET 8 + React TypeScript + PostgreSQL/Oracle - **Pricing**: Da €49/mese (Basic) a €399/mese (Enterprise) - **Roadmap**: 10-14 mesi per feature parity + SaaS Leggi la [documentazione completa](APPLICATION_OVERVIEW.md) per dettagli su architettura, funzionalità e roadmap. --- ## Struttura della Documentazione ``` docs/ ├── apex/ # Applicazione APEX │ ├── README.md # Overview applicazione │ ├── pages/ # 56 pagine │ ├── processes/ # 98 processi │ ├── lovs/ # 12 List of Values │ ├── javascript/ # Librerie JavaScript │ ├── authorization/ # 5 schemi autorizzazione │ ├── dynamic-actions/ # Azioni dinamiche │ ├── items/ # Items condivisi │ ├── regions/ # Regioni condivise │ └── navigation/ # Navigazione ├── tables/ # 32 tabelle ├── views/ # 26 viste ├── procedures/ # 11 stored procedures ├── functions/ # 23 funzioni ├── packages/ # 17 packages ├── triggers/ # 19 triggers ├── sequences/ # 22 sequences └── types/ # 10 tipi custom ``` --- ## APEX Application Documentation ### [APEX Application Overview](apex/README.md) **Application:** APCB Project (ID: 112) **APEX Version:** 21.1.0 **Schema:** APOLLINARECATERINGPROD | Component | Count | | --------------- | ----- | | Pages | 56 | | Items | 302 | | Processes | 98 | | Regions | 151 | | Buttons | 119 | | Dynamic Actions | 62 | | LOVs | 12 | ### Key APEX Documentation - [APEX README](apex/README.md) - Application overview and navigation - [Processes Documentation](apex/processes/README.md) - All 98 processes with PL/SQL code - [LOVs Documentation](apex/lovs/README.md) - 12 List of Values definitions - [JavaScript Libraries](apex/javascript/README.md) - Custom ajaxUtils.js and iframeObj.js - [Authorization Schemes](apex/authorization/README.md) - 5 security schemes ### Critical APEX Pages | Page | Name | Description | | ------ | ---------------- | ------------------------------------------------- | | 1 | Home | Dashboard principale | | **22** | **Nuovo Evento** | **Pagina più complessa (108 items, 32 processi)** | | 9 | Liste | Lista eventi | | 12 | Calendario | Calendario eventi | | 35 | Schede | Schede evento | --- ## Indice per Categoria ### [Tabelle](tables/README.md) (32) Tabelle principali del dominio business: - [EVENTI](tables/EVENTI.md) - Tabella principale eventi - [EVENTI_DET_PREL](tables/EVENTI_DET_PREL.md) - Liste prelievo - [EVENTI_DET_OSPITI](tables/EVENTI_DET_OSPITI.md) - Dettaglio ospiti - [EVENTI_DET_RIS](tables/EVENTI_DET_RIS.md) - Risorse assegnate - [EVENTI_DET_DEGUST](tables/EVENTI_DET_DEGUST.md) - Degustazioni - [EVENTI_ACCONTI](tables/EVENTI_ACCONTI.md) - Gestione acconti/pagamenti - [EVENTI_ALTRICOSTI](tables/EVENTI_ALTRICOSTI.md) - Altri costi - [EVENTI_ALLEG](tables/EVENTI_ALLEG.md) - Allegati - [ARTICOLI](tables/ARTICOLI.md) - Catalogo articoli - [COSTI_ARTICOLI](tables/COSTI_ARTICOLI.md) - Storico costi - [CLIENTI](tables/CLIENTI.md) - Anagrafica clienti - [LOCATION](tables/LOCATION.md) - Location eventi - [RISORSE](tables/RISORSE.md) - Personale Tabelle di lookup: - [TB_TIPI_MAT](tables/TB_TIPI_MAT.md) - Tipi materiale - [TB_CODICI_CATEG](tables/TB_CODICI_CATEG.md) - Categorie - [TB_TIPI_EVENTO](tables/TB_TIPI_EVENTO.md) - Tipi evento - [TB_TIPI_OSPITI](tables/TB_TIPI_OSPITI.md) - Tipi ospiti - [TB_TIPI_RISORSA](tables/TB_TIPI_RISORSA.md) - Tipi risorsa - [TB_TIPI_PASTO](tables/TB_TIPI_PASTO.md) - Tipi pasto - [TB_CALENDAR_LOCKS](tables/TB_CALENDAR_LOCKS.md) - Limiti calendario - [TB_CONFIG](tables/TB_CONFIG.md) - Configurazioni Tabelle di sistema: - [USERS_READONLY](tables/USERS_READONLY.md) - Permessi utenti - [XLIB_LOGS](tables/XLIB_LOGS.md) - Log applicazione - [XLIB_COMPONENTS](tables/XLIB_COMPONENTS.md) - Componenti - [XLIB_JASPERREPORTS_CONF](tables/XLIB_JASPERREPORTS_CONF.md) - Config report - [XLIB_JASPERREPORTS_DEMOS](tables/XLIB_JASPERREPORTS_DEMOS.md) - Demo report ### [Viste](views/README.md) (26) Viste per calcolo costi: - [GET_COSTO_ART_BY_EVT](views/GET_COSTO_ART_BY_EVT.md) - Costo articoli per evento - [GET_COSTO_ART_EVT](views/GET_COSTO_ART_EVT.md) - Costo articoli aggregato - [GET_COSTO_CATEG_EVT](views/GET_COSTO_CATEG_EVT.md) - Costo per categoria - [GET_COSTO_DEGUS_EVT](views/GET_COSTO_DEGUS_EVT.md) - Costo degustazioni - [GET_COSTO_OSPITI_EVT](views/GET_COSTO_OSPITI_EVT.md) - Costo ospiti - [GET_COSTO_RIS_EVT](views/GET_COSTO_RIS_EVT.md) - Costo risorse - [GET_COSTO_TIPI_EVT](views/GET_COSTO_TIPI_EVT.md) - Costo per tipo - [GET_ULTIMI_COSTI](views/GET_ULTIMI_COSTI.md) - Ultimi costi articoli Viste per eventi: - [GET_EVT_DATA](views/GET_EVT_DATA.md) - Dati evento completi - [GET_EVT_DATA_PRINT](views/GET_EVT_DATA_PRINT.md) - Dati per stampa - [GET_PREL_ART_TOT](views/GET_PREL_ART_TOT.md) - Totali prelievo - [GET_PREL_BY_EVT](views/GET_PREL_BY_EVT.md) - Prelievi per evento Viste per calendario e stato: - [VW_CALENDARIO_EVENTI](views/VW_CALENDARIO_EVENTI.md) - Vista calendario - [VW_EVENT_COLOR](views/VW_EVENT_COLOR.md) - Colori stati - [VW_EVENTI_STATUSES](views/VW_EVENTI_STATUSES.md) - Stati eventi Viste per giacenze: - [V_IMPEGNI_ARTICOLI](views/V_IMPEGNI_ARTICOLI.md) - Impegni articoli - [V_IMPEGNI_ARTICOLI_LOC](views/V_IMPEGNI_ARTICOLI_LOC.md) - Impegni per location Viste per report: - [V_REP_ALLESTIMENTI](views/V_REP_ALLESTIMENTI.md) - Report allestimenti - [VW_REP_DEGUSTAZIONI](views/VW_REP_DEGUSTAZIONI.md) - Report degustazioni - [V_GRIGLIA](views/V_GRIGLIA.md) - Vista griglia - [GET_REPORT_CONSUNTIVO_PER_DATA](views/GET_REPORT_CONSUNTIVO_PER_DATA.md) - Consuntivo Viste per utenti/permessi: - [GET_CONSUNTIVI_USERS](views/GET_CONSUNTIVI_USERS.md) - Utenti consuntivi - [GET_GESTORI_USERS](views/GET_GESTORI_USERS.md) - Utenti gestori - [GET_USERS_LIST](views/GET_USERS_LIST.md) - Lista utenti Viste per pagamenti: - [GET_EVENTI_DA_PAGARE_ENTRO_65GG](views/GET_EVENTI_DA_PAGARE_ENTRO_65GG.md) - Eventi da sollecitare ### [Stored Procedures](procedures/README.md) (11) Business logic principale: - [EVENTI_AGGIORNA_QTA_LISTA](procedures/EVENTI_AGGIORNA_QTA_LISTA.md) - Ricalcolo quantità lista prelievo - [EVENTI_AGGIORNA_TOT_OSPITI](procedures/EVENTI_AGGIORNA_TOT_OSPITI.md) - Aggiorna totale ospiti - [EVENTI_COPIA](procedures/EVENTI_COPIA.md) - Duplicazione evento - [EVENTI_RICALCOLA_ACCONTI](procedures/EVENTI_RICALCOLA_ACCONTI.md) - Ricalcolo acconti - [EVENTO_ELIMINA_PRELIEVI](procedures/EVENTO_ELIMINA_PRELIEVI.md) - Elimina prelievi - [LISTE_COPIA](procedures/LISTE_COPIA.md) - Copia liste tra eventi - [P_CANCEL_SAME_LOCATION_EVENTS](procedures/P_CANCEL_SAME_LOCATION_EVENTS.md) - Annulla eventi stessa location Utility: - [ROWSORT_TIPI](procedures/ROWSORT_TIPI.md) - Ordinamento tipi - [HTPPRN](procedures/HTPPRN.md) - Stampa HTTP - [SEND_DATA_TO_DROPBOX](procedures/SEND_DATA_TO_DROPBOX.md) - Export Dropbox - [XLOG](procedures/XLOG.md) - Logging ### [Funzioni](functions/README.md) (23) Calcolo quantità e disponibilità: - [F_GET_QTA_IMPEGNATA](functions/F_GET_QTA_IMPEGNATA.md) - Quantità impegnata - [F_GET_TOT_OSPITI](functions/F_GET_TOT_OSPITI.md) - Totale ospiti - [F_GET_OSPITI](functions/F_GET_OSPITI.md) - Dettaglio ospiti (pipelined) - [F_LIST_PRELIEVO_ADD_ARTICOLO](functions/F_LIST_PRELIEVO_ADD_ARTICOLO.md) - Aggiunta articolo Calcolo costi: - [F_GET_COSTO_ARTICOLO](functions/F_GET_COSTO_ARTICOLO.md) - Costo articolo a data Validazioni: - [F_EVENTO_SCADUTO](functions/F_EVENTO_SCADUTO.md) - Verifica scadenza - [F_MAX_NUMERO_EVENTI_RAGGIUNTO](functions/F_MAX_NUMERO_EVENTI_RAGGIUNTO.md) - Limite eventi - [F_MAX_NUM_EVENTI_CONFERMATI](functions/F_MAX_NUM_EVENTI_CONFERMATI.md) - Limite confermati - [F_CI_SONO_EVENTI_CONFERMATI](functions/F_CI_SONO_EVENTI_CONFERMATI.md) - Check confermati Report: - [F_REP_ALLESTIMENTI](functions/F_REP_ALLESTIMENTI.md) - Report allestimenti - [F_REP_CUCINA](functions/F_REP_CUCINA.md) - Report cucina - [F_GET_ANGOLO_ALLESTIMENTO](functions/F_GET_ANGOLO_ALLESTIMENTO.md) - Angolo allestimento - [F_GET_ANGOLO_ALLESTIMENTO_OB](functions/F_GET_ANGOLO_ALLESTIMENTO_OB.md) - Angolo open bar - [F_GET_TOVAGLIATO_ALLESTIMENTO](functions/F_GET_TOVAGLIATO_ALLESTIMENTO.md) - Tovagliato Autorizzazioni: - [F_USER_IN_ROLE](functions/F_USER_IN_ROLE.md) - Verifica ruolo utente - [F_USER_IN_ROLE_STR](functions/F_USER_IN_ROLE_STR.md) - Ruolo utente (stringa) Utility: - [F_DAY_TO_NAME](functions/F_DAY_TO_NAME.md) - Giorno in italiano - [STRING_TO_TABLE_ENUM](functions/STRING_TO_TABLE_ENUM.md) - Stringa a tabella - [GET_PARAM_VALUE](functions/GET_PARAM_VALUE.md) - Valore parametro - [SPLIT](functions/SPLIT.md) - Split stringa - [MY_INSTR](functions/MY_INSTR.md) - Instr custom - [CLOB2BLOB](functions/CLOB2BLOB.md) - Conversione CLOB - [EXTDATE_GET_ITA](functions/EXTDATE_GET_ITA.md) - Data in italiano ### [Packages](packages/README.md) (17) Business: - [MAIL_PKG](packages/MAIL_PKG.md) - Gestione invio email automatiche Utility esterne: - [UTL_BASE64](packages/UTL_BASE64.md) - Encoding Base64 JasperReports: - [XLIB_JASPERREPORTS](packages/XLIB_JASPERREPORTS.md) - Integrazione JasperReports - [XLIB_JASPERREPORTS_IMG](packages/XLIB_JASPERREPORTS_IMG.md) - Immagini report HTTP/Componenti: - [XLIB_HTTP](packages/XLIB_HTTP.md) - Chiamate HTTP - [XLIB_COMPONENT](packages/XLIB_COMPONENT.md) - Componenti - [XLIB_LOG](packages/XLIB_LOG.md) - Logging JSON (libreria PLJSON): - [PLJSON_DYN](packages/PLJSON_DYN.md) - [PLJSON_EXT](packages/PLJSON_EXT.md) - [PLJSON_HELPER](packages/PLJSON_HELPER.md) - [PLJSON_ML](packages/PLJSON_ML.md) - [PLJSON_OBJECT_CACHE](packages/PLJSON_OBJECT_CACHE.md) - [PLJSON_PARSER](packages/PLJSON_PARSER.md) - [PLJSON_PRINTER](packages/PLJSON_PRINTER.md) - [PLJSON_UT](packages/PLJSON_UT.md) - [PLJSON_UTIL_PKG](packages/PLJSON_UTIL_PKG.md) - [PLJSON_XML](packages/PLJSON_XML.md) ### [Triggers](triggers/README.md) (19) Generazione ID: - [EVENTI_TRG](triggers/EVENTI_TRG.md) - ID eventi + inizializzazione - [EVENTI_AI_TRG](triggers/EVENTI_AI_TRG.md) - Creazione ospiti default - [EVENTI_DET_PREL_TRG](triggers/EVENTI_DET_PREL_TRG.md) - ID prelievi - [EVENTI_DET_RIS_TRG](triggers/EVENTI_DET_RIS_TRG.md) - ID risorse - [EVENTI_DET_DEGUST_TRG](triggers/EVENTI_DET_DEGUST_TRG.md) - ID degustazioni - [EVENTI_ACCONTI_TRG](triggers/EVENTI_ACCONTI_TRG.md) - ID acconti - [EVENTI_ALTRICOSTI_TRG](triggers/EVENTI_ALTRICOSTI_TRG.md) - ID altri costi - [EVENTI_ALLEG_TRG](triggers/EVENTI_ALLEG_TRG.md) - ID allegati - [CLIENTI_TRG](triggers/CLIENTI_TRG.md) - ID clienti - [LOCATION_TRG](triggers/LOCATION_TRG.md) - ID location - [RISORSE_TRG](triggers/RISORSE_TRG.md) - ID risorse - [ARTICOLI_DET_REGOLE_TRG](triggers/ARTICOLI_DET_REGOLE_TRG.md) - ID regole articoli - [TB_TIPI_PASTO_TRG](triggers/TB_TIPI_PASTO_TRG.md) - ID tipi pasto Business logic: - [EVENTI_DET_OSPITI_TRG_AI](triggers/EVENTI_DET_OSPITI_TRG_AI.md) - Aggiornamento ospiti - [EVENTI_DET_PREL_QTA_TOT_TRG](triggers/EVENTI_DET_PREL_QTA_TOT_TRG.md) - Calcolo quantità totale Ordinamento: - [ADD_COD_STEP](triggers/ADD_COD_STEP.md) - Ordine tipi materiale - [ON_DELETE_REORDER](triggers/ON_DELETE_REORDER.md) - Riordino dopo delete Sistema: - [BI_GL_SCHEMA_CHANGES](triggers/BI_GL_SCHEMA_CHANGES.md) - Log modifiche schema - [XLIB_LOGS_BI_TRG](triggers/XLIB_LOGS_BI_TRG.md) - Log applicazione ### [Sequences](sequences/README.md) (22) Tutte le sequence del database. ### [Types](types/README.md) (10) Tipi custom: - [T_DET_OSPITI_ROW](types/T_DET_OSPITI_ROW.md) / [T_DET_OSPITI_TAB](types/T_DET_OSPITI_TAB.md) - Tipo per F_GET_OSPITI - [T_REP_ALLESTIMENTI_ROW](types/T_REP_ALLESTIMENTI_ROW.md) / [T_REP_ALLESTIMENTI_TAB](types/T_REP_ALLESTIMENTI_TAB.md) - Tipo per F_REP_ALLESTIMENTI - [T_REP_CUCINA_ROW](types/T_REP_CUCINA_ROW.md) / [T_REP_CUCINA_TAB](types/T_REP_CUCINA_TAB.md) - Tipo per F_REP_CUCINA - [STRING_LIST](types/STRING_LIST.md) - Lista stringhe - [ENUM_TABLE_OBJECT](types/ENUM_TABLE_OBJECT.md) / [ENUM_TABLE_TYPE](types/ENUM_TABLE_TYPE.md) - Tipi per STRING_TO_TABLE_ENUM - [XLIB_VC2_ARRAY_T](types/XLIB_VC2_ARRAY_T.md) - Array varchar2 --- ## Schema ER Semplificato ``` ┌─────────────┐ │ CLIENTI │ └──────┬──────┘ │ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ LOCATION │◄────│ EVENTI │────►│TB_TIPI_EVENTO│ └─────────────┘ └──────┬──────┘ └─────────────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │EVENTI_DET_OSPITI│ │ EVENTI_DET_PREL │ │ EVENTI_DET_RIS │ └─────────────────┘ └────────┬────────┘ └────────┬────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ TB_TIPI_OSPITI │ │ ARTICOLI │ │ RISORSE │ └─────────────────┘ └────────┬────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ │ TB_CODICI_CATEG │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ TB_TIPI_MAT │ └─────────────────┘ ┌─────────────────┬─────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │EVENTI_DET_DEGUST│ │ EVENTI_ACCONTI │ │EVENTI_ALTRICOSTI│ └─────────────────┘ └─────────────────┘ └─────────────────┘ ``` ## Workflow Stati Evento ``` ┌──────────────┐ │ PREVENTIVO │ (100) - Bianco └──────┬───────┘ │ Degustazione ▼ ┌──────────────┐ │SCHEDA EVENTO │ (200) - Celeste │(preparazione)│ └──────┬───────┘ │ Prima caparra ▼ ┌──────────────┐ │ SCHEDA │ (300) - Giallo │ CONFERMATA │ └──────┬───────┘ │ Quasi confermato ▼ ┌──────────────┐ │SCHEDA QUASI │ (350) - Arancio │ CONFERMATA │ └──────┬───────┘ │ Conferma definitiva ▼ ┌──────────────┐ │ CONFERMATO │ (400) - Verde └──────────────┘ │ Rifiuto/Scadenza ▼ ┌──────────────┐ │NON ACCETTATO/│ (900) - Viola │ SUPERATO │ └──────────────┘ ``` ## Note per lo Sviluppo 1. **Packages PLJSON\_\***: Libreria esterna per parsing JSON, può essere sostituita con funzionalità native .NET 2. **Packages XLIB\_\***: Componenti per integrazione JasperReports, da valutare sostituzione con report .NET 3. **Trigger per ID**: In .NET usare Identity columns o GUID 4. **Calcolo quantità**: La logica in `EVENTI_AGGIORNA_QTA_LISTA` è critica e deve essere portata fedelmente 5. **Sistema acconti**: Le percentuali 30%-50%-20% sono hardcoded, valutare parametrizzazione