BellSera — Gestione prenotazioni Spa & Salon per NexoPOS
BellSera aggiunge la pianificazione degli appuntamenti di servizio e le operazioni di servizio quotidiane a NexoPOS. Collega il catalogo prodotti, i clienti, gli ordini, il personale, le sale, i pagamenti e il POS, così un’attività di servizi può gestire prenotazioni programmate e clienti walk-in da un’unica piattaforma.
Il modulo include:
- Una pagina pubblica di prenotazione self-service.
- Tipi di ordini POS con prenotazione e walk-in.
- Un calendario degli appuntamenti e un elenco degli appuntamenti.
- Gestione della disponibilità del personale e delle camere.
- Code di esecuzione multi-servizio con timer persistenti.
- Strumenti di presenza, pagamento, cambio personale, valutazione e reportistica.
- Messaggi SMS opzionali di conferma, promemoria e sondaggi tramite NsSMS.
Informazioni sul modulo
| Item | Value |
|---|---|
| Display name | BellSera |
| Namespace | NsAppointments |
| Version | 6.2.0 |
| Author | NexoPOS |
| Supported NexoPOS core | 6.2.2 through 6.2.99 |
| Optional integration | NsSMS 6.2.1 or newer |
| Public booking path | /appointments |
Panoramica delle funzionalità
Prenotazione online pubblica
La pagina pubblica di prenotazione consente a un cliente di:
- Sfoglia le categorie di servizi disponibili e i servizi.
- Esamina l’immagine, la descrizione, la durata, il prezzo e il requisito di pagamento di ogni servizio.
- Aggiungi uno o più servizi a un carrello prenotazioni.
- Scegli qualsiasi membro del personale disponibile oppure richiedi un membro del personale idoneo specifico.
- Scegli una stanza disponibile quando l’assegnazione delle stanze è abilitata.
- Seleziona una data e cerca un orario di appuntamento valido.
- Inserisci il nome, l’indirizzo email, il numero di telefono e le note.
- Invia la richiesta di appuntamento e ricevi un riferimento di prenotazione univoco.
Disponibilità rispettata:
- Giorni lavorativi e orari di apertura configurati.
- L’intervallo dello slot.
- Preavviso minimo di prenotazione.
- La finestra massima di prenotazione anticipata.
- Durata del servizio e buffer prima/dopo.
- Ruoli del personale assegnati a ciascuna categoria di servizio.
- Gli appuntamenti esistenti che bloccano il personale, la stanza o la risorsa selezionati.
- Lo stato operativo attuale del personale e delle stanze.
Il checkout pubblico crea o riutilizza un cliente NexoPOS, crea un ordine NexoPOS collegato e memorizza l’appuntamento e le relative singole righe di servizio.
Nota di pagamento: la pagina pubblica calcola se non è richiesto alcun pagamento, un acconto parziale o il pagamento completo. Registra l’importo come dovuto e visualizza le istruzioni di pagamento manuale configurate. Non elabora direttamente un pagamento online.
Gli endpoint di disponibilità pubblica e di checkout sono limitati in base alla velocità per ridurre gli abusi.
Configurazione del catalogo dei servizi
BellSera estende il catalogo NexoPOS invece di mantenere un database prodotti separato.
Nelle Impostazioni di BellSera → Catalogo, gli amministratori possono definire:
- Catégorie di servizi — i prodotti in queste categorie possono diventare servizi prenotabili.
- Categorie di prodotti vendibili — prodotti di vendita al dettaglio regolari o componenti aggiuntivi opzionali per appuntamenti.
- Assegnazione stanza — se è necessario selezionare una stanza per i servizi di appuntamento al POS.
Una categoria non può essere sia una categoria di servizio sia una categoria vendibile.
Ogni prodotto dispone di una scheda di configurazione Appuntamenti con:
- Servizio prenotabile attivato/disattivato.
- Durata del servizio in minuti.
- Tempo di buffer prima del servizio.
- Tempo di buffer dopo il servizio.
- Requisito di pagamento: nessuno, acconto parziale o pagamento completo.
- Tipo di deposito: importo fisso o percentuale.
- Valore del deposito.
Un servizio deve avere un’unità di vendita configurata prima di poter essere pianificato.
Iscrizione del personale e idoneità ai servizi
Il personale addetto agli appuntamenti si basa sugli utenti NexoPOS e sui ruoli standard.
Gli amministratori configurano:
- I ruoli NexoPOS i cui utenti attivi possono diventare personale per gli appuntamenti.
- Les rôles autorisés à effectuer des services dans chaque catégorie de service.
- Nome visualizzato di ciascun lavoratore.
- Se il lavoratore è abilitato agli appuntamenti.
- Disponibilità attuale del lavoratore: disponibile, non disponibile o occupato.
I profili dei lavoratori vengono creati automaticamente in base ai ruoli configurati. Non possono essere creati o eliminati manualmente dalla schermata del personale di appuntamento; disabilita invece un profilo lavoratore.
Vengono proposti per nuove prenotazioni solo i lavoratori attivi e disponibili con un ruolo idoneo per una categoria di servizio. Avviare un servizio rende il lavoratore occupato e completare o interrompere l’ultimo servizio attivo del lavoratore lo rende nuovamente disponibile.
Gestione della stanza
Le stanze possono essere create e gestite da BellSera → Stanze.
Ogni stanza supporta:
- Nome.
- Miniatura.
- Descrizione.
- Prezzo extra.
- Stato della disponibilità: disponibile, non disponibile o occupato.
Solo le camere disponibili possono essere assegnate. Una camera può essere libera oppure aggiungere un costo al servizio.
Al punto vendita, viene applicato un addebito per la camera una volta per ogni riga di servizio:
totale riga = (prezzo unitario del servizio × quantità − sconto) + costo della stanza
L’addebito della camera non viene moltiplicato per la quantità di servizi. Le camere possono anche essere riportate manualmente allo stato disponibile con Imposta camera libera.
Prenotazioni POS e walk-in
Il modulo registra due tipi di ordini NexoPOS:
| Order type | Behavior |
|---|---|
| Booking | A scheduled appointment. Staff select a date/time, service staff, optional rooms, and notes. |
| Walk-in | An immediate appointment. The start time defaults to the current time. |
Quando in NexoPOS, nelle impostazioni dell’ordine per tipo, è abilitato uno dei due tipi di ordine, BellSera aggiunge il flusso di lavoro dell’appuntamento al POS:
- Richiede alla cassiera di scegliere Prenotazione o Walk-in dopo il ripristino del carrello.
- Riconosce i prodotti configurati come servizi su appuntamento.
- Seleziona una stanza disponibile quando l’assegnazione delle stanze è abilitata.
- Seleziona il personale idoneo che è disponibile all’orario del servizio.
- Visualizza il personale assegnato e le informazioni sulla stanza sotto ogni riga della postazione di servizio.
- Consente di modificare assegnazioni del personale e delle stanze direttamente dal carrello.
- Gestisce le quantità riservando un lavoratore per ogni occorrenza di servizio programmata.
- Rivalida le informazioni della prenotazione prima del pagamento quando cambia il carrello del servizio.
- Impedisce a un ordine pagato/non in attesa di utilizzare un lavoratore, una stanza o una fascia oraria non disponibile.
- Conserva i campi dell’appuntamento quando un ordine viene messo in attesa, modificato e ricaricato.
- Crea automaticamente un appuntamento collegato dopo la creazione o l’aggiornamento dell’ordine in NexoPOS.
L’intestazione POS include anche un pulsante **Appuntamenti** che apre il calendario a schermo intero e l’interfaccia di gestione dei servizi senza uscire dal POS.
Gestione appuntamenti del dashboard
Il menu della dashboard di BellSera offre:
- Calendario
- Appuntamenti
- Crea appuntamento
- Camere
- Disponibilità del personale
- Prestazioni del personale
- Impostazioni BellSera
L’elenco degli appuntamenti supporta la creazione, la modifica, l’eliminazione e l’eliminazione in blocco dei record degli appuntamenti in base alle autorizzazioni dell’utente corrente.
Un appuntamento creato manualmente può includere:
- Un riferimento generato o personalizzato.
- Data e ora di inizio e di fine.
- Stato dell’appuntamento e origine.
- Personale o stanza assegnati.
- Nome del cliente, indirizzo email e numero di telefono.
- Note interne.
La pianificazione manuale rifiuta conflitti di personale o di stanze. Deve essere assegnato almeno un membro del personale o una stanza.
Operazioni su calendario e giorni
Il calendario visualizza le prenotazioni programmate e le presenze senza appuntamento e fornisce una panoramica operativa dettagliata per ogni appuntamento.
Gli operatori possono:
- Naviga nel calendario mensile e apri tutti gli appuntamenti per un giorno.
- Distingui le prenotazioni dalle richieste senza prenotazione.
- Rivedi le informazioni relative a cliente, servizio, personale, camera, ordine e pagamento.
- Modifica lo stato del ciclo di vita dell’appuntamento.
- Registra la presenza e una nota di presenza.
- Apri la scheda di pagamento dell’ordine NexoPOS collegata per aggiungere un pagamento quando rimane un saldo.
- Apri un servizio individuale per avviarlo, monitorarlo, completarlo o arrestarlo.
- Monitora ogni servizio attualmente in esecuzione dall’hub dei servizi attivi.
Gli stati del ciclo di vita dell’appuntamento sono:
- pagamento in sospeso
- in attesa di conferma
- confermato
- fatto l’accesso (in sede)
- completato
- annullato
- non presentato
- scaduto
La presenza è monitorata in modo indipendente come:
- previsto
- arrivato/a
- tardi
- mancata presentazione
- sinistra
Presenza e stato del ciclo di vita sono sincronizzati in modo graduale. Ad esempio, contrassegnare come arrivato un cliente confermato verifica l’appuntamento, mentre un aggiornamento di mancata presenza può contrassegnare un appuntamento aperto come mancata presenza.
Le prenotazioni programmate devono essere contrassegnate come Arrivate o In ritardo prima che il servizio possa iniziare. I clienti senza prenotazione possono iniziare immediatamente.
Esecuzione del servizio, timer e code
Ogni linea di servizio ha il proprio stato operativo:
- in sospeso
- pronto
- in corso
- completato
- incompleto
- annullato
Il primo servizio disponibile viene promosso a Pronto. Gli operatori possono quindi:
- Avvia il servizio pronto.
- Segui un timer di tempo trascorso o di conto alla rovescia basato sulla durata del servizio.
- Chiudi e riapri il timer senza interrompere il servizio.
- Completa il servizio con successo.
- Interrompi il servizio come incompleto.
- Riavvia un servizio incompleto.
- Avvia il servizio pronto successivo.
- Riorganizza i servizi in sospeso, pronti e incompleti con il trascinamento o i controlli a freccia.
I servizi in corso, completati e annullati sono bloccati e non possono essere riordinati.
Avviare un servizio contrassegna l’operatore assegnato e la stanza come occupati. Completarlo o interromperlo libera tali risorse quando non sono utilizzate da un altro servizio in esecuzione.
Il calendario interroga il server per i servizi attivi e mette in evidenza i servizi che hanno raggiunto la durata prevista.
Un lavoro di sicurezza orario può arrestare automaticamente i servizi rimasti in esecuzione più a lungo della soglia di inattività configurata. Imposta Service Idle Auto-Stop a 0 per disabilitare questo comportamento.
Cambio di personale
I servizi idonei possono essere riassegnati a un altro lavoratore disponibile.
Il modulo:
- Mostra solo i lavoratori idonei per la categoria di servizio e gratuiti per la finestra di servizio.
- Richiede una motivazione per il cambio.
- Interrompe un servizio in corso come incompleto prima di passare a un altro.
- Rilascia il lavoratore precedente quando appropriato.
- Registra una voce di audit contenente il lavoratore precedente, il nuovo lavoratore, la motivazione, lo stato del servizio e l’ora di commutazione.
- Conteggi dei servizi disattivati nei report di performance del personale.
Valutazioni e sondaggi dei clienti
I servizi completati possono ricevere una valutazione da 1 a 5.
Le valutazioni possono essere inserite:
- Da un operatore autorizzato dalla schermata delle operazioni di servizio.
- Dal cliente tramite un link di sondaggio pubblico univoco inviato via SMS.
Ogni link di sondaggio appartiene a un servizio completato e può essere utilizzato solo finché tale servizio rimane idoneo per la valutazione. Una volta inviato, la valutazione e il relativo timestamp vengono memorizzati nell’elemento dell’appuntamento.
Rendicontazione delle prestazioni del personale
La pagina **Prestazioni del personale** accetta un intervallo di date e riporta quanto segue per lavoratore e come totali:
- Servizi avviati.
- Servizi completati.
- I servizi si sono interrotti perché incompleti.
- Servizi disattivati.
- Numero di servizi valutati.
- Valutazione media.
- Tasso di completamento.
Per impostazione predefinita, il report copre l’inizio del mese corrente fino a oggi.
Notifiche SMS opzionali
La consegna degli SMS è un’integrazione flessibile con il modulo opzionale NsSMS. La mancata o fallita consegna degli SMS non blocca mai il flusso di lavoro di un appuntamento.
Quando NsSMS viene installato, abilitato e configurato con un provider, BellSera può inviare:
- Una conferma quando un appuntamento passa per la prima volta da pianificato a confermato.
- Un promemoria prima di un appuntamento confermato.
- Un link di sondaggio univoco quando un servizio viene completato.
Le opzioni di anticipo per i promemoria sono 1, 3, 6, 12 o 24 ore.
I modelli supportano questi tag:
#customer_name# #customer_phone# #appointment_reference# #starts_at# #ends_at# #service_name# #staff_name# #room_name# #store_name# #survey_url#
I messaggi di conferma, promemoria e sondaggi vengono inviati al massimo una volta per il relativo record.
Checklist di configurazione
Utilizza questo ordine quando configuri una nuova installazione:
- Abilita il modulo NsAppointments.
- Apri Impostazioni BellSera → Catalogo e seleziona le categorie di servizio e vendibili.
- Modifica ogni prodotto di servizio e configura la scheda Appuntamenti.
- Seleziona i ruoli di NexoPOS che devono creare il personale per gli appuntamenti.
- Modifica ciascuna categoria di servizio e assegna i ruoli che possono eseguirla.
- Rivedi i profili dei lavoratori generati in Disponibilità del personale.
- Crea stanze e abilita l’assegnazione delle stanze se l’attività utilizza stanze.
- Configura giorni lavorativi, orari, intervallo delle fasce, preavviso e finestra di prenotazione.
- Abilita Prenotazione e/o Walk-in nelle impostazioni del tipo di ordine di NexoPOS.
- Installa e configura facoltativamente NsSMS, quindi personalizza i modelli SMS per gli appuntamenti.
- Assicurati che lo scheduler di Laravel e il worker della coda siano in esecuzione se sono richiesti promemoria SMS o l’arresto automatico in stato di inattività.
Riferimento alle impostazioni
Catalogo
| Setting | Purpose |
|---|---|
| Sellable Product Categories | Regular products and appointment add-ons. |
| Service Categories | Product categories treated as bookable services. |
| Room Assignment | Requires room selection for appointment service lines at the POS. |
Personale
| Setting | Purpose |
|---|---|
| Staff Roles | Active users in these roles are provisioned as appointment workers. |
Prenotazione
| Setting | Default | Purpose |
|---|---|---|
| Public Booking | Enabled | Shows or disables the public booking storefront. |
| Business Days | Monday–Saturday | Days on which public slots may be generated. |
| Opening Time | 09:00 | First possible public slot. |
| Closing Time | 18:00 | End of the public booking day. |
| Slot Interval | 15 minutes | Step between generated slot start times. |
| Minimum Notice | 120 minutes | Earliest allowed public booking relative to now. |
| Maximum Booking Window | 30 days | Furthest date available for public booking. |
| Manual Payment Instructions | Empty | Instructions displayed when a deposit or full payment is due. |
| Service Idle Auto-Stop | 180 minutes | Stops overlong in-progress services; 0 disables it. |
SMS
| Setting | Purpose |
|---|---|
| Enable SMS | Master switch for appointment SMS messages. |
| Confirmation | Send and customize confirmation messages. |
| Reminder | Enable reminders, choose lead time, and customize the template. |
| Survey | Send a one-time rating link after service completion. |
Autorizzazioni
Le migrazioni del modulo assegnano tutte le autorizzazioni di BellSera ai ruoli Amministratore di NexoPOS e Amministratore del Negozio.
| Permission | Current use |
|---|---|
| ns.appointments.read | View the appointment list, calendar, and appointment details. |
| ns.appointments.create | Create appointments and use appointment POS context/validation. |
| ns.appointments.update | Edit appointments, status, attendance, service queues, timers, staff switches, and ratings. |
| ns.appointments.delete | Delete appointments. |
| ns.appointments.manage-staff | View and update appointment worker profiles. |
| ns.appointments.manage-rooms | Create, update, free, and delete rooms. |
| ns.appointments.manage-settings | Open and save BellSera and SMS settings. |
| ns.appointments.view-reports | View staff performance reports. |
| ns.appointments.cancel | Reserved appointment permission; current calendar status changes use ns.appointments.update. |
| ns.appointments.manage-services | Reserved appointment permission; service products and categories continue to use their normal NexoPOS CRUD access. |
Les routes du serveur appliquent ces autorisations ; la visibilité du menu n’est pas la limite de sécurité.
Automazione programmata
Il modulo contribuisce a due processi pianificati:
| Job | Schedule | Purpose |
|---|---|---|
| ns-appointments-reminder-sms | Every 15 minutes | Sends due reminders for confirmed appointments. |
| ns-appointments-idle-service-stop | Hourly | Stops in-progress services that exceed the configured idle threshold. |
Entrambi i lavori implementano il contratto dei job in coda di Laravel. I deployment di produzione che utilizzano queste funzionalità devono eseguire lo scheduler NexoPOS/Laravel e un worker di coda.
Dati demo
La schermata di ripristino di NexoPOS include una modalità Demo per Appuntamenti Spa. Effettua il provisioning di:
- Categorie di servizi e vendita al dettaglio orientati alla spa.
- Prodotti di servizi prenotabili con durate, buffer, prezzi e acconti.
- Ruoli del personale addetto agli appuntamenti.
- Clienti di prova.
- Camere con immagini e prezzi.
- Impostazioni degli appuntamenti adatte al campione di spa.
Avvertenza: questa opzione esegue un soft reset di NexoPOS prima di caricare la demo. Usala solo quando è intenzionale reimpostare i dati dell’applicazione.
Modello di dati principale
BellSera memorizza i dati del proprio dominio in queste tabelle:
| Table | Responsibility |
|---|---|
| nexopos_appointments | Appointment header, customer snapshot, schedule, status, attendance, payment summary, and linked order. |
| nexopos_appointment_items | Individual services, staff/room assignments, timing, queue state, ratings, and survey state. |
| nexopos_appointment_services | Per-product duration, buffers, activation, and payment/deposit settings. |
| nexopos_appointment_workers | Appointment worker profiles and operational availability. |
| nexopos_appointment_rooms | Rooms, prices, media, descriptions, and availability. |
| nexopos_appointment_category_roles | Roles eligible for each service category. |
| nexopos_appointment_category_workers | Materialized category-to-worker assignments. |
| nexopos_appointment_resources | Additional schedulable resources supported by the scheduling domain. |
| nexopos_appointment_staff_switches | Staff reassignment audit trail. |
Il modulo aggiunge anche campi di appuntamento agli ordini di NexoPOS e ai prodotti dell’ordine, così le assegnazioni POS restano valide dopo il salvataggio dell’ordine, la messa in attesa, la modifica e il ricaricamento.
HTTP espone
Pagine pubbliche
| Method | Path | Purpose |
|---|---|---|
| GET | /appointments | Public booking storefront. |
| GET | /appointments/survey/{token} | Public service-rating page. |
API pubblica
Tutti i percorsi API si trovano sotto /api/ns-appointments/public.
| Method | Path | Purpose |
|---|---|---|
| GET | /catalog | Booking settings, categories, services, rooms, and staff. |
| GET | /services/{product} | One public service. |
| GET | /availability | Available slots for the requested services. |
| POST | /checkout | Create the customer, order, appointment, and service items. |
| GET | /appointments/{reference} | Booking confirmation payload. |
| GET | /survey/{token} | Load a service survey. |
| POST | /survey/{token} | Submit a service rating. |
Le API del dashboard autenticato, POS, delle impostazioni e dei report sono definite in Routes/api.php e protette dalle autorizzazioni di BellSera.
Layout sorgente
| Path | Responsibility |
|---|---|
| Crud/ | Appointment, room, and worker dashboard CRUD resources. |
| Http/Controllers/ | Public, POS, calendar, settings, room, and report endpoints. |
| Http/Requests/ | Public and POS request validation. |
| Listeners/ | NexoPOS order synchronization, validation, product metadata persistence, and asset injection. |
| Migrations/ | Module tables, order extensions, and permissions. |
| Models/ | Appointment domain models. |
| Resources/Views/ | Public, dashboard, POS, settings, and survey Blade entry points. |
| Resources/ts/ | Vue/TypeScript applications and POS integration. |
| Services/ | Scheduling, availability, checkout, operations, SMS, reporting, and demo logic. |
| Tests/Frontend/ | PHPUnit feature coverage and the POS order-type JavaScript test. |
| Public/build/ | Compiled module assets loaded by NexoPOS. |
Il progetto/cartella standalone non fa parte delle voci delle risorse del modulo NexoPOS live. Il frontend del modulo attivo viene costruito da Resources/ts/ utilizzando il file root vite.config.js.
Sviluppo
Esegui un test di modulo mirato:
php artisan test --compact modules/NsAppointments/Tests/Frontend/PublicBookingFlowTest.php
Altri test di funzionalità nei moduli/NsAppointments/Tests/Frontend coprono:
- Prenotazioni pubbliche e controlli di disponibilità in tempo reale.
- Creazione dell’ordine POS e campi di appuntamento ordine-prodotto persistiti.
- Comportamento del calendario e presenze.
- Assegnazione di stanze e categoria/personale.
- Code di attesa del servizio, timer, cambio del personale, valutazioni e report.
- Impostazioni SMS, promemoria e sondaggi.
- Autorizzazioni e definizioni demo.
Crea il frontend del modulo:
npm run build -- --config modules/NsAppointments/vite.config.js
I punti di ingresso di Vite sono:
- Risorse/ts/pos.ts
- Risorse/ts/booking.ts
- Risorse/ts/calendar.ts
- Risorse/ts/staff-performance.ts
- Risorse/ts/impostazioni.ts
- Risorse/ts/survey.ts
Gli asset compilati vengono scritti in Public/build e caricati tramite le direttive degli asset del modulo NexoPOS.