▼
Pagine
| Codice | Nome | File | API | Descrizione |
|---|---|---|---|---|
| IDX | Dashboard | index.html |
api.php |
Login, sidebar, link, calendario scadenze, gestione utenti |
| BGT | Analytics — Generale | analytics.html |
budget-api.php |
Consuntivo full year: Netto A, Netto B, confronto budget vs reale per tutte le strutture |
| BGI | Gestione Budget | gestione-budget.html |
budget-api.php |
Input budget previsionale: notti, soggiorno medio, prezzo netto per struttura/mese. Freeze/unfreeze |
| BGA | Analytics — Appartamento | analytics-appartamento.html |
budget-api.php |
Dettaglio singola struttura: confronto mensile budget vs consuntivo |
| BCF | Analytics — Cash Flow | analytics-cashflow.html |
budget-api.php |
Proiezione incassi settimanale/mensile basata su prenotazioni confermate |
| CST | Costi | costi.html |
costi-api.php |
Gestione costi fissi e variabili per sede (Assisi, Roma, Veneto). Budget e consuntivo |
| PUL | Pulizie | pulizie.html |
pulizie-api.php |
Gestione pulizie Veneto: ore, costi, pagamenti, saldi operatrici |
| CFW | Cash Flow Cecilia | cashflow.html |
cashflow-api.php |
Entrate, uscite e saldo dell'appartamento di Cecilia. Export verso Google Sheets |
| UKB | Upload KB | upload-kb.html |
budget-api.php |
Upload export xlsx Kross Booking per aggiornare prenotazioni nel DB |
| MAP | Mappa Hub | hub-map.html |
- | Questa pagina: inventario architettura. Accessibile da Impostazioni (solo admin) |
▼
API Endpoints
api.php — Autenticazione, Link, Scadenze, Utenti
| Action | Metodo | Descrizione | Tabelle |
|---|---|---|---|
check-setup | POST | Verifica se esiste almeno un admin | users |
setup-step1 | POST | Registra primo admin (username, email) | users |
setup-step2 | POST | Verifica TOTP e attiva admin | users |
login-step1 | POST | Login: verifica username e password | users |
login-step2 | POST | Login: verifica codice TOTP | users, sessions |
check-session | POST | Verifica sessione attiva da cookie | sessions, users |
logout | POST | Distrugge sessione | sessions |
register-step1 | POST | Registra nuovo utente con invito | users, invites |
register-step2 | POST | Conferma TOTP nuovo utente | users, invites |
get-links | POST | Elenco link per categoria | links, categories |
save-link | POST | Crea/aggiorna un link | links |
delete-link | POST | Elimina un link | links |
move-link | POST | Riordina un link | links |
get-categories | POST | Elenco categorie link | categories |
add-category | POST | Nuova categoria | categories |
delete-category | POST | Elimina categoria | categories, links |
move-category | POST | Riordina categoria | categories |
get-deadlines | POST | Elenco scadenze | deadlines |
save-deadline | POST | Crea/aggiorna scadenza | deadlines |
delete-deadline | POST | Elimina scadenza | deadlines |
complete-deadline | POST | Completa scadenza (rigenera se ricorrente) | deadlines |
get-users | POST | Elenco utenti (admin) | users |
send-invite | POST | Invia invito registrazione | invites |
change-password | POST | Cambio password utente | users |
export-data | POST | Export JSON completo | links, categories, deadlines |
import-data | POST | Import JSON | links, categories, deadlines |
budget-api.php — Budget, Prenotazioni, Generale
| Action | Metodo | Descrizione | Tabelle |
|---|---|---|---|
get-budget-data | GET | Dati budget tutte le strutture (per BGT) | budget_riepilogo, appartamenti, centri_costo, sedi |
get-booking-data | GET | Dati prenotazioni tutte le strutture | prenotazioni, prenotazione_appartamenti |
get-data-for-apartment | GET | Budget singola struttura (per BGA) | budget_riepilogo, appartamenti, centri_costo |
get-booking-data-for-apartment | GET | Prenotazioni singola struttura | prenotazioni, prenotazione_appartamenti |
get-generale-data | GET | Dati generali aggregati (per BGT) | generale_mensile, generale_struttura, utili_mensili |
get-budget-input | GET | Dati input budget per struttura/mese (per BGI) | budget_riepilogo, costi_mensili, appartamenti, centri_costo, budget_stato |
save-budget-input | POST | Salva input budget (notti, sogg medio, prezzo netto) | budget_riepilogo, costi_mensili |
freeze-budget | POST | Congela budget anno: fotografa costi | budget_riepilogo, costi_mensili, budget_stato |
unfreeze-budget | POST | Sblocca budget anno | budget_stato |
upload-kb | POST | Upload export Kross Booking (xlsx) | prenotazioni, prenotazione_appartamenti, appartamenti |
import-budget-csv | POST | Import CSV budget | budget_riepilogo |
import-bookings-csv | POST | Import CSV prenotazioni | prenotazioni |
purge-year | POST | Elimina dati di un anno | budget_riepilogo, prenotazioni, generale_mensile, generale_struttura, utili_mensili |
debug-strutture | GET | Debug: elenco strutture e appartamenti | appartamenti, centri_costo, sedi |
costi-api.php — Gestione Costi
| Action | Metodo | Descrizione | Tabelle |
|---|---|---|---|
get-costi | GET | Dati costi per sede/anno con parametri | costi_mensili, dati_mensili, parametri, appartamenti, centri_costo, sedi, biancheria_listino, biancheria_set |
save-costi | POST | Salva costi modificati (budget e consuntivo) | costi_mensili, dati_mensili, parametri |
pulizie-api.php — Pulizie Veneto
| Action | Metodo | Descrizione | Tabelle |
|---|---|---|---|
get-all | GET | Tutte le pulizie | pulizie |
get-summary | GET | Riepilogo mese x dove | pulizie |
add | POST | Nuova pulizia | pulizie |
update | POST | Modifica pulizia | pulizie |
delete | POST | Elimina pulizia | pulizie |
mark-paid | POST | Segna come pagata | pulizie |
get-crediti | GET | Crediti operatrici | pulizie |
get-saldi | GET | Saldi operatrici | saldi_sv |
add-saldo | POST | Aggiunge movimento saldo | saldi_sv |
delete-saldo | POST | Elimina movimento saldo | saldi_sv |
get-sync-log | GET | Log sincronizzazione | pulizie_sync_log |
cashflow-api.php — Cash Flow Cecilia
| Action | Metodo | Descrizione | Tabelle |
|---|---|---|---|
get-all | GET | Tutti i movimenti | cashflow |
add | POST | Nuovo movimento | cashflow |
update | POST | Modifica movimento | cashflow |
delete | POST | Elimina movimento | cashflow |
verify | POST | Verifica movimento | cashflow |
unverify | POST | Annulla verifica | cashflow |
export-to-gsheet | POST | Esporta verso Google Sheets | cashflow, cashflow_sync_log |
upload-kb | POST | Upload Knowledge Base | - |
get-sync-log | GET | Log sincronizzazione | cashflow_sync_log |
▼
Tabelle Database
Database: u831498254_hub su Hostinger (MySQL/InnoDB, utf8mb4)
| Tabella | PK | Colonne principali | Relazioni (FK) | Usata da |
|---|---|---|---|---|
| Autenticazione & Sistema | ||||
users |
id | username, email, password_hash, role, totp_secret, is_active | - | IDX |
sessions |
id | user_id, token, expires_at | user_id → users.id | IDX (tutte le pagine) |
invites |
id | email, code, role, created_by, used | created_by → users.id | IDX |
| Dashboard (Link & Scadenze) | ||||
links |
id | category_id, title, url, description, position | category_id → categories.id | IDX |
categories |
id | name, position, created_by | - | IDX |
deadlines |
id | title, due_date, recurrence, assignee, completed | - | IDX |
| Struttura Appartamenti | ||||
sedi |
id | codice (assisi/roma/veneto), nome, attiva | - | CST BGT |
appartamenti |
id | sede_id, codice, nome, centro_costo, num_unita, letti_matr/sing/medi, affitto_mensile | sede_id → sedi.id; centro_costo → centri_costo.codice | BGT BGI CST |
centri_costo |
id | sede_id, codice, nome | sede_id → sedi.id | BGT BGI CST |
| Prenotazioni | ||||
prenotazioni |
id | codice_prenotazione, ospite, checkin, checkout, notti, importo_lordo, ota, stato, anno | - | BGT BGA BCF UKB |
prenotazione_appartamenti |
id | prenotazione_id, appartamento_id | prenotazione_id → prenotazioni.id; appartamento_id → appartamenti.id | BGT BGA |
| Budget & Costi | ||||
budget_riepilogo |
id | anno, mese, struttura, notti_nom, notti_bgt, notti_cons, pm_lordo_bgt, pm_lordo_cons, ricavo_bgt, ricavo_cons, comm_bgt, comm_cons, netto_a_bgt, netto_a_cons, tot_fissi, tot_variabili, netto_b_bgt, netto_b_cons | - | BGT BGI BGA |
budget_stato |
anno | confermato, confermato_da, confermato_il, note | - | BGI |
dati_mensili |
id | centro_costo_id, anno, mese, notti_potenziali, notti_budget, notti_consuntivo, soggiorni_budget, soggiorni_consuntivo | centro_costo_id → centri_costo.id | CST |
costi_mensili |
id | centro_costo_id, anno, mese, voce, tipo (fisso/variabile), importo_budget, importo_consuntivo | centro_costo_id → centri_costo.id | CST BGI |
parametri |
id | sede_id, centro_costo_id, anno, chiave, valore | sede_id → sedi.id; centro_costo_id → centri_costo.id | CST |
biancheria_listino |
id | fornitore, tipo_biancheria, prezzo_unitario | - | CST |
biancheria_set |
id | centro_costo_id, biancheria_listino_id, quantita | centro_costo_id → centri_costo.id; biancheria_listino_id → biancheria_listino.id | CST |
ricarichi |
id | struttura, anno, mese, percentuale | - | BGT |
| Aggregati Generali | ||||
generale_mensile |
id | anno, mese, notti_bgt, notti_cons, ricavo_bgt, ricavo_cons, netto_a_bgt, netto_a_cons, costi_fissi, costi_variabili, netto_b_bgt, netto_b_cons | - | BGT |
generale_struttura |
id | anno, struttura, notti_bgt, notti_cons, ricavo_bgt, ricavo_cons, netto_a_bgt, netto_a_cons, netto_b_bgt, netto_b_cons | - | BGT |
utili_mensili |
id | anno, mese, struttura, utile_bgt, utile_cons | - | BGT |
| Pulizie & Cash Flow | ||||
pulizie |
id | mese, data, dove, chi, ore, costo_ora, totale_1, trasferta, pagato, note | - | PUL |
saldi_sv |
id | operatrice, data, tipo, importo, descrizione | - | PUL |
pulizie_sync_log |
id | azione, dettagli, utente, created_at | - | PUL |
cashflow |
id | mese, data, ota, descrizione, entrate, uscite, saldo, inserito_da, verificato | - | CFW |
cashflow_sync_log |
id | azione, dettagli, utente, created_at | - | CFW |
▼
Relazioni tra Pagine
Come le pagine si influenzano reciprocamente attraverso le tabelle condivise
CST → BGI
costi_mensili viene letto da BGI per popolare la colonna Costi.
Quando il budget viene congelato (freeze), i costi vengono fotografati in budget_riepilogo.
Quando il budget viene congelato (freeze), i costi vengono fotografati in budget_riepilogo.
BGI → BGT
BGI scrive in budget_riepilogo i dati previsionali.
BGT li legge per il confronto budget vs consuntivo.
BGT li legge per il confronto budget vs consuntivo.
UKB → BGT BGA BCF
UKB importa prenotazioni in prenotazioni e prenotazione_appartamenti.
Queste alimentano i dati consuntivo in BGT, BGA e BCF.
Queste alimentano i dati consuntivo in BGT, BGA e BCF.
BGT ↔ BGA
Stesse tabelle (budget_riepilogo, prenotazioni).
BGT = vista aggregata, BGA = dettaglio singola struttura.
BGT = vista aggregata, BGA = dettaglio singola struttura.
PUL (isolata)
Usa solo pulizie e saldi_sv.
Non ha dipendenze con altre pagine.
Non ha dipendenze con altre pagine.
CFW (isolata)
Usa solo cashflow.
Export opzionale verso Google Sheets.
Export opzionale verso Google Sheets.
▼
File di Supporto
| File | Tipo | Descrizione | Stato |
|---|---|---|---|
config.php |
CONFIG | Connessione DB (PDO), CORS, session, helper json_response() | Attivo |
install.php |
SETUP | Crea tabelle base: users, sessions, links, categories, invites | Eseguito |
migrate.php |
MIGRAZIONE | Crea tabelle dati: sedi, appartamenti, centri_costo, prenotazioni, costi_mensili, budget_riepilogo, ecc. | Eseguito |
schema.sql |
SCHEMA | Schema SQL completo di riferimento (non eseguibile direttamente) | Riferimento |
update-db.php |
MIGRAZIONE | Aggiunge tabella deadlines | Eseguito |
update-db-v2.php |
MIGRAZIONE | Aggiunge deadlines (v2), budget_rows, bookings, budget_sync_log | Eseguito |
update-db-pulizie.php |
MIGRAZIONE | Crea pulizie, pulizie_sync_log, saldi_sv | Eseguito |
update-db-cashflow.php |
MIGRAZIONE | Crea cashflow, cashflow_sync_log | Eseguito |
update-db-budget.php |
MIGRAZIONE | Aggiunge colonna num_unita ad appartamenti (Doria = 3) | Eseguito |
update-db-freeze.php |
MIGRAZIONE | Crea tabella budget_stato per freeze budget | DA ESEGUIRE |
File di debug da eliminare dal server: google-sheets.php, test-apps-script.php, debug-generale.php, debug-dati.php, debug-confronto.php, debug-luigi.php, debug-costi-vs-utili.php
▼
Note Architetturali
| Argomento | Dettaglio |
|---|---|
| Consolidamento 2025 | Per il 2025, Respiro + Luce + Riflesso sono consolidati in LeVolte. Dal 2026 sono 7 strutture separate. La funzione getStructureConfig() in budget-api.php gestisce questa logica. |
| Doria = 3 unita | La struttura Doria (Roma) ha 3 appartamenti (Clelia, Drusilla, Ottavia) ma 1 solo record in appartamenti. La colonna num_unita = 3 viene usata per calcolare le notti potenziali: giorni_mese × SUM(num_unita). |
| Formula prezzi BGI | Prezzo Netto (editabile) → Prezzo Lordo = Netto / 0.80 → Ricavo Lordo = Lordo × Notti BGT → Comm OTA = Ricavo × 20% → Netto A = Ricavo - Comm → Netto B = Netto A - Costi |
| Freeze budget | Quando confermato, i costi da costi_mensili vengono fotografati in budget_riepilogo (tot_fissi, tot_variabili). Da quel momento BGI legge i costi dal riepilogo, non piu in tempo reale. |
| Autenticazione | TOTP (Google Authenticator) + cookie da_hub_token. Ogni API verifica il token via checkSession(). Sessione 24h (30gg con remember). |
| Formato numeri | Italiano con separatore migliaia sempre: 1.095, 38.721,25. Regex: /\B(?=(\d{3})+(?!\d))/g |
| Sedi e centri costo | Assisi (LeVolte, Respiro, Luce, Riflesso), Roma (Doria → Clelia+Drusilla+Ottavia), Veneto (Jesolo, Motta). Join: appartamenti.centro_costo (TEXT) → centri_costo.codice |