School Canteen & After-School Management for Odoo Online — SaaS version with no Python code: municipal after-school software: flat-rate or occasional enrollment, attendance by service, billing of meals not cancelled, surcharge for children present but not enrolled, monthly billing per family based on the family quotient.
Overview
After-school care — DYONYSOS
App for the municipal department that runs the school canteen, morning and after-school care, and extracurricular activity time (TAP), on Odoo 19 Community.
Also searched as: town hall after-school software, school canteen management, after-school care check-in, income-based canteen invoicing, municipal after-school revenue office.
What this module does, and what it does not do. DYONYSOS already sells two apps related to children: dyo_centre_aere for leisure centers and holiday camps, and dyo_ecoles for pupils, classes and school absences. This module does not duplicate them: it knows nothing about a leisure center's supervision ratio, nor about a pupil's class or report card. Its subject is the daily school-time schedule — canteen, before- and after-school care, TAP (extracurricular activity periods) — which neither of them covers.
An enrollment is either a package or an occasional day, and the two coexist. A family enrolls their child in the cafeteria “every Monday and Thursday” as a recurring weekly package, and adds a one-off Wednesday for a rescheduled school trip. Both enrollments live side by side for the same child and the same service.
A meal not canceled is still billed. This is the rule in every municipality: beyond a configurable notice period (48 hours by default), an unannounced absence is still billed because the meal was ordered. Within the notice period, the absence is excused and not billed. The module distinguishes the two and explains it in the message, with the dates.
Attending without registration costs more. A child attending without registration is billed at the standard rate plus a configurable surcharge: this is what encourages families to register their children rather than turning up unannounced.
Attendance is recorded service by service, not by day. A child can eat at the school canteen without going to evening childcare: each service has its own attendance record, its own absence rule and its own rate.
Invoicing is monthly and per family, never per child: a family with three enrolled children receives a single invoice, which groups all of the month's billable attendance records, for all children.
The family quotient comes from the CAF and expires. It is entered on the family with its validity date, reuses the pricing grid shared by all DYONYSOS public services (dyo_public_common), and an invoice is not generated on an expired quotient without the municipality being warned — the message says to obtain the up-to-date certificate.
What the module does not do
No management of classes, grades or school absences: that is dyo_ecoles. No holiday day camp, residential trips or staffing ratios: that is dyo_centre_aere. No biometric or badge clocking: attendance is entered in Odoo, not on a kiosk. No online portal for families to register or cancel themselves: cancellations are entered by staff, with the date the family gave notice. No issuing of the official invoice or collection of payment: the amount is calculated, and its collection is handled by the municipality's revenue office (régie de recettes).
Two roles
After-school agent: registrations, daily check-in per service, entry of families and children. Manager: family quotients, rate grids, generation and validation of monthly invoices.
Specifications
| Price | €289 excl. VAT |
|---|---|
| License | OPL-1 |
| Odoo series | 19.0: published on the Odoo Apps Store; 20.0: published on the Odoo Apps Store |
| Version | 1.0.0 |
| Edition | Odoo Online (SaaS) and Odoo.sh |
| Technical name | dyo_public_periscolaire_online |
| Domain | Municipalities and public sector |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.