Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ADD] sports_coach: Adding the module #229

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions sports_coach/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
'name': 'Sports coach',
'version': '1.0',
'category': 'Health & Fitness',
'description': "",
'depends': [
'appointment_account_payment',
'appointment_crm',
'appointment_hr',
'base_vat',
'calendar',
'knowledge',
'sale_crm',
'sale_timesheet',
'sale_project',
],
'data': [
'data/ir_attachment_pre.xml',
'data/project_task_type.xml',
'data/project_project.xml',
'data/product_product.xml',
'data/appointment_type.xml',
'data/crm_stage.xml',
'data/knowledge_cover.xml',
'data/knowledge_article.xml',
'data/knowledge_article_favorite.xml',
'data/mail_message.xml',
'data/knowledge_tour.xml',
],
'demo': [
'demo/res_partner.xml',
'demo/account_analytic_account.xml',
'demo/crm_lead.xml',
'demo/hr_employee.xml',
'demo/calendar_event.xml',
'demo/project_tags.xml',
'demo/project_project.xml',
'demo/sale_order.xml',
'demo/sale_order_line.xml',
'demo/project_task.xml',
'demo/account_analytic_line.xml',
'demo/sale_order_confirm.xml',
],
'license': 'OPL-1',
'assets': {
'web.assets_backend': [
'sports_coach/static/src/js/my_tour.js',
]
},
'author': 'Odoo S.A.',
"cloc_exclude": [
"data/knowledge_article.xml",
"static/src/js/my_tour.js",
],
}
73 changes: 73 additions & 0 deletions sports_coach/data/appointment_type.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="appointment_type_1" model="appointment.type">
<field name="name">60-min Personal Training Session</field>
<field name="staff_user_ids" eval="[(4, ref('base.user_admin'))]"/>
<field name="appointment_tz" model="res.users" eval="obj().env.ref('base.user_admin').tz or 'Europe/Brussels'"/>
<field name="category">recurring</field>
<field name="avatars_display">hide</field>
<field name="booked_mail_template_id" ref="appointment.attendee_invitation_mail_template"/>
<field name="canceled_mail_template_id" ref="appointment.appointment_canceled_mail_template"/>
<field name="reminder_ids" eval="[(6, 0, [ref('calendar.alarm_notif_1'), ref('calendar.alarm_mail_1'), ref('appointment_sms.calendar_alarm_data_1h_sms')])]"/>
<field name="slot_ids" eval="[
(0, 0, {'weekday': '1', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '1', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '2', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '2', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '3', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '3', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '4', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '4', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '5', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '5', 'start_hour': 14.0, 'end_hour': 17.0}),
]"/>
</record>
<record id="appointment_type_2" model="appointment.type">
<field name="name">30-min Fitness Assessment</field>
<field name="staff_user_ids" eval="[(4, ref('base.user_admin'))]"/>
<field name="appointment_tz" model="res.users" eval="obj().env.ref('base.user_admin').tz or 'Europe/Brussels'"/>
<field name="appointment_duration">0.5</field>
<field name="category">recurring</field>
<field name="avatars_display">hide</field>
<field name="booked_mail_template_id" ref="appointment.attendee_invitation_mail_template"/>
<field name="has_payment_step" eval="True"/>
<field name="product_id" ref="product_product_11"/>
<field name="canceled_mail_template_id" ref="appointment.appointment_canceled_mail_template"/>
<field name="reminder_ids" eval="[(6, 0, [ref('calendar.alarm_notif_1'), ref('calendar.alarm_mail_1'), ref('appointment_sms.calendar_alarm_data_1h_sms')])]"/>
<field name="slot_ids" eval="[
(0, 0, {'weekday': '1', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '1', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '2', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '2', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '3', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '3', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '4', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '4', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '5', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '5', 'start_hour': 14.0, 'end_hour': 17.0}),
]"/>
</record>
<record id="appointment_type_3" model="appointment.type">
<field name="name">90-min Sport-Specific Coaching</field>
<field name="staff_user_ids" eval="[(4, ref('base.user_admin'))]"/>
<field name="appointment_tz" model="res.users" eval="obj().env.ref('base.user_admin').tz or 'Europe/Brussels'"/>
<field name="appointment_duration">1.5</field>
<field name="category">recurring</field>
<field name="avatars_display">hide</field>
<field name="booked_mail_template_id" ref="appointment.attendee_invitation_mail_template"/>
<field name="canceled_mail_template_id" ref="appointment.appointment_canceled_mail_template"/>
<field name="reminder_ids" eval="[(6, 0, [ref('calendar.alarm_notif_1'), ref('calendar.alarm_mail_1'), ref('appointment_sms.calendar_alarm_data_1h_sms')])]"/>
<field name="slot_ids" eval="[
(0, 0, {'weekday': '1', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '1', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '2', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '2', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '3', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '3', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '4', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '4', 'start_hour': 14.0, 'end_hour': 17.0}),
(0, 0, {'weekday': '5', 'start_hour': 9.0, 'end_hour': 12.0}),
(0, 0, {'weekday': '5', 'start_hour': 14.0, 'end_hour': 17.0}),
]"/>
</record>
</odoo>
24 changes: 24 additions & 0 deletions sports_coach/data/crm_stage.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="crm.stage_lead1" model="crm.stage">
<field name="name">Initial Contact</field>
<field name="sequence">1</field>
</record>
<record id="crm.stage_lead2" model="crm.stage">
<field name="sequence">2</field>
<field name="name">Assessment</field>
</record>
<record id="crm.stage_lead3" model="crm.stage">
<field name="name">Proposal</field>
<field name="sequence">3</field>
</record>
<record id="crm.stage_lead4" model="crm.stage">
<field name="name">Won</field>
<field name="sequence">5</field>
<field name="is_won" eval="True"/>
</record>
<record id="crm_stage_5" model="crm.stage">
<field name="name">Negotiation</field>
<field name="sequence">4</field>
</record>
</odoo>
8 changes: 8 additions & 0 deletions sports_coach/data/ir_attachment_pre.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="ir_attachment_624" model="ir.attachment">
<field name="name">624-unsplash_hC7FL8_x12A_.jpg</field>
<field name="datas" type="base64" file="sports_coach/static/src/binary/ir_attachment/624-unsplash_hC7FL8_x12A_.jpg"/>
<field name="url">/unsplash/hC7FL8_x12A/.jpg</field>
</record>
</odoo>
137 changes: 137 additions & 0 deletions sports_coach/data/knowledge_article.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo>
<template id="welcome_article_body">
<p>
<span class="display-4-fs"><strong>Odoo for Sports Coach</strong></span>
</p>
<p class="null">Welcome to your new Odoo Sports Coach package! This guide will help you navigate the key features and get your coaching business up and running efficiently.</p>
<div data-oe-protected="true" class="o_knowledge_behavior_anchor o_knowledge_behavior_type_toc" tabindex="-1">
<div class="o_knowledge_toc_content">
<a href="#" data-oe-nodeid="0" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Basics</a>
<a href="#" data-oe-nodeid="1" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Appointment Scheduling 📆</a>
<a href="#" data-oe-nodeid="2" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Client Management (CRM) 🎯</a>
<a href="#" data-oe-nodeid="3" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Manage your services 👟</a>
<a href="#" data-oe-nodeid="4" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Project Tracking 📈</a>
<a href="#" data-oe-nodeid="5" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Invoicing 🧾</a>
<a href="#" data-oe-nodeid="6" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Getting Started</a>
<a href="#" data-oe-nodeid="7" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Tips for Success</a>
<a href="#" data-oe-nodeid="8" class="o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Do you want to go further? </a>
</div>
</div>
<p class="null"><br /></p>
<h1>Basics</h1>
<hr />
<h3 class="null">Appointment Scheduling 📆</h3>
<p class="null">Use the Appointment app to allow clients to book sessions easily:</p>
<ul class="null">
<li class="null">Set up appointment types (e.g., "60-min Personal Training", "30-min Assessment")</li>
<li class="null">Define your availability</li>
<li class="null">Let clients book directly through your booking page</li>
</ul>
<p class="null"><a class="btn btn-outline-primary btn-sm" href="https://www.odoo.com/app/appointments">🎓 Appointment</a></p>
<p class="null"><br /></p>
<h3 class="null">Client Management (CRM) 🎯</h3>
<p class="null">Track potential and current clients:</p>
<ul class="null">
<li class="null">Manage leads and opportunities</li>
<li class="null">Follow up on inquiries</li>
<li class="null">Convert leads into clients</li>
</ul>
<p class="null"><a class="btn btn-outline-primary btn-sm" href="https://www.odoo.com/documentation/latest/applications/sales/crm.html">🎓 CRM</a></p>
<p class="null"><br /></p>
<h3 class="null">Manage your services 👟</h3>
<p class="null">Create and manage your coaching services:</p>
<ul class="null">
<li class="null">Set up services like "10-Session Personal Training Package" or "3-Month Transformation Program"</li>
<li class="null">Define pricing and project tracking needs for each service</li>
</ul>
<p><a href="https://www.odoo.com/documentation/latest/applications/sales/sales.html" class="btn btn-outline-primary btn-sm">🎓 Sales</a></p>
<div class="o_editor_banner o_not_editable lh-1 d-flex align-items-center alert alert-info pb-0 pt-3" data-oe-protected="true">
<i class="o_editor_banner_icon mb-3 fst-normal">🚀</i>
<div class="w-100 px-3" data-oe-protected="false">
<p>If you want to push your quotation building much further and add all the power of Spreadsheet beneath any line of your Sales Orders, use the quote calculation feature.</p>
</div>
</div>
<h3 class="null"><br /></h3>
<h3 class="null">Project Tracking 📈</h3>
<p class="null">Use the Project app to manage longer-term client programs:</p>
<ul class="null">
<li class="null">Create tasks for each stage of a client's journey</li>
<li class="null">Track progress and set milestones</li>
<li class="null">Collaborate with clients on their goals</li>
</ul>
<p><a href="https://www.odoo.com/documentation/latest/applications/services/project.html" class="btn btn-outline-primary btn-sm">🎓 Project</a></p>
<p><br /></p>
<h3 class="null">Invoicing 🧾</h3>
<p class="null">Easily bill clients for your services:</p>
<ul class="null">
<li class="null">Generate invoices automatically from sales orders</li>
<li class="null">Track payments and send reminders</li>
</ul>
<p><a href="https://www.odoo.com/documentation/latest/applications/finance/accounting/customer_invoices.html" class="btn btn-outline-primary btn-sm">🎓 Invoicing</a></p>
<p><br /></p>
<div class="o_editor_banner o_not_editable lh-1 d-flex align-items-center alert alert-success pb-0 pt-3" data-oe-protected="true">
<i class="o_editor_banner_icon mb-3 fst-normal">✅</i>
<div class="w-100 px-3" data-oe-protected="false">
<h2 class="null">Getting Started</h2>
<ol>
<li><strong>Set Up Your Services</strong>: Navigate to Sales > Products and set up your coaching services.</li>
<li><strong>Configure Appointment Types</strong>: In the Appointment app, create types that match your services.</li>
<li><strong>Manage Your Calendar</strong>: Use the Calendar app to block off your availability and personal time.</li>
<li><strong>Create Client Profiles</strong>: As you get inquiries, add them to your CRM and Contacts.</li>
<li><strong>Start Tracking Projects</strong>: For services that require ongoing management, create a project in the Project app.</li>
<li><strong>Invoice Your Clients</strong>: Use the Invoicing app to bill clients for completed services.</li>
</ol>
<p>Struggling with your setup? Reach us to get a demo!</p>
<p><a href="https://www.odoo.com/contactus" class="btn btn-secondary">Reach us</a></p>
</div>
</div>
<h2 class="null"><br /></h2>
<div class="o_editor_banner o_not_editable lh-1 d-flex align-items-center alert alert-info pb-0 pt-3" data-oe-protected="true">
<i class="o_editor_banner_icon mb-3 fst-normal">💡</i>
<div class="w-100 px-3" data-oe-protected="false">
<h2 class="null">Tips for Success</h2>
<ul class="null">
<li class="null">Regularly update your CRM to keep track of potential clients and follow-ups.</li>
<li class="null">Use the project templates for standardized programs to save time.</li>
<li class="null">Encourage clients to book through your Appointment page to reduce scheduling back-and-forth.</li>
<li class="null">Utilize the invoicing reminders to ensure timely payments.</li>
</ul>
<p class="null">Remember, Odoo is flexible and can adapt to your specific needs. Don't hesitate to explore and customize as your coaching business grows!</p>
</div>
</div>
<p><br /></p>
<h1>Do you want to go further?</h1>
<hr />
<p class="null">Odoo offers you infinite possibilities, such as:</p>
<ul class="null">
<li class="null">Create a stunning <strong>Website</strong> to showcase your coaching services and allow clients to book sessions online.</li>
<li class="null">Develop and sell online fitness courses with the <strong>eLearning</strong> platform, expanding your reach beyond in-person training.</li>
<li class="null">Gather valuable client feedback and track progress effortlessly using <strong>Surveys</strong>.</li>
<li class="null">Organize group classes, workshops, and fitness events easily with the <strong>Events</strong> app.</li>
<li class="null">Manage your team of coaches and staff efficiently with <strong>Employees</strong>.</li>
<li class="null">Track fitness equipment and sell merchandise through your integrated <strong>eCommerce</strong> store.</li>
<li class="null">Engage clients with targeted campaigns using <strong>Email Marketing</strong> and <strong>Social Marketing</strong>.</li>
</ul>
<p class="null">These all go free in your current subscription; feel free to explore! 🙃</p>
<p class="null"><br /></p>
<div class="o_editor_banner o_not_editable lh-1 d-flex align-items-center alert alert-info pb-0 pt-3" data-oe-protected="true">
<i class="o_editor_banner_icon mb-3 fst-normal">🚀</i>
<div class="w-100 px-3" data-oe-protected="false">
<p>Would you like to discuss your Odoo setup with us or go even further?</p>
<p><a class="btn btn-secondary" href="https://www.odoo.com/contactus">Reach us</a></p>
</div>
</div>
<p><br /></p>
</template>
<record id="welcome_article" model="knowledge.article">
<field name="name">Odoo for Sports Coach</field>
<field name="icon">🤸</field>
<field name="cover_image_id" ref="knowledge_cover_9"/>
<field name="internal_permission">write</field>
<field name="category">workspace</field>
<field name="last_edition_uid" ref="base.user_admin"/>
<field name="is_article_visible_by_everyone" eval="True"/>
<field name="body"><![CDATA[]]></field>
</record>
</odoo>
7 changes: 7 additions & 0 deletions sports_coach/data/knowledge_article_favorite.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="knowledge_favorite" model="knowledge.article.favorite">
<field name="article_id" ref="welcome_article"/>
<field name="user_id" ref="base.user_admin"/>
</record>
</odoo>
6 changes: 6 additions & 0 deletions sports_coach/data/knowledge_cover.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="knowledge_cover_9" model="knowledge.cover">
<field name="attachment_id" ref="ir_attachment_624"/>
</record>
</odoo>
8 changes: 8 additions & 0 deletions sports_coach/data/knowledge_tour.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="knowledge_tour" model="web_tour.tour">
<field name="name">knowledge_tour</field>
<field name="sequence">2</field>
<field name="rainbow_man_message">Welcome! Happy exploring.</field>
</record>
</odoo>
15 changes: 15 additions & 0 deletions sports_coach/data/mail_message.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version='1.0' encoding='UTF-8'?>
<odoo noupdate="1">
<record id="notification_knowledge" model="mail.message">
<field name="model">discuss.channel</field>
<field name="res_id" ref="mail.channel_all_employees"/>
<field name="message_type">email</field>
<field name="author_id" ref="base.partner_root"/>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="subject">🚀 Get started with Odoo Sports Coach</field>
<field name="body" model="knowledge.article" eval="
'&lt;span>&#x1F44B; Hi! Follow this &lt;a href=\''
+ obj().env.ref('sports_coach.welcome_article').article_url
+ '\'>onboarding guide&lt;/a>. You can find it anytime in the Knowledge app.&lt;/span>'"/>
</record>
</odoo>
Loading