Browse Source

Nov 22 : [ADD] Initial Commit 'gym_mgmt_system'

pull/295/head
AjmalCybro 1 year ago
parent
commit
12ceaab980
  1. 45
      gym_mgmt_system/README.rst
  2. 23
      gym_mgmt_system/__init__.py
  3. 64
      gym_mgmt_system/__manifest__.py
  4. 10
      gym_mgmt_system/data/ir_sequence_data.xml
  5. 6
      gym_mgmt_system/doc/RELEASE_NOTES.md
  6. 35
      gym_mgmt_system/models/__init__.py
  7. 34
      gym_mgmt_system/models/exercise_for.py
  8. 71
      gym_mgmt_system/models/gym_exercise.py
  9. 81
      gym_mgmt_system/models/gym_membership.py
  10. 31
      gym_mgmt_system/models/gym_report.py
  11. 34
      gym_mgmt_system/models/hr_employee.py
  12. 97
      gym_mgmt_system/models/measurement_history.py
  13. 40
      gym_mgmt_system/models/my_workout_plan.py
  14. 31
      gym_mgmt_system/models/product_template.py
  15. 62
      gym_mgmt_system/models/res_partner.py
  16. 43
      gym_mgmt_system/models/sale_order.py
  17. 35
      gym_mgmt_system/models/trainer_skill.py
  18. 31
      gym_mgmt_system/models/workout_days.py
  19. 58
      gym_mgmt_system/models/workout_plan.py
  20. 49
      gym_mgmt_system/models/workout_plan_option.py
  21. 22
      gym_mgmt_system/security/gym_mgmt_system_groups.xml
  22. 44
      gym_mgmt_system/security/gym_mgmt_system_security.xml
  23. 49
      gym_mgmt_system/security/ir.model.access.csv
  24. BIN
      gym_mgmt_system/static/description/assets/icons/check.png
  25. BIN
      gym_mgmt_system/static/description/assets/icons/chevron.png
  26. BIN
      gym_mgmt_system/static/description/assets/icons/cogs.png
  27. BIN
      gym_mgmt_system/static/description/assets/icons/consultation.png
  28. BIN
      gym_mgmt_system/static/description/assets/icons/ecom-black.png
  29. BIN
      gym_mgmt_system/static/description/assets/icons/education-black.png
  30. BIN
      gym_mgmt_system/static/description/assets/icons/hotel-black.png
  31. BIN
      gym_mgmt_system/static/description/assets/icons/license.png
  32. BIN
      gym_mgmt_system/static/description/assets/icons/lifebuoy.png
  33. BIN
      gym_mgmt_system/static/description/assets/icons/logo.png
  34. BIN
      gym_mgmt_system/static/description/assets/icons/manufacturing-black.png
  35. BIN
      gym_mgmt_system/static/description/assets/icons/pos-black.png
  36. BIN
      gym_mgmt_system/static/description/assets/icons/puzzle.png
  37. BIN
      gym_mgmt_system/static/description/assets/icons/restaurant-black.png
  38. BIN
      gym_mgmt_system/static/description/assets/icons/service-black.png
  39. BIN
      gym_mgmt_system/static/description/assets/icons/trading-black.png
  40. BIN
      gym_mgmt_system/static/description/assets/icons/training.png
  41. BIN
      gym_mgmt_system/static/description/assets/icons/update.png
  42. BIN
      gym_mgmt_system/static/description/assets/icons/user.png
  43. BIN
      gym_mgmt_system/static/description/assets/icons/wrench.png
  44. BIN
      gym_mgmt_system/static/description/assets/misc/categories.png
  45. BIN
      gym_mgmt_system/static/description/assets/misc/check-box.png
  46. BIN
      gym_mgmt_system/static/description/assets/misc/compass.png
  47. BIN
      gym_mgmt_system/static/description/assets/misc/corporate.png
  48. BIN
      gym_mgmt_system/static/description/assets/misc/customer-support.png
  49. BIN
      gym_mgmt_system/static/description/assets/misc/cybrosys-logo.png
  50. BIN
      gym_mgmt_system/static/description/assets/misc/features.png
  51. BIN
      gym_mgmt_system/static/description/assets/misc/logo.png
  52. BIN
      gym_mgmt_system/static/description/assets/misc/pictures.png
  53. BIN
      gym_mgmt_system/static/description/assets/misc/pie-chart.png
  54. BIN
      gym_mgmt_system/static/description/assets/misc/right-arrow.png
  55. BIN
      gym_mgmt_system/static/description/assets/misc/star.png
  56. BIN
      gym_mgmt_system/static/description/assets/misc/support.png
  57. BIN
      gym_mgmt_system/static/description/assets/misc/whatsapp.png
  58. BIN
      gym_mgmt_system/static/description/assets/modules/1.png
  59. BIN
      gym_mgmt_system/static/description/assets/modules/2.png
  60. BIN
      gym_mgmt_system/static/description/assets/modules/3.png
  61. BIN
      gym_mgmt_system/static/description/assets/modules/4.png
  62. BIN
      gym_mgmt_system/static/description/assets/modules/5.gif
  63. BIN
      gym_mgmt_system/static/description/assets/modules/5.png
  64. BIN
      gym_mgmt_system/static/description/assets/modules/6.png
  65. BIN
      gym_mgmt_system/static/description/assets/modules/budget_image.png
  66. BIN
      gym_mgmt_system/static/description/assets/modules/credit_image.png
  67. BIN
      gym_mgmt_system/static/description/assets/modules/employee_image.png
  68. BIN
      gym_mgmt_system/static/description/assets/modules/export_image.png
  69. BIN
      gym_mgmt_system/static/description/assets/modules/gantt_image.png
  70. BIN
      gym_mgmt_system/static/description/assets/modules/quotation_image.png
  71. BIN
      gym_mgmt_system/static/description/assets/screenshots/1.png
  72. BIN
      gym_mgmt_system/static/description/assets/screenshots/10.png
  73. BIN
      gym_mgmt_system/static/description/assets/screenshots/11.png
  74. BIN
      gym_mgmt_system/static/description/assets/screenshots/12.png
  75. BIN
      gym_mgmt_system/static/description/assets/screenshots/13.png
  76. BIN
      gym_mgmt_system/static/description/assets/screenshots/14.png
  77. BIN
      gym_mgmt_system/static/description/assets/screenshots/15.png
  78. BIN
      gym_mgmt_system/static/description/assets/screenshots/16.png
  79. BIN
      gym_mgmt_system/static/description/assets/screenshots/17.png
  80. BIN
      gym_mgmt_system/static/description/assets/screenshots/18.png
  81. BIN
      gym_mgmt_system/static/description/assets/screenshots/19.png
  82. BIN
      gym_mgmt_system/static/description/assets/screenshots/2.png
  83. BIN
      gym_mgmt_system/static/description/assets/screenshots/20.png
  84. BIN
      gym_mgmt_system/static/description/assets/screenshots/21.png
  85. BIN
      gym_mgmt_system/static/description/assets/screenshots/3.png
  86. BIN
      gym_mgmt_system/static/description/assets/screenshots/4.png
  87. BIN
      gym_mgmt_system/static/description/assets/screenshots/5.png
  88. BIN
      gym_mgmt_system/static/description/assets/screenshots/6.png
  89. BIN
      gym_mgmt_system/static/description/assets/screenshots/7.png
  90. BIN
      gym_mgmt_system/static/description/assets/screenshots/8.png
  91. BIN
      gym_mgmt_system/static/description/assets/screenshots/9.png
  92. BIN
      gym_mgmt_system/static/description/assets/screenshots/hero.gif
  93. BIN
      gym_mgmt_system/static/description/banner.jpg
  94. BIN
      gym_mgmt_system/static/description/icon.png
  95. 731
      gym_mgmt_system/static/description/index.html
  96. 33
      gym_mgmt_system/views/exercise_for_views.xml
  97. 94
      gym_mgmt_system/views/gym_exercise_views.xml
  98. 78
      gym_mgmt_system/views/gym_membership_views.xml
  99. 69
      gym_mgmt_system/views/gym_report_views.xml
  100. 46
      gym_mgmt_system/views/hr_employee_views.xml

45
gym_mgmt_system/README.rst

@ -0,0 +1,45 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
GYM Management System
=====================
This module will help manage the GYM.
Configuration
=============
* No additional configurations needed
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developers: (V16) Sahla Sherin , Contact:odoo@cybrosys.com
License
=======
GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3)
(http://www.gnu.org/licenses/agpl.html)
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

23
gym_mgmt_system/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models
from . import wizard

64
gym_mgmt_system/__manifest__.py

@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'GYM Management System',
'version': '16.0.1.0.0',
'category': 'Industries',
'summary': 'GYM Management System For Managing '
'Membership, Member, Workout Plan, etc',
'description': 'This module is used for the managing gym we can add '
'membership, member, workout plans etc in this module '
'basically for managing the membership,member, workout '
'plan etc',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': [ 'mail', 'contacts', 'hr',
'product', 'membership', 'sale_management',
],
'data': [
'security/gym_mgmt_system_groups.xml',
'security/ir.model.access.csv',
'security/gym_mgmt_system_security.xml',
'data/ir_sequence_data.xml',
'wizard/assign_workout.xml',
'views/product_template_views.xml',
'views/res_partner_views.xml',
'views/exercise_for_views.xml',
'views/gym_exercise_views.xml',
'views/gym_membership_views.xml',
'views/measurement_history_views.xml',
'views/membership_plan_views.xml',
'views/gym_report_views.xml',
'views/trainer_skill_views.xml',
'views/workout_plan_views.xml',
'views/workout_days_views.xml',
'views/my_workout_plan_views.xml',
'views/hr_employee_views.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'application': False,
'auto_install': False,
}

10
gym_mgmt_system/data/ir_sequence_data.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record id="seq_gym_membership" model="ir.sequence">
<field name="name">Gym Membership sequence</field>
<field name="code">gym.membership</field>
<field name="prefix">MEMPLAN/</field>
<field name="padding">4</field>
<field name="company_id" eval="False"/>
</record>
</odoo>

6
gym_mgmt_system/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <gym_mgmt_system>
#### 18.11.2023
#### Version 16.0.1.0.0
#### ADD
- Initial commit for GYM Management System

35
gym_mgmt_system/models/__init__.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import exercise_for
from . import gym_exercise
from . import gym_membership
from . import gym_report
from . import hr_employee
from . import measurement_history
from . import my_workout_plan
from . import product_template
from . import res_partner
from . import sale_order
from . import trainer_skill
from . import workout_days
from . import workout_plan
from . import workout_plan_option

34
gym_mgmt_system/models/exercise_for.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ExerciseFor(models.Model):
"""This model mention why this exercise for."""
_name = "exercise.for"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Gym Exercise For"
name = fields.Char(string="Name", help='This hold the name ')
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help='This field hold the company id')

71
gym_mgmt_system/models/gym_exercise.py

@ -0,0 +1,71 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
from odoo.addons.web_editor.tools import get_video_embed_code
from odoo.exceptions import ValidationError
class GymExercise(models.Model):
"""The model gym. exercise for defining the exercises."""
_name = "gym.exercise"
_inherit = ["mail.thread", "mail.activity.mixin", "image.mixin"]
_description = "Gym Exercises"
_columns = {
'image': fields.Binary("Image", help="This field holds the image"
)}
name = fields.Char(string="Name", help='Define the name of exercise')
exercise_for_ids = fields.Many2many("exercise.for",
string="Exercise For",
help='For which part this exercise')
equipment_ids = fields.Many2one('product.product',
string='Equipment',
required=True, tracking=True,
domain="[('gym_product', '!=',False)]",
help='The equiments used')
note_benefit = fields.Html(string='Note', help='Can add note here')
note_step = fields.Html(string='Note', help='Can add note step')
embed_code = fields.Html(compute="_compute_embed_code", sanitize=False,
help='The embed code')
video_url = fields.Char(string='Video URL',
help='URL of a video for showcasing your product.')
image = fields.Binary(string="Image", help="This field holds the image")
image12 = fields.Binary(string="Image", help="This field holds the image")
image123 = fields.Binary(string="Image", help="This field holds the image")
image124 = fields.Binary(string="Image", help="This field holds the image")
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help='This field hold the company id')
@api.constrains('video_url')
def _check_valid_video_url(self):
"""Check url is valid or not """
for image in self:
if image.video_url and not image.embed_code:
raise ValidationError(
_("Provided video URL for '%s' is not valid. "
"Please enter a valid video URL.", image.name))
@api.depends('video_url')
def _compute_embed_code(self):
"""To get video field """
for image in self:
image.embed_code = get_video_embed_code(image.video_url)

81
gym_mgmt_system/models/gym_membership.py

@ -0,0 +1,81 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
class GymMembership(models.Model):
"""This model is for gym membership."""
_name = "gym.membership"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Gym Membership"
_rec_name = "reference"
reference = fields.Char(string='GYM reference',readonly=True,
default=lambda self: _('New'))
member_id = fields.Many2one('res.partner', string='Member',
required=True, tracking=True,
domain="[('gym_member', '!=',False)]")
membership_scheme_id = fields.Many2one('product.product',
string='Membership scheme',
required=True, tracking=True,
domain="[('membership_date_from', "
"'!=',False)]")
paid_amount = fields.Float(string="Paid Amount", tracking=True)
membership_fees = fields.Float(string="Membership Fees", tracking=True,
related="membership_scheme_id.list_price")
sale_order_id = fields.Many2one('sale.order', string='Sales Order',
ondelete='cascade', copy=False,
readonly=True)
membership_date_from = fields.Date(string='Membership Start Date',
related="membership_scheme_id."
"membership_date_from",
help='Date from which membership '
'becomes active.')
membership_date_to = fields.Date(string='Membership End Date',
related="membership_scheme_id.membership_"
"date_to",
help='Date until which membership remains'
'active.')
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help='The field hold the company id')
state = fields.Selection([
('draft', 'Draft'),
('confirm', 'Confirm'),
('cancelled', 'Cancelled')
], default='draft', string='Status',
help="The status of record defined here")
_sql_constraints = [
('membership_date_greater',
'check(membership_date_to >= membership_date_from)',
'Error ! Ending Date cannot be set before Beginning Date.')
]
@api.model
def create_multi(self, vals):
"""Sequence number for membership """
if vals.get('reference', ('New')) == ('New'):
vals['reference'] = self.env['ir.sequence'].next_by_code(
'gym.membership') or ('New')
res = super(GymMembership, self).create(vals)
return res

31
gym_mgmt_system/models/gym_report.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class GymReport(models.Model):
"""This module is for the gym report."""
_name = "gym.report"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Gym Report"
name = fields.Char(string="Name", help="Name of the report")

34
gym_mgmt_system/models/hr_employee.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class HrEmployee(models.Model):
"""Inherited the model hr employee for adding some field to check whether he
is trainer or not."""
_inherit = 'hr.employee'
trainer = fields.Boolean(string='Gym Trainer',
help="The employee is trainer ")
exercise_for_ids = fields.Many2many("trainer.skill",
string="Specialization",
help="Skill of the trainer")

97
gym_mgmt_system/models/measurement_history.py

@ -0,0 +1,97 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models
class MeasurementHistory(models.Model):
"""This model used for measurement history."""
_name = "measurement.history"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Measurement History"
_rec_name = "gender"
def _get_default_weight_uom(self):
""" to get default weight uom """
return self.env[
'product.template']._get_weight_uom_name_from_ir_config_parameter()
member_id = fields.Many2one('res.partner', string='Member',
tracking=True, required=True,
domain="[('gym_member', '!=',False)]",
help='Name of the member')
gender = fields.Selection([
('male', 'Male'),
('female', 'Female'),
('other', 'Other'),
], string="Gender", required=True, help='Select the gender')
age = fields.Integer(string='Age', tracking=True, required=True,
help='Enter the age')
weight = fields.Float(
'Weight', digits='Stock Weight', store=True,
help='define the your weight')
weight_uom_name = fields.Char(string='Weight unit of measure label',
default=_get_default_weight_uom,
help='weight uom ')
height = fields.Float(
'Height', digits='Stock Height', store=True, help='Define your '
'height')
height_uom_name = fields.Char(string='height unit of measure label',
default='cm', help='height uom')
bmi = fields.Float(string='BMI', store=True,
compute='_compute_display_name', help='Calculate BMI')
bmr = fields.Float(string='BMR', store=True,
compute='_compute_display_name',
help='Calculate BMR')
neck = fields.Float(string='neck', store=True, help='The length of neck')
biceps = fields.Float(string='Biceps', store=True,
help='The length of biceps')
calf = fields.Float(string='Calf', store=True, help='The length of calf')
hips = fields.Float(string='Hips', store=True, help='The length of hips')
chest = fields.Float(string='Chest', store=True,
help='The length of chest')
waist = fields.Float(string='Waist', store=True,
help='The length of waist')
thighs = fields.Float(string='Thighs', store=True,
help='The length of thighs')
date = fields.Date(string='Date',
help='Date from which measurement active.')
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help="This field hold the company id")
@api.depends('weight', 'height')
def _compute_display_name(self):
"""Based on weight and height ,calculate the bmi and bmr"""
self.bmi = self.bmr = 0
self.display_name = self.member_id.name
if self.weight and self.height:
self.bmi = (self.weight / self.height / self.height) * 10000
if self.gender == "male":
self.bmr = 66.47 + (13.75 * self.weight) + \
(5.003 * self.height) - (6.755 * self.age)
if self.gender == "female":
self.bmr = 655.1 + (9.563 * self.weight) + \
(1.85 * self.height) - (6.755 * self.age)
else:
self.bmi = 1
self.bmr = 1
self.display_name = self.member_id.name

40
gym_mgmt_system/models/my_workout_plan.py

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class MyWorkoutPlan(models.Model):
"""This model for showing my workout plans."""
_name = "my.workout.plan"
_inherit = ["mail.thread", "mail.activity.mixin", "image.mixin"]
_description = "My Workout Plan"
_rec_name = "payment_term_id"
payment_term_id = fields.Many2one('workout.plan',
string="Name", help="payment term ")
assign_to_id = fields.Many2one('res.partner',
string='Assign To',
domain="[('gym_member', '!=',False)]",
default=lambda self: self.env.user,
help="Assigned person")
from_date = fields.Date(string='Date From', help="Start date")
to_date = fields.Date(string='Date To', help="End date")

31
gym_mgmt_system/models/product_template.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ProductTemplate(models.Model):
"""Inherited the model product Template for adding a field."""
_inherit = 'product.template'
gym_product = fields.Boolean(string='Gym Product',
help='This help to define the product whether'
'it is gym product')

62
gym_mgmt_system/models/res_partner.py

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models
class ResPartner(models.Model):
"""Inherited the partner model for adding gym related fields."""
_inherit = 'res.partner'
gym_member = fields.Boolean(string='Gym Member', default=True,
help='This field define the whether is member'
'of gym')
membership_count = fields.Integer('membership_count',
compute='_compute_membership_count',
help='This help to count the membership')
measurement_count = fields.Integer('measurement_count',
compute='_compute_measurement_count',
help='This helps to get the umber of '
'measurements for gym members')
def _compute_membership_count(self):
"""Number of membership for gym members """
for rec in self:
rec.membership_count = self.env['gym.membership'].search_count([
('member_id', '=', rec.id)])
def _compute_measurement_count(self):
"""Number of measurements for gym members """
for rec in self:
rec.measurement_count = self.env[
'measurement.history'].search_count([('member_id', '=',
rec.id)])
@api.constrains('gym_member')
def _validate_gym_member(self):
"""Select sale person to assign workout plan """
if self.gym_member:
return {
'warning': {
'title': 'User Error',
'message': 'select sale person (sales & purchase) '
'to assign workout plan'}
}

43
gym_mgmt_system/models/sale_order.py

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import models, _
class SaleOrder(models.Model):
"""Inherit the sale.order model for supering the action confirm."""
_inherit = "sale.order"
def action_confirm(self):
""" Membership created directly from sale order confirmed """
product = self.env['product.product'].search([
('membership_date_from', '!=', False),
('id', '=', self.order_line.product_id.id)])
for record in product:
self.env['gym.membership'].create([
{'member_id': self.partner_id.id,
'membership_date_from': record.membership_date_from,
'membership_scheme_id': self.order_line.product_id.id,
'sale_order_id': self.id,
}])
res = super(SaleOrder, self).action_confirm()
return res

35
gym_mgmt_system/models/trainer_skill.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class TrainerSkill(models.Model):
"""This model is showing the trainer skill."""
_name = "trainer.skill"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Trainer Skill"
name = fields.Char(string="Name", help="Name")
code = fields.Char(string="Code", help="Code")
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help="This field hold company id")

31
gym_mgmt_system/models/workout_days.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, _
class WorkoutDays(models.Model):
"""This model is used for getting workout days."""
_name = "workout.days"
_description = "Days given for Workout"
name = fields.Char(string='Workout days', required=True,
help="Days given for Workout")

58
gym_mgmt_system/models/workout_plan.py

@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, _
class WorkoutPlan(models.Model):
"""The model contain workout plan."""
_name = "workout.plan"
_inherit = ["mail.thread", "mail.activity.mixin", "image.mixin"]
_description = "Workout Plan"
name = fields.Char(string="Name")
workout_days_ids = fields.Many2many("workout.days",
string="Workout Days", help="Workout "
"days")
workout_plan_option_ids = fields.One2many(
'workout.plan.option', 'order_id',
'Optional Products Lines', help="Workout plan option")
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help="The current company")
def action_workout_plan(self):
"""Wizard opened to create my workout plans """
assign_workout_form = self.env.ref(
'gym_mgmt_system.view_workout_plan_wizard', False)
assign_workout_id = self.env['assign.workout'].create({
'workout_plan_id': self.id,
})
return {
'name': _('Assign Workout Plan'),
'type': 'ir.actions.act_window',
'res_model': 'assign.workout',
'res_id': assign_workout_id.id,
'view_id': assign_workout_form,
'view_type': 'form',
'view_mode': 'form',
'target': 'new',
}

49
gym_mgmt_system/models/workout_plan_option.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Sahla Sherin (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class WorkoutPlanOption(models.Model):
"""This model workout plan option is used adding the option for the workout
"""
_name = "workout.plan.option"
_description = "Workout Option"
_order = 'id'
order_id = fields.Many2one('workout.plan', 'Workout'
' Plan Reference',
ondelete='cascade',
index=True, help="Workout plan")
name = fields.Text('Description', required=True, help="Name")
exercise_id = fields.Many2one('gym.exercise', 'Exercises',
required=True, help="Exercise for the plan")
equipment_ids = fields.Many2one('product.product',
string='equipment', required=True,
tracking=True, help="Equipment for the "
"workout",
domain="[('gym_product', '!=',False)]",)
sets = fields.Integer(string="Sets", help="Set")
repeat = fields.Integer(string="Repeat", help="Number of repeat for cycle")
company_id = fields.Many2one('res.company', string='Company',
required=True, readonly=True,
default=lambda self: self.env.company,
help="The current company")

22
gym_mgmt_system/security/gym_mgmt_system_groups.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--The security for the gym_mgmt_system-->
<record model="ir.module.category" id="module_category_gym_operator">
<field name="name">Gym Management</field>
<field name="description">category for Gym Management</field>
</record>
<record id="group_gym_member" model="res.groups">
<field name="name">Member</field>
<field name="category_id" ref="module_category_gym_operator"/>
</record>
<record id="group_gym_trainer" model="res.groups">
<field name="name">Trainer</field>
<field name="category_id" ref="module_category_gym_operator"/>
<field name="implied_ids" eval="[(4, ref('group_gym_member'))]"/>
</record>
<record id="group_gym_operator" model="res.groups">
<field name="name">Operator</field>
<field name="category_id" ref="module_category_gym_operator"/>
<field name="implied_ids" eval="[(4, ref('group_gym_trainer'))]"/>
</record>
</odoo>

44
gym_mgmt_system/security/gym_mgmt_system_security.xml

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- multi-company rule-->
<record id="gym_management_exercise_rule" model="ir.rule">
<field name="name">Gym Management Exercise Rule</field>
<field name="model_id" ref="model_gym_exercise"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="gym_management_exercise_for_rule" model="ir.rule">
<field name="name">Gym Management Exercise For Rule</field>
<field name="model_id" ref="model_exercise_for"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="gym_management_measurement_history_rule" model="ir.rule">
<field name="name">Gym Management Measurement History Rule</field>
<field name="model_id" ref="model_measurement_history"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="gym_managment_trainer_rule" model="ir.rule">
<field name="name">Gym Management Trainer Rule</field>
<field name="model_id" ref="model_hr_employee"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="gym_management_gym_member_rule" model="ir.rule">
<field name="name">Gym Management Gym Member Rule</field>
<field name="model_id" ref="model_res_partner"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="gym_managment_gym_membership_rule" model="ir.rule">
<field name="name">Gym Management Membership Rule</field>
<field name="model_id" ref="model_gym_membership"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="gym_management_trainer_skill_rule" model="ir.rule">
<field name="name">Gym Management Trainer skill Rule</field>
<field name="model_id" ref="model_trainer_skill"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="gym_management_trainer_skill_rule" model="ir.rule">
<field name="name">Gym Management Trainer skill Rule</field>
<field name="model_id" ref="model_trainer_skill"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
</odoo>

49
gym_mgmt_system/security/ir.model.access.csv

@ -0,0 +1,49 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_assign_workout,access.assign.workout,model_assign_workout,gym_mgmt_system.group_gym_trainer,1,0,0,0
access_assign_workout,access.assign.workout,model_assign_workout,gym_mgmt_system.group_gym_member,1,0,0,0
access_assign_workout_operator,access.assign.workout,model_assign_workout,gym_mgmt_system.group_gym_operator,1,1,1,1
access_hr_employee_trainer,access.hr.employee,model_hr_employee,gym_mgmt_system.group_gym_trainer,1,1,1,0
access_hr_employee_member,access.hr.employee,model_hr_employee,gym_mgmt_system.group_gym_member,1,0,0,0
access_hr_employee_operator,access.hr.employee,model_hr_employee,gym_mgmt_system.group_gym_operator,1,1,1,1
access_sale_order_trainer,access.sale.order,model_sale_order,gym_mgmt_system.group_gym_trainer,1,1,1,0
access_sale_order_member,access.sale.order,model_sale_order,gym_mgmt_system.group_gym_member,1,0,0,0
access_sale_order_operator,access.sale.order,model_sale_order,gym_mgmt_system.group_gym_operator,1,1,1,1
access_product_template_trainer,access.product.template,model_product_template,gym_mgmt_system.group_gym_trainer,1,1,1,0
access_product_template_member,access.product.template,model_product_template,gym_mgmt_system.group_gym_member,1,0,0,0
access_product_template_operator,access.product.template,model_product_template,gym_mgmt_system.group_gym_operator,1,1,1,1
access_res_partner_trainer,access.res.partner,model_res_partner,gym_mgmt_system.group_gym_trainer,1,0,0,0
access_res_partner_operator,access.res.partner,model_res_partner,gym_mgmt_system.group_gym_operator,1,1,1,1
access_res_partner_member,access.res.partner,model_res_partner,gym_mgmt_system.group_gym_member,1,0,0,0
access_gym_membership_operator,access.gym.membership,model_gym_membership,gym_mgmt_system.group_gym_operator,1,1,1,1
access_gym_membership_trainer,access.gym.membership,model_gym_membership,gym_mgmt_system.group_gym_trainer,1,0,0,0
access_gym_membership_member,access.gym.membership,model_gym_membership,gym_mgmt_system.group_gym_member,1,0,0,0
access_measurement_history_operator,access.measurement.history,model_measurement_history,gym_mgmt_system.group_gym_operator,1,1,1,1
access_measurement_history_trainer,access.measurement.history,model_measurement_history,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_measurement_history_member,access.measurement.history,model_measurement_history,gym_mgmt_system.group_gym_member,1,0,0,0
access_trainer_skill_operator,access.trainer_skill,model_trainer_skill,gym_mgmt_system.group_gym_operator,1,1,1,1
access_trainer_skill_member,access.trainer_skill,model_trainer_skill,gym_mgmt_system.group_gym_member,1,0,0,0
access_trainer_skill_trainer,access.trainer_skill,model_trainer_skill,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_product_template_trainer,access.product_template,model_product_template,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_product_template_member,access.product_template,model_product_template,gym_mgmt_system.group_gym_member,1,0,0,0
access_product_template_operator,access.product_template,model_product_template,gym_mgmt_system.group_gym_operator,1,1,1,1
access_workout_plan_operator,access.workout.plan,model_workout_plan,gym_mgmt_system.group_gym_operator,1,1,1,1
access_workout_plan_trainer,access.workout.plan,model_workout_plan,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_workout_plan_member,access.workout.plan,model_workout_plan,gym_mgmt_system.group_gym_member,1,0,0,0
access_workout_plan_option_operator,access.workout.plan.option,model_workout_plan_option,gym_mgmt_system.group_gym_operator,1,1,1,1
access_workout_plan_option_trainer,access.workout.plan.option,model_workout_plan_option,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_workout_plan_option_member,access.workout.plan.option,model_workout_plan_option,gym_mgmt_system.group_gym_member,1,0,0,0
access_workout_days_operator,access.workout.days,model_workout_days,gym_mgmt_system.group_gym_operator,1,1,1,1
access_workout_days_trainer,access.workout.days,model_workout_days,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_workout_days_member,access.workout.days,model_workout_days,gym_mgmt_system.group_gym_member,1,1,0,0
access_gym_exercise_operator,access.gym.exercise,model_gym_exercise,gym_mgmt_system.group_gym_operator,1,1,1,1
access_gym_exercise_trainer,access.gym.exercise,model_gym_exercise,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_gym_exercise_member,access.gym.exercise,model_gym_exercise,gym_mgmt_system.group_gym_member,1,0,0,
access_exercise_for_operator,access.exercise.for,model_exercise_for,gym_mgmt_system.group_gym_operator,1,1,1,1
access_exercise_for_trainer,access.exercise.for,model_exercise_for,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_exercise_for_member,access.exercise.for,model_exercise_for,gym_mgmt_system.group_gym_member,1,0,0,0
access_trainer_skill_operator,access.trainer.skill,model_trainer_skill,gym_mgmt_system.group_gym_operator,1,1,1,1
access_trainer_skill_trainer,access.trainer.skill,model_trainer_skill,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_trainer_skill_member,access.trainer.skill,model_trainer_skill,gym_mgmt_system.group_gym_member,1,0,0,0
access_my_workout_plan_operator,access.my.workout.plan,model_my_workout_plan,gym_mgmt_system.group_gym_operator,1,1,1,1
access_my_workout_plan_trainer,access.my.workout.plan,model_my_workout_plan,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_my_workout_plan_member,access.my.workout.plan,model_my_workout_plan,gym_mgmt_system.group_gym_member,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_assign_workout access.assign.workout model_assign_workout gym_mgmt_system.group_gym_trainer 1 0 0 0
3 access_assign_workout access.assign.workout model_assign_workout gym_mgmt_system.group_gym_member 1 0 0 0
4 access_assign_workout_operator access.assign.workout model_assign_workout gym_mgmt_system.group_gym_operator 1 1 1 1
5 access_hr_employee_trainer access.hr.employee model_hr_employee gym_mgmt_system.group_gym_trainer 1 1 1 0
6 access_hr_employee_member access.hr.employee model_hr_employee gym_mgmt_system.group_gym_member 1 0 0 0
7 access_hr_employee_operator access.hr.employee model_hr_employee gym_mgmt_system.group_gym_operator 1 1 1 1
8 access_sale_order_trainer access.sale.order model_sale_order gym_mgmt_system.group_gym_trainer 1 1 1 0
9 access_sale_order_member access.sale.order model_sale_order gym_mgmt_system.group_gym_member 1 0 0 0
10 access_sale_order_operator access.sale.order model_sale_order gym_mgmt_system.group_gym_operator 1 1 1 1
11 access_product_template_trainer access.product.template model_product_template gym_mgmt_system.group_gym_trainer 1 1 1 0
12 access_product_template_member access.product.template model_product_template gym_mgmt_system.group_gym_member 1 0 0 0
13 access_product_template_operator access.product.template model_product_template gym_mgmt_system.group_gym_operator 1 1 1 1
14 access_res_partner_trainer access.res.partner model_res_partner gym_mgmt_system.group_gym_trainer 1 0 0 0
15 access_res_partner_operator access.res.partner model_res_partner gym_mgmt_system.group_gym_operator 1 1 1 1
16 access_res_partner_member access.res.partner model_res_partner gym_mgmt_system.group_gym_member 1 0 0 0
17 access_gym_membership_operator access.gym.membership model_gym_membership gym_mgmt_system.group_gym_operator 1 1 1 1
18 access_gym_membership_trainer access.gym.membership model_gym_membership gym_mgmt_system.group_gym_trainer 1 0 0 0
19 access_gym_membership_member access.gym.membership model_gym_membership gym_mgmt_system.group_gym_member 1 0 0 0
20 access_measurement_history_operator access.measurement.history model_measurement_history gym_mgmt_system.group_gym_operator 1 1 1 1
21 access_measurement_history_trainer access.measurement.history model_measurement_history gym_mgmt_system.group_gym_trainer 1 1 1 1
22 access_measurement_history_member access.measurement.history model_measurement_history gym_mgmt_system.group_gym_member 1 0 0 0
23 access_trainer_skill_operator access.trainer_skill model_trainer_skill gym_mgmt_system.group_gym_operator 1 1 1 1
24 access_trainer_skill_member access.trainer_skill model_trainer_skill gym_mgmt_system.group_gym_member 1 0 0 0
25 access_trainer_skill_trainer access.trainer_skill model_trainer_skill gym_mgmt_system.group_gym_trainer 1 1 1 1
26 access_product_template_trainer access.product_template model_product_template gym_mgmt_system.group_gym_trainer 1 1 1 1
27 access_product_template_member access.product_template model_product_template gym_mgmt_system.group_gym_member 1 0 0 0
28 access_product_template_operator access.product_template model_product_template gym_mgmt_system.group_gym_operator 1 1 1 1
29 access_workout_plan_operator access.workout.plan model_workout_plan gym_mgmt_system.group_gym_operator 1 1 1 1
30 access_workout_plan_trainer access.workout.plan model_workout_plan gym_mgmt_system.group_gym_trainer 1 1 1 1
31 access_workout_plan_member access.workout.plan model_workout_plan gym_mgmt_system.group_gym_member 1 0 0 0
32 access_workout_plan_option_operator access.workout.plan.option model_workout_plan_option gym_mgmt_system.group_gym_operator 1 1 1 1
33 access_workout_plan_option_trainer access.workout.plan.option model_workout_plan_option gym_mgmt_system.group_gym_trainer 1 1 1 1
34 access_workout_plan_option_member access.workout.plan.option model_workout_plan_option gym_mgmt_system.group_gym_member 1 0 0 0
35 access_workout_days_operator access.workout.days model_workout_days gym_mgmt_system.group_gym_operator 1 1 1 1
36 access_workout_days_trainer access.workout.days model_workout_days gym_mgmt_system.group_gym_trainer 1 1 1 1
37 access_workout_days_member access.workout.days model_workout_days gym_mgmt_system.group_gym_member 1 1 0 0
38 access_gym_exercise_operator access.gym.exercise model_gym_exercise gym_mgmt_system.group_gym_operator 1 1 1 1
39 access_gym_exercise_trainer access.gym.exercise model_gym_exercise gym_mgmt_system.group_gym_trainer 1 1 1 1
40 access_gym_exercise_member access.gym.exercise model_gym_exercise gym_mgmt_system.group_gym_member 1 0 0
41 access_exercise_for_operator access.exercise.for model_exercise_for gym_mgmt_system.group_gym_operator 1 1 1 1
42 access_exercise_for_trainer access.exercise.for model_exercise_for gym_mgmt_system.group_gym_trainer 1 1 1 1
43 access_exercise_for_member access.exercise.for model_exercise_for gym_mgmt_system.group_gym_member 1 0 0 0
44 access_trainer_skill_operator access.trainer.skill model_trainer_skill gym_mgmt_system.group_gym_operator 1 1 1 1
45 access_trainer_skill_trainer access.trainer.skill model_trainer_skill gym_mgmt_system.group_gym_trainer 1 1 1 1
46 access_trainer_skill_member access.trainer.skill model_trainer_skill gym_mgmt_system.group_gym_member 1 0 0 0
47 access_my_workout_plan_operator access.my.workout.plan model_my_workout_plan gym_mgmt_system.group_gym_operator 1 1 1 1
48 access_my_workout_plan_trainer access.my.workout.plan model_my_workout_plan gym_mgmt_system.group_gym_trainer 1 1 1 1
49 access_my_workout_plan_member access.my.workout.plan model_my_workout_plan gym_mgmt_system.group_gym_member 1 0 0 0

BIN
gym_mgmt_system/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
gym_mgmt_system/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
gym_mgmt_system/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
gym_mgmt_system/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
gym_mgmt_system/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
gym_mgmt_system/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
gym_mgmt_system/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
gym_mgmt_system/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
gym_mgmt_system/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
gym_mgmt_system/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
gym_mgmt_system/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
gym_mgmt_system/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
gym_mgmt_system/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
gym_mgmt_system/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
gym_mgmt_system/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
gym_mgmt_system/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
gym_mgmt_system/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
gym_mgmt_system/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
gym_mgmt_system/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
gym_mgmt_system/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
gym_mgmt_system/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
gym_mgmt_system/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
gym_mgmt_system/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
gym_mgmt_system/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
gym_mgmt_system/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
gym_mgmt_system/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
gym_mgmt_system/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
gym_mgmt_system/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
gym_mgmt_system/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
gym_mgmt_system/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
gym_mgmt_system/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
gym_mgmt_system/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
gym_mgmt_system/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
gym_mgmt_system/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
gym_mgmt_system/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
gym_mgmt_system/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
gym_mgmt_system/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
gym_mgmt_system/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
gym_mgmt_system/static/description/assets/modules/5.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
gym_mgmt_system/static/description/assets/modules/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
gym_mgmt_system/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
gym_mgmt_system/static/description/assets/modules/budget_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
gym_mgmt_system/static/description/assets/modules/credit_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
gym_mgmt_system/static/description/assets/modules/employee_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
gym_mgmt_system/static/description/assets/modules/export_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
gym_mgmt_system/static/description/assets/modules/gantt_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
gym_mgmt_system/static/description/assets/modules/quotation_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/17.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/18.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/19.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/20.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/21.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
gym_mgmt_system/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 KiB

BIN
gym_mgmt_system/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
gym_mgmt_system/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

731
gym_mgmt_system/static/description/index.html

@ -0,0 +1,731 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
<div style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Gym Management System</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
GYM Management System
For Managing Membership, Member, Workout Plan, etc.</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;"/>
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots for this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
In this software, provides fitness businesses the functionality needed
to manage all aspects of their business
and efficiently operate their studio.
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Members can check their workout plans, track body measurements, access membership details</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Trainer can create workout plans to members, develop their skills.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Operator can manage trainers and members, Also Access all the membership information.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Directly create new membership from sale order</span>
</div>
</div>
<div class="col-sm-12 col-md-6">
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Manage Members.
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Create new member and
manage all members in the gym. Also check the number of
measurements and memberships of members.</p>
<img src="assets/screenshots/1.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Manage Membership
Plan.
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
User can create
membership plansxzx c.</p>
<img src="assets/screenshots/2.png" class="img-thumbnail">
<img src="assets/screenshots/3.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Create Membership
from sale Order
</h3>
<img src="assets/screenshots/4.png" class="img-thumbnail">
<img src="assets/screenshots/5.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Measurement History
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Automatically create
BMI and BMR of member.</p>
<img src="assets/screenshots/6.png" class="img-thumbnail">
<img src="assets/screenshots/7.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Manage Trainers.
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Create specialization
for trainer.</p>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Create Trainer
Skills </p>
<img src="assets/screenshots/8.png" class="img-thumbnail">
<img src="assets/screenshots/9.png" class="img-thumbnail">
<!-- <img src="assets/screenshots/10.png" class="img-thumbnail">-->
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Workout Plan.
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Create Workout
Plans.</p>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Assign Workout
Plans. </p>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Create Workout
Days.</p>
<img src="assets/screenshots/10.png" class="img-thumbnail">
<img src="assets/screenshots/11.png" class="img-thumbnail">
<img src="assets/screenshots/12.png" class="img-thumbnail">
<img src="assets/screenshots/13.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Gym Measurement
Report
</h3>
<!-- <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">After clicking the button , we can see the done quantity is changed. And also the state changed into Ready. Now we can just validate the delivery to deliver the product.</p>-->
<img src="assets/screenshots/14.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Gym Equipments
Report
</h3>
<!-- <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">After clicking the button , we can see the done quantity is changed. And also the state changed into Ready. Now we can just validate the delivery to deliver the product.</p>-->
<img src="assets/screenshots/15.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Gym Exercises
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Create Exercise with thier attributes like
benefits,steps,images etc</p>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
- Create exercise for parts of body </p>
<img src="assets/screenshots/16.png" class="img-thumbnail">
<img src="assets/screenshots/17.png" class="img-thumbnail">
<img src="assets/screenshots/18.png" class="img-thumbnail">
<img src="assets/screenshots/19.png" class="img-thumbnail">
<img src="assets/screenshots/20.png" class="img-thumbnail">
<img src="assets/screenshots/21.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Gym Exercises
</h3>
<!-- <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">After clicking the button , we can see the done quantity is changed. And also the state changed into Ready. Now we can just validate the delivery to deliver the product.</p>-->
<img src="assets/screenshots/16.png" class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/custom_gantt_view/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/whatsapp_mail_messaging/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/2.png"></div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/customer_followup_community/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/3.png"></div>
</a>
</div>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/sales_credit_limit/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/4.png"></div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/dynamic_accounts_report/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/5.png"></div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/hr_zk_attendance/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/6.png"></div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1"
data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;"/>
</div>
</div>
</div>
<!-- END OF SUPPORT -->

33
gym_mgmt_system/views/exercise_for_views.xml

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Tree view for exercise for -->
<record id="exercise_for_view_tree" model="ir.ui.view">
<field name="name">exercise.for.view.tree</field>
<field name="model">exercise.for</field>
<field name="arch" type="xml">
<tree string="Exercise For Tags" editable="bottom">
<field name="name"/>
<field name="company_id" invisible="1"/>
</tree>
</field>
</record>
<!-- action for exercise for -->
<record id="exercise_for_action" model="ir.actions.act_window">
<field name="name">Exercise For</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">exercise.for</field>
<field name="view_mode">tree</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Exercise For!
</p>
</field>
</record>
<!--Sub Menu-->
<menuitem id="gym_exercise_for_menu"
name="Exercises For"
parent="equipment_menu_configuration_root"
action="exercise_for_action"
sequence="30"/>
</odoo>

94
gym_mgmt_system/views/gym_exercise_views.xml

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Form view for gym exercise-->
<record id="gym_exercise_view_form" model="ir.ui.view">
<field name="name">gym.exercise.view.form</field>
<field name="model">gym.exercise</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
<field name="exercise_for_ids" widget="many2many_tags"/>
<field name="equipment_ids"/>
<field name="company_id" invisible="1"/>
</group>
</group>
<notebook>
<page string="Benefits" name="benefits">
<field name="note_benefit"/>
</page>
<page string="Steps" name="steps">
<field name="note_step"/>
</page>
<page string="Images" name="images">
<div style="margin-left: 2.5em;padding: 0 7em 2em 0;">
<field name="image" widget="image" style="width:150;height:150;margin-right: 3.5em"/>
<field name="image12" widget="image" style="width:150;height:150;margin-right: 3.5em"/>
<field name="image123" widget="image" style="width:150;height:150;margin-right: 3.5em"/>
<field name="image124" widget="image" style="width:150;height:150;margin-right: 3.5em"/>
</div>
</page>
<page string="Videos" name="videos">
<div class="row o_website_sale_image_modal">
<div class="col-md-6 col-xl-5">
<label for="name" string="Image Name"/>
<h2>
<field name="name" />
</h2>
<label for="video_url" string="Video URL"/>
<br/>
<field name="video_url"/>
<br/>
</div>
<div class="col-md-6 col-xl-7 text-center o_website_sale_image_modal_container">
<div class="row">
<div class="col" attrs="{'invisible': [('video_url', 'in', ['', False])]}">
<div>
<div>
<span>Video Preview</span>
<field name="embed_code" class="mt-2" widget="video_preview"/>
<h4 class="o_invalid_warning text-muted text-center"
attrs="{'invisible': [('embed_code', '!=', False)]}">
Please enter a valid Video URL.
</h4>
</div>
</div>
</div>
</div>
</div>
</div>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action for gym exercise -->
<record id="gym_exercise_action" model="ir.actions.act_window">
<field name="name">Gym Exercise</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">gym.exercise</field>
<field name="view_mode">tree,form,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Exercise!
</p>
</field>
</record>
<!--Sub Menu-->
<menuitem id="gym_exercise_menu_action"
name="Exercises"
parent="equipment_menu_configuration_root"
action="gym_exercise_action"
sequence="20"/>
</odoo>

78
gym_mgmt_system/views/gym_membership_views.xml

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- form view for gym membership -->
<record id="gym_membership_view_form" model="ir.ui.view">
<field name="name">gym.membership.form</field>
<field name="model">gym.membership</field>
<field name="arch" type="xml">
<form>
<header>
<field name="state" widget="statusbar"
options="{'clickable':'1'}"/>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="reference"/>
</h1>
</div>
<group>
<group>
<field name="member_id"/>
<field name="membership_scheme_id"/>
<field name="paid_amount"/>
</group>
<group>
<field name="membership_fees"/>
<field name="sale_order_id" readonly="1"/>
<label for="membership_date_from" string="Membership Duration"/>
<div class="o_row">
<field name="membership_date_from" required="1"/>
-
<field name="membership_date_to" required="1"/>
</div>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!--Tree view for gym membership-->
<record id="view_membership_tree" model="ir.ui.view">
<field name="name">gym.membership.tree</field>
<field name="model">gym.membership</field>
<field name="arch" type="xml">
<tree default_order="reference desc">
<field name="reference"/>
<field name="member_id"/>
<field name="membership_scheme_id"/>
<field name="membership_fees"/>
<field name="state"/>
</tree>
</field>
</record>
<!--Action for gym membership-->
<record id="gym_membership_action" model="ir.actions.act_window">
<field name="name">Gym Membership</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">gym.membership</field>
<field name="view_mode">tree,form,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Membership!
</p>
</field>
</record>
<!-- Menu -->
<menuitem
id="gym_membership_menu_action"
name="Membership"
parent="gym_member_root"
action="gym_membership_action"
sequence="30"/>
</odoo>

69
gym_mgmt_system/views/gym_report_views.xml

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Form view for the gym report form-->
<record id="view_gym_report_form" model="ir.ui.view">
<field name="name">gym.report.form</field>
<field name="model">gym.report</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!--Action for Report-->
<record id="action_gym_report" model="ir.actions.act_window">
<field name="name">Gym Report</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">gym.report</field>
<field name="view_mode">tree,form,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Report!
</p>
</field>
</record>
<!-- Action for Measurement History-->
<record id="measurement_history_pivot_action" model="ir.actions.act_window">
<field name="name">Measurement History</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">measurement.history</field>
<field name="view_mode">pivot</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Measurement History!
</p>
</field>
</record>
<!--Pivot view for Measurement History -->
<record id="measurement_history_pivot" model="ir.ui.view">
<field name="name">measurement.history.report.pivot</field>
<field name="model">measurement.history</field>
<field name="arch" type="xml">
<pivot string="measurements">
<field name="date" type="col" interval="day"/>
<field name="member_id" type="row"/>
</pivot>
</field>
</record>
<!--Menu and Sub Menu-->
<menuitem id="gym_report_root"
name="Reports"
parent="gym_mgmt_system_menu_root"
sequence="30"/>
<menuitem id="gym_report_menu"
name="Measurement Report"
parent="gym_report_root"
action="measurement_history_pivot_action"
sequence="10"/>
</odoo>

46
gym_mgmt_system/views/hr_employee_views.xml

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Action for gym trainer -->
<record id="gym_trainer_emp_action" model="ir.actions.act_window">
<field name="name">Trainers</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hr.employee</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('trainer','=','True')]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Trainer!
</p>
</field>
</record>
<!--form view for trainer -->
<record id="view_employee_form" model="ir.ui.view">
<field name="name">hr.employee.view.form.inherited.gym.mgmt.system</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='mobile_phone']" position="after">
<field name="trainer"/>
<field name="exercise_for_ids" widget="many2many_tags"
attrs="{'invisible': [('trainer', '=', False)]}"/>
</xpath>
</field>
</record>
<!-- Menu and Submenu -->
<menuitem
id="gym_trainer_root"
name="Trainers"
parent="gym_mgmt_system_menu_root"
sequence="20"/>
<menuitem
id="gym_trainer_menu"
name="Trainers"
parent="gym_trainer_root"
action="gym_trainer_emp_action"
sequence="10"/>
<menuitem id="gym_trainer_skill_menu"
name="Trainer skill"
parent="gym_trainer_root"
action="trainer_skill_action"
sequence="20"/>
</odoo>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save