# Dance Odoo Dance ERP built on Odoo 17. ## Current Scope The first implemented modules are `dance_student` and `dance_batch`. Students extend `res.partner` instead of using a separate student table, so they remain compatible with Odoo contacts, invoices, messages, activities, and future accounting flows. ## Run Locally ```powershell docker compose up -d ``` Odoo runs at: ```text http://localhost:11000 ``` The configured database is: ```text Odoo_dance ``` ## Student Module Installed addon: ```text addons/dance_student ``` It adds: - `is_student` - `student_code` - `guardian_id` - `guardian_ids` - `guardian_phone` - `date_of_birth` - `age` - `gender` - `dance_style` - `level` - `student_status` - `join_date` - `medical_notes` Students are available from: ```text Dance ERP > Students ``` ## Batch Module Installed addon: ```text addons/dance_batch ``` It adds: - `dance.batch` - `dance.enrollment` The relationship is: ```text Student -> Enrollment -> Batch ``` This allows one student to join multiple batches and one batch to contain many students. The module also tracks instructor, room, dates, timing, capacity, current strength, and enrollment status. Batches are available from: ```text Dance ERP > Batches ``` Enrollments are available from: ```text Dance ERP > Enrollments ``` ## Session And Attendance Module Installed addon: ```text addons/dance_attendance ``` It adds: - `dance.session` - `dance.attendance` The relationship is: ```text Batch -> Session -> Attendance -> Student ``` Sessions are available from: ```text Dance ERP > Sessions ``` Attendance records are available from: ```text Dance ERP > Attendance ``` Daily flow: ```text Open today's session Load Students Mark Present / Absent / Late Complete session ``` ## Fees Module Installed addon: ```text addons/dance_fees ``` It adds: - `dance.fee.structure` - Fee links on batches - Manual invoice generation from enrollments and batches - Dance metadata on Odoo invoices The relationship is: ```text Student -> Enrollment -> Batch -> Fee Structure -> Invoice -> Payment ``` Main places: ```text Dance ERP > Fee Structures Dance ERP > Batches Dance ERP > Enrollments Accounting > Customers > Invoices ``` Manual billing flow: ```text Set a fee structure on the batch Open an active enrollment Click Create Invoice Register payment in Odoo ``` ## Useful Scripts Update the student module: ```powershell .\scripts\update_module.ps1 dance_student ``` Update the batch module: ```powershell .\scripts\update_module.ps1 dance_batch ``` Update the attendance module: ```powershell .\scripts\update_module.ps1 dance_attendance ``` Update the fees module: ```powershell .\scripts\update_module.ps1 dance_fees ``` Create a database backup: ```powershell .\scripts\backup_db.ps1 ``` Restore a database backup: ```powershell .\scripts\restore_db.ps1 -BackupFile .\backups\Odoo_dance_YYYYMMDD_HHMMSS.sql ``` ## Nginx `nginx/odoo.conf` contains a reverse proxy configuration for Odoo. It is not enabled as a Docker service yet, so the current local port setup stays simple and unchanged.