Files
apollinare-catering-software/docs/README.md
2025-12-17 13:02:12 +01:00

423 lines
18 KiB
Markdown

# 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