Booking & Scheduling
booking
Customised & developedPaid
The scheduling engine underneath everything else — calendars, availability, rooms and the rules that decide which slots a client is actually allowed to see.
- An availability engine that resolves weekly hours, dated exceptions and existing bookings into free slots
- Schedulers, hosts, locations and rooms, with capacity and clash detection
- Slot rules, waitlists and automatic slot offers when a booking is freed
- Intake questions asked at the point of booking, with the answers kept on the booking
- Reminders by email and SMS, with per-person suppression lists
- Calendar publishing as ICS, and links into external calendar systems
- Attendance records, a booking funnel and analytics behind the per-expert figures
- Rate limiting on public booking routes, and an erasure path for booking data
Paid Meeting Booking
sale_meeting
Customised & developedPaid
Sells one-to-one sessions as credits. This is the module that makes buying and booking two separate steps, which is what allows a package to be sold today and scheduled over months.
- Sessions sold as credits against a product, singly or as a package
- Package service agreements accepted at purchase and kept at the version accepted
- Tiered cancellation policies with notice windows, penalties and a grace period
- Reschedule and cancellation flows that return the credit where the policy says so
- The expert buckets — bought, booked, held, not booked — and per-expert progress
- Portal booking links, and website cart gates that stop an unbookable purchase
- A pay resolver seam: the session freezes its own split at booking without knowing what a contract is
- Post-session feedback, and the no-show trail that reliability reporting needs
Clinic Platform
clinic_platform
Customised & developedPaid
The application layer: professionals and their public profiles, the mobile API, content and community, notifications, and the client-facing account.
- Expert profiles with a verification workflow, credentials, services and calendars
- Reviews, ratings, public questions and the expert dashboard behind them
- REST endpoints for the mobile app, JWT authentication, and WebSocket sessions
- Realtime chat — client to professional, partner chats and group channels — bridged onto sessions
- Content and publishing: publisher profiles, a ranked feed and discovery
- Invoices, payment methods and the order-to-session bridge
- Notifications across push, email and in-app, with a fan-out for session alarms
- Age and identity verification, support tickets, consultation requests and device registration
Odoo appsOnDelights Platform
Clinic Reports
clinic_reports
Customised & developedPaid
The seventeen management reports. Twelve ask whether the clinic’s record matches what happened; four compare how professionals are doing; one sits above them all.
- Alignment lists: stuck sessions, unbooked credits, coverage vs demand, money chain, fee ledger
- Payout readiness, cancellation conduct, compliance file, client continuity and the moderation queue
- Sessions without a report, and cancelled sessions read alongside conduct
- Performance: the expert scorecard, the league table, reliability and client outcomes
- One scope control — whole business, selected people, one person — with a comparison period
- Saved views and CSV export on every report
- A report never writes: uninstalling removes the reports and changes no operational behaviour
Session Reports
session_reports
Customised & developedPaid
The clinical note a professional files after a held session — stored as a secure document about the client rather than as an attachment on a meeting.
- A report filed against the session and recorded as being about the client
- Encrypted at rest on the secure document service, with a key per version
- Access decided only by the care team resolution, never by a role or by seniority
- Corrections filed as new versions; the previous version stays exactly as it was
- Every read logged, so chasing a missing report never means reading one
Memberships
clinic_membership
Customised & developedPaid
A standing arrangement rather than a purchase each time: a plan sold in the shop, and one client’s membership against it.
- Plans are shop products with an image and a description; the public catalogue is at /memberships
- A membership carries session credits, chat access and offline consultation minutes
- Credits stay ordinary session credits, so booking never learns a second rulebook
- Periods with renewal and rollover, and what rolls over decided by the plan
- An expert sees which of their clients are members, and on what
Metered Chat Consultations
ondelights_chat_metering
Customised & developedPaid
Expert time bought as minutes rather than as an appointment, spent in chat and accounted for to the minute.
- A service can sell a budget of expert minutes, with an optional validity window
- Rate card on the company, overridable per service
- A ledger entry per charge, and a statement both the client and the expert can open
- The budget is checked where the message is sent, not where somebody remembers to check it
Intake Forms
ondelights_intake_form
Customised & developedPaid
The questionnaire a client fills before the first session, stored as clinical content rather than as survey answers.
- A service names the questionnaire that goes with it
- The client fills it before the session, from their own pages
- Answers are written straight to an encrypted document — never left in the survey’s own storage
- The clinician opens it from the session, under the ordinary document access rules
Offline Payment Review
sale_meeting_offline_payment
Customised & developedPaid
Bank transfer as a payment route, for clinics that want a person to look at every order before and after the money moves.
- Approve the order, invoice it, take the proof of transfer, approve the proof, then mint the credits
- Credits appear only once the proof is approved, so an unpaid order cannot book a session
- A rejection carries its reason, and the order goes back to the person who can fix it
- Every step is a state on the order rather than a note somebody left
Offline Payment — client pages
sale_meeting_offline_payment_portal
Customised & developedPaid
The client-facing half of the offline route: where they pay, what they upload, and what the order is waiting for.
- Each state has its own colour and mark on My orders, so waiting is visibly different from rejected
- Pay and upload the proof in one dialog, without leaving the order
- The rejection reason is shown where the person who has to act on it will read it
- A dashboard card for orders that need something from the client
Accountant Dashboard
ondelights_finance_reports
Customised & developedPaid
The books, on a dashboard of their own: what came in, what is owed, what delivery cost and what is still to come. Separate from the administrator's by design — chasing an unpaid invoice on the floor is one job, and keeping the ledger is another.
- A landing page of four money tiles, six health ratios, six charts and a flag list
- Twenty-one reports: cash, revenue, delivery cost, forecast, leakage and two control checklists
- Accrual or cash, five periods and a custom range, carried through every drill-down
- Narrow any report by service, expert or client; a graph view and CSV on every page
- Nothing netted, no rate without a denominator, forecast layers never summed
- A month-end close checklist where all ticks is the good close
- Reads the ledger and never clinical content — a separate grant, on an internal account
Team Dashboards
ondelights_team_dashboards
Customised & developedPaid
What needs doing, for the four teams around the clinic. Sales, people, marketing and delivery each get a page, and every page opens with the same question: what is late, what is now, what is coming, and what has nobody promised to act on.
- Four dashboards, each a record rather than code, so a pack can add one
- The activity strip on every page: late · today · planned · nothing scheduled · needs attention
- **Nothing scheduled** is the band Odoo has no state for — an open record nobody has promised to do anything about, which appears on no other screen
- The attention rule is printed under its own count, because a threshold the reader cannot see is one they stop trusting
- Twenty-six reports, each carrying the code of the specification row it implements
- A figure whose model is not installed reports *not applicable*, never zero
- Lists that should be empty, with a nightly alert that ships switched off
- Every rate prints its denominator, and an em dash under five records
- Today's presence and absence — still checked in, checked in today, on leave today
- Depends on base, mail and web and nothing else: it reports on CRM, HR, mailing, project and contract data without requiring any of it
Dashboards — CRM, Sales, Delivery, People
ondelights_dashboard_spreadsheets
Customised & developedPaid
How we are doing, in the app managers already open. Four pages in Odoo's own Dashboards, in a Clinic Teams section of their own, built the way its Sales and Expenses pages are built.
- Four pages — CRM, Sales, Delivery, People — beside Odoo's own
- Four KPI tiles a page, each with the previous period beside it
- Two charts and two to four top-N tables a page, every one opening the records behind it
- A figure that is a state of the world takes no period and shows no comparison — headcount filtered to the last ninety days is not headcount
- A chart grouped by a date takes the period; one grouped by a stage does not
- The workbooks are generated and their cross-references validated before anything is written
- Each page is visible to the Odoo group that owns its data, so nothing extra is granted
Dashboards — Attendance, Time off, Staff payments
ondelights_dashboard_hr
Customised & developedPaid
Three more pages in the same section, kept apart because each one needs an app the clinic may not run.
- Attendance: currently checked in, records, hours worked, extra hours, by employee and by department
- Time off: requests awaiting an answer, days approved, refusals, and where leave falls by month, type and department
- Staff payments: to report, to validate, to reimburse, and what was claimed in the period
- Separate from the other dashboards because each forces an app — attendance, time off, expenses
- Attendance counts records, not people: a lunch break makes one person two rows, and the page says so
- Currently checked in is a presence figure during the working day and a list of people who forgot to check out after it
Support Tickets
support
Customised & developedPaid
A public form that turns a question into a task somebody owns.
- A form at /support/ticket that anyone can use, signed in or not
- Each submission opens a task, assigned to the store administrator
- The submitter follows their own ticket, and the administrator is notified in Discuss