Browse Source

[ADD] Aug 17: Initial Commit 'gym_mgmt_system'

pull/219/head
AjmalCybro 3 years ago
parent
commit
7a0f3b3b67
  1. 17
      gym_mgmt_system/README.rst
  2. 24
      gym_mgmt_system/__init__.py
  3. 57
      gym_mgmt_system/__manifest__.py
  4. 12
      gym_mgmt_system/data/data.xml
  5. 5
      gym_mgmt_system/doc/RELEASE_NOTES.md
  6. 32
      gym_mgmt_system/models/__init__.py
  7. 29
      gym_mgmt_system/models/equipments.py
  8. 67
      gym_mgmt_system/models/exercise.py
  9. 32
      gym_mgmt_system/models/exercise_for.py
  10. 79
      gym_mgmt_system/models/measurement_history.py
  11. 62
      gym_mgmt_system/models/members.py
  12. 92
      gym_mgmt_system/models/membership.py
  13. 31
      gym_mgmt_system/models/report.py
  14. 32
      gym_mgmt_system/models/trainer_skill.py
  15. 31
      gym_mgmt_system/models/trainers.py
  16. 93
      gym_mgmt_system/models/workout_plan.py
  17. 62
      gym_mgmt_system/security/ir.model.access.csv
  18. 78
      gym_mgmt_system/security/security.xml
  19. BIN
      gym_mgmt_system/static/description/assets/icons/check.png
  20. BIN
      gym_mgmt_system/static/description/assets/icons/chevron.png
  21. BIN
      gym_mgmt_system/static/description/assets/icons/cogs.png
  22. BIN
      gym_mgmt_system/static/description/assets/icons/consultation.png
  23. BIN
      gym_mgmt_system/static/description/assets/icons/ecom-black.png
  24. BIN
      gym_mgmt_system/static/description/assets/icons/education-black.png
  25. BIN
      gym_mgmt_system/static/description/assets/icons/hotel-black.png
  26. BIN
      gym_mgmt_system/static/description/assets/icons/license.png
  27. BIN
      gym_mgmt_system/static/description/assets/icons/lifebuoy.png
  28. BIN
      gym_mgmt_system/static/description/assets/icons/logo.png
  29. BIN
      gym_mgmt_system/static/description/assets/icons/manufacturing-black.png
  30. BIN
      gym_mgmt_system/static/description/assets/icons/pos-black.png
  31. BIN
      gym_mgmt_system/static/description/assets/icons/puzzle.png
  32. BIN
      gym_mgmt_system/static/description/assets/icons/restaurant-black.png
  33. BIN
      gym_mgmt_system/static/description/assets/icons/service-black.png
  34. BIN
      gym_mgmt_system/static/description/assets/icons/trading-black.png
  35. BIN
      gym_mgmt_system/static/description/assets/icons/training.png
  36. BIN
      gym_mgmt_system/static/description/assets/icons/update.png
  37. BIN
      gym_mgmt_system/static/description/assets/icons/user.png
  38. BIN
      gym_mgmt_system/static/description/assets/icons/wrench.png
  39. BIN
      gym_mgmt_system/static/description/assets/modules/budget_image.png
  40. BIN
      gym_mgmt_system/static/description/assets/modules/credit_image.png
  41. BIN
      gym_mgmt_system/static/description/assets/modules/employee_image.png
  42. BIN
      gym_mgmt_system/static/description/assets/modules/export_image.png
  43. BIN
      gym_mgmt_system/static/description/assets/modules/gantt_image.png
  44. BIN
      gym_mgmt_system/static/description/assets/modules/quotation_image.png
  45. BIN
      gym_mgmt_system/static/description/assets/screenshots/assign_workout_plan.png
  46. BIN
      gym_mgmt_system/static/description/assets/screenshots/assign_workout_plan_2.png
  47. BIN
      gym_mgmt_system/static/description/assets/screenshots/assign_workout_plan_3.png
  48. BIN
      gym_mgmt_system/static/description/assets/screenshots/equipments.png
  49. BIN
      gym_mgmt_system/static/description/assets/screenshots/exercise.png
  50. BIN
      gym_mgmt_system/static/description/assets/screenshots/exercise_for.png
  51. BIN
      gym_mgmt_system/static/description/assets/screenshots/exercise_form_benefits.png
  52. BIN
      gym_mgmt_system/static/description/assets/screenshots/exercise_form_images.png
  53. BIN
      gym_mgmt_system/static/description/assets/screenshots/exercise_form_steps.png
  54. BIN
      gym_mgmt_system/static/description/assets/screenshots/exercise_form_videos.png
  55. BIN
      gym_mgmt_system/static/description/assets/screenshots/hero.gif
  56. BIN
      gym_mgmt_system/static/description/assets/screenshots/inv_format1.png
  57. BIN
      gym_mgmt_system/static/description/assets/screenshots/inv_format2.png
  58. BIN
      gym_mgmt_system/static/description/assets/screenshots/inv_format3.png
  59. BIN
      gym_mgmt_system/static/description/assets/screenshots/inv_format4.png
  60. BIN
      gym_mgmt_system/static/description/assets/screenshots/inv_format5.png
  61. BIN
      gym_mgmt_system/static/description/assets/screenshots/inv_format6.png
  62. BIN
      gym_mgmt_system/static/description/assets/screenshots/inv_format7.png
  63. BIN
      gym_mgmt_system/static/description/assets/screenshots/measurement_history.png
  64. BIN
      gym_mgmt_system/static/description/assets/screenshots/measurement_history_form.png
  65. BIN
      gym_mgmt_system/static/description/assets/screenshots/measurement_history_form_report.png
  66. BIN
      gym_mgmt_system/static/description/assets/screenshots/member.png
  67. BIN
      gym_mgmt_system/static/description/assets/screenshots/membership.png
  68. BIN
      gym_mgmt_system/static/description/assets/screenshots/membership_form.png
  69. BIN
      gym_mgmt_system/static/description/assets/screenshots/membership_product.png
  70. BIN
      gym_mgmt_system/static/description/assets/screenshots/membership_product_form.png
  71. BIN
      gym_mgmt_system/static/description/assets/screenshots/membership_sale_order.png
  72. BIN
      gym_mgmt_system/static/description/assets/screenshots/membership_sale_order_form.png
  73. BIN
      gym_mgmt_system/static/description/assets/screenshots/my_workout_plan.png
  74. BIN
      gym_mgmt_system/static/description/assets/screenshots/my_workout_plan_form.png
  75. BIN
      gym_mgmt_system/static/description/assets/screenshots/trainer.png
  76. BIN
      gym_mgmt_system/static/description/assets/screenshots/trainer_form.png
  77. BIN
      gym_mgmt_system/static/description/assets/screenshots/trainer_form_specification.png
  78. BIN
      gym_mgmt_system/static/description/assets/screenshots/trainer_skill.png
  79. BIN
      gym_mgmt_system/static/description/assets/screenshots/workout_days.png
  80. BIN
      gym_mgmt_system/static/description/assets/screenshots/workout_plan.png
  81. BIN
      gym_mgmt_system/static/description/assets/screenshots/workout_plan_form.png
  82. BIN
      gym_mgmt_system/static/description/assets/screenshots/workout_plan_form_2.png
  83. BIN
      gym_mgmt_system/static/description/assets/screenshots/workout_plan_form_3.png
  84. BIN
      gym_mgmt_system/static/description/banner.png
  85. BIN
      gym_mgmt_system/static/description/icon.png
  86. 706
      gym_mgmt_system/static/description/index.html
  87. 43
      gym_mgmt_system/views/equipments.xml
  88. 93
      gym_mgmt_system/views/exercise.xml
  89. 31
      gym_mgmt_system/views/exercise_for.xml
  90. 122
      gym_mgmt_system/views/measurement_history.xml
  91. 69
      gym_mgmt_system/views/members.xml
  92. 77
      gym_mgmt_system/views/membership.xml
  93. 20
      gym_mgmt_system/views/membership_plan.xml
  94. 72
      gym_mgmt_system/views/report.xml
  95. 30
      gym_mgmt_system/views/trainer_skill.xml
  96. 46
      gym_mgmt_system/views/trainers.xml
  97. 153
      gym_mgmt_system/views/workout_plan.xml
  98. 23
      gym_mgmt_system/wizard/__init__.py
  99. 45
      gym_mgmt_system/wizard/assign_workout.py
  100. 30
      gym_mgmt_system/wizard/assign_workout.xml

17
gym_mgmt_system/README.rst

@ -0,0 +1,17 @@
Freight Management v15
======================
Gym Management
Installation
============
- www.odoo.com/documentation/15.0/setup/install.html
- Install our custom addon
Configuration
=============
No additional configurations needed
Credits
=======
Developer: Shahul v15 @ cybrosys, Contact: odoo@cybrosys.com

24
gym_mgmt_system/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import wizard
from . import models

57
gym_mgmt_system/__manifest__.py

@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'GYM Management System',
'summary': 'GYM Management System',
'version': '15.0.1.0.0',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'description': "GYM Management System",
'depends': [
'mail', 'contacts', 'hr', 'product', 'membership', 'sale',
],
'images': ['static/description/banner.png'],
'data': [
'security/security.xml',
'security/ir.model.access.csv',
'data/data.xml',
'wizard/assign_workout.xml',
'views/equipments.xml',
'views/members.xml',
'views/report.xml',
'views/exercise.xml',
'views/exercise_for.xml',
'views/trainer_skill.xml',
'views/membership_plan.xml',
'views/membership.xml',
'views/measurement_history.xml',
'views/workout_plan.xml',
'views/trainers.xml',
],
'installable': True,
'application': False,
'auto_install': False,
'license': 'LGPL-3',
}

12
gym_mgmt_system/data/data.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data 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>
</data>
</odoo>

5
gym_mgmt_system/doc/RELEASE_NOTES.md

@ -0,0 +1,5 @@
## Module <gym_mgmt_system>
#### 16.08.2022
#### Version 15.0.1.0.0
#### ADD Initial Commit

32
gym_mgmt_system/models/__init__.py

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import members
from . import trainers
from . import report
from . import equipments
from . import exercise
from . import exercise_for
from . import trainer_skill
from . import membership
from . import measurement_history
from . import workout_plan

29
gym_mgmt_system/models/equipments.py

@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class GymEquipments(models.Model):
_inherit = 'product.template'
gym_product = fields.Boolean(string='Gym Product')

67
gym_mgmt_system/models/exercise.py

@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
from odoo.addons.website.tools import get_video_embed_code
from odoo.exceptions import ValidationError
class GymExercises(models.Model):
_name = "gym.exercise"
_inherit = ["mail.thread", "mail.activity.mixin", "image.mixin"]
_description = "Gym Exercises"
_rec_name = "name"
_columns = {
'image': fields.Binary("Image", help="This field holds the image"),
}
name = fields.Char(string="Name")
exercise_for_ids = fields.Many2many("exercise.for", string="Exercise For")
equipment_ids = fields.Many2one('product.product', string='Equipment',
required=True, tracking=True,
domain="[('gym_product', '!=',False)]")
note_benefit = fields.Html('Note')
note_step = fields.Html('Note')
embed_code = fields.Html(compute="_compute_embed_code", sanitize=False)
video_url = fields.Char('Video URL',
help='URL of a video for showcasing your product.')
image = fields.Binary("Image", help="This field holds the image")
image12 = fields.Binary("Image", help="This field holds the image")
image123 = fields.Binary("Image", help="This field holds the image")
image124 = fields.Binary("Image", help="This field holds the image")
@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)
@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))

32
gym_mgmt_system/models/exercise_for.py

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class GymExerciseFor(models.Model):
_name = "exercise.for"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Gym Exercise For"
_rec_name = "name"
name = fields.Char(string="Name")

79
gym_mgmt_system/models/measurement_history.py

@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models
class MeasurementHistory(models.Model):
_name = "measurement.history"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Measurement History"
_rec_name = "member"
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 = fields.Many2one('res.partner', string='Member', tracking=True,
required=True,
domain="[('gym_member', '!=',False)]")
gender = fields.Selection([
('male', 'Male'),
('female', 'Female'),
('other', 'Other'),
], string="Gender", required=True)
age = fields.Integer(string='Age', tracking=True, required=True)
weight = fields.Float(
'Weight', digits='Stock Weight', store=True)
weight_uom_name = fields.Char(string='Weight unit of measure label',
default=_get_default_weight_uom)
height = fields.Float(
'Height', digits='Stock Height', store=True)
height_uom_name = fields.Char(string='Weight unit of measure label',
default='cm')
bmi = fields.Float('BMI', store=True, compute='compute_display_name')
bmr = fields.Float('BMR', store=True, compute='compute_display_name')
neck = fields.Float('neck', store=True)
biceps = fields.Float('Biceps', store=True)
calf = fields.Float('Calf', store=True)
hips = fields.Float('Hips', store=True)
chest = fields.Float('Chest', store=True)
waist = fields.Float('Waist', store=True)
thighs = fields.Float('Thighs', store=True)
date = fields.Date(string='Date',
help='Date from which measurement active.')
@api.depends('weight', 'height')
def compute_display_name(self):
""" based on weight and height ,calculate the bmi and bmr"""
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)

62
gym_mgmt_system/models/members.py

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, api
class GymMember(models.Model):
_name = "gym.member"
_inherit = ["mail.thread", 'mail.activity.mixin']
_description = "Gym Member"
class MemberPartner(models.Model):
_inherit = 'res.partner'
gym_member = fields.Boolean(string='Gym Member', default=True)
membership_count = fields.Integer('membership_count',
compute='_compute_membership_count')
measurement_count = fields.Integer('measurement_count',
compute='_compute_measurement_count')
def _compute_membership_count(self):
""" number of membership for gym members """
for rec in self:
rec.membership_count = rec.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 = rec.env['measurement.history'].search_count(
[('member.id', '=', rec.id)])
@api.onchange('gym_member')
def _onchange_gym_member(self):
""" select sale person to assign workout plan """
if self.gym_member:
return {
'warning': {
'title': 'Warning!',
'message': 'select sale person (sales & purchase) '
'to assign workout plan'}
}

92
gym_mgmt_system/models/membership.py

@ -0,0 +1,92 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
class GymMembership(models.Model):
_name = "gym.membership"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Gym Membership"
_rec_name = "reference"
reference = fields.Char(string='GYM reference', required=True,
readonly=True, default=lambda self: _('New'))
member = fields.Many2one('res.partner', string='Member', required=True,
tracking=True,
domain="[('gym_member', '!=',False)]")
membership_scheme = fields.Many2one('product.product',
string='Membership scheme',
required=True, tracking=True,
domain="[('membership_date_from', '!=',False)]")
paid_amount = fields.Integer(string="Paid Amount", tracking=True)
membership_fees = fields.Float(string="Membership Fees", tracking=True,
related="membership_scheme.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.membership_date_from",
help='Date from which membership becomes active.')
membership_date_to = fields.Date(string='Membership End Date',
related="membership_scheme.membership_date_to",
help='Date until which membership remains active.')
_sql_constraints = [
('membership_date_greater',
'check(membership_date_to >= membership_date_from)',
'Error ! Ending Date cannot be set before Beginning Date.')
]
state = fields.Selection([
('draft', 'Draft'),
('confirm', 'Confirm'),
('cancelled', 'Cancelled')
], default='draft', string='Status')
@api.model
def create(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
class SaleConfirm(models.Model):
_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': self.partner_id.id,
'membership_date_from': record.membership_date_from,
'membership_scheme': self.order_line.product_id.id,
'sale_order_id': self.id,
}])
res = super(SaleConfirm, self).action_confirm()
return res

31
gym_mgmt_system/models/report.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class GymReport(models.Model):
_name = "gym.report"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Gym Report"
name = fields.Char(string="Name")

32
gym_mgmt_system/models/trainer_skill.py

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class TrainerSkill(models.Model):
_name = "trainer.skill"
_inherit = ["mail.thread", "mail.activity.mixin"]
_description = "Trainer Skill"
name = fields.Char(string="Name")
code = fields.Char(string="Code")

31
gym_mgmt_system/models/trainers.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class TrainerEmployee(models.Model):
_inherit = 'hr.employee'
trainer = fields.Boolean(string='Gym Trainer')
exercise_for_ids = fields.Many2many("trainer.skill",
string="Specialization")

93
gym_mgmt_system/models/workout_plan.py

@ -0,0 +1,93 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, _
class WorkoutPlan(models.Model):
_name = "workout.plan"
_inherit = ["mail.thread", "mail.activity.mixin", "image.mixin"]
_description = "Workout Plan"
_rec_name = "name"
name = fields.Char(string="Name")
workout_days_ids = fields.Many2many("workout.days", string="Workout Days")
workout_plan_option_ids = fields.One2many(
'workout.plan.option', 'order_id', 'Optional Products Lines')
def action_workout_plan(self):
""" wizard opened to create my workout plans """
wizard_form = self.env.ref('gym_mgmt_system.view_workout_plan_wizard',
False)
print(wizard_form, "fffff")
view_id = self.env['workout.plan.wizard']
vals = {
'workout_plan': self.id,
}
new = view_id.create(vals)
return {
'name': _('Assign Workout Plan'),
'type': 'ir.actions.act_window',
'res_model': 'workout.plan.wizard',
'res_id': new.id,
'view_id': wizard_form.id,
'view_type': 'form',
'view_mode': 'form',
'target': 'new',
}
class WorkoutPlanOption(models.Model):
_name = "workout.plan.option"
_description = "Workout Option"
_order = 'id'
order_id = fields.Many2one('workout.plan', 'Workout Plan Reference',
ondelete='cascade', index=True)
name = fields.Text('Description', required=True)
exercise_id = fields.Many2one('gym.exercise', 'Exercises', required=True)
equipment_ids = fields.Many2one('product.product', string='equipment',
required=True, tracking=True,
domain="[('gym_product', '!=',False)]")
sets = fields.Integer(string="Sets")
repeat = fields.Integer(string="Repeat")
class WorkoutDays(models.Model):
_name = "workout.days"
_description = "Workout Days"
_rec_name = "name"
name = fields.Char('Workout days')
class MyWorkoutPlan(models.Model):
_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")
assign_to = fields.Many2one('res.partner', string='Assign To',
domain="[('gym_member', '!=',False)]")
from_date = fields.Date(string='Date From')
to_date = fields.Date(string='Date To')

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

@ -0,0 +1,62 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_workout_plan_wizard,account.workout.plan.wizard,model_workout_plan_wizard,,1,1,1,1
hr.access_hr_employee_trainer,hr.employee user,model_hr_employee,gym_mgmt_system.group_gym_trainer,1,1,1,0
hr.access_hr_employee_member,hr.employee user,model_hr_employee,gym_mgmt_system.group_gym_member,1,0,0,0
hr.access_hr_employee_operator,hr.employee user,model_hr_employee,gym_mgmt_system.group_gym_operator,1,1,1,1
access_res_partner_trainer,res.partner,model_res_partner,gym_mgmt_system.group_gym_trainer,1,0,0,0
access_res_partner_operator,res.partner,model_res_partner,gym_mgmt_system.group_gym_operator,1,1,1,1
access_res_partner_member,res.partner,model_res_partner,gym_mgmt_system.group_gym_member,1,0,0,0
access_gym_membership_operator,account.gym.membership,model_gym_membership,gym_mgmt_system.group_gym_operator,1,1,1,1
access_gym_membership_trainer,account.gym.membership,model_gym_membership,gym_mgmt_system.group_gym_trainer,1,0,0,0
access_gym_membership_member,account.gym.membership,model_gym_membership,gym_mgmt_system.group_gym_member,1,0,0,0
access_measurement_history_operator,account.measurement.history,model_measurement_history,gym_mgmt_system.group_gym_operator,1,1,1,1
access_measurement_history_trainer,account.measurement.history,model_measurement_history,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_measurement_history_member,account.measurement.history,model_measurement_history,gym_mgmt_system.group_gym_member,1,0,0,0
access_trainer_skill_operator,account.trainer_skill,model_trainer_skill,gym_mgmt_system.group_gym_operator,1,1,1,1
access_trainer_skill_member,account.trainer_skill,model_trainer_skill,gym_mgmt_system.group_gym_member,1,0,0,0
access_trainer_skill_trainer,account.trainer_skill,model_trainer_skill,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_product_template_trainer,account.product_template,model_product_template,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_product_template_member,account.product_template,model_product_template,gym_mgmt_system.group_gym_member,1,0,0,0
access_workout_plan_operator,account.workout.plan,model_workout_plan,gym_mgmt_system.group_gym_operator,1,1,1,1
access_workout_plan_trainer,account.workout.plan,model_workout_plan,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_workout_plan_member,account.workout.plan,model_workout_plan,gym_mgmt_system.group_gym_member,1,0,0,0
access_workout_plan_option_operator,account.workout.plan.option,model_workout_plan_option,,1,1,1,1
access_workout_plan_option_trainer,account.workout.plan.option,model_workout_plan_option,,1,1,1,1
access_workout_plan_option_member,account.workout.plan.option,model_workout_plan_option,gym_mgmt_system.group_gym_member,1,0,0,0
access_workout_days_operator,account.workout.days,model_workout_days,gym_mgmt_system.group_gym_operator,1,1,1,1
access_workout_days_trainer,account.workout.days,model_workout_days,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_workout_days_member,account.workout.days,model_workout_days,gym_mgmt_system.group_gym_member,1,0,0,0
access_gym_exercise_operator,account.gym.exercise,model_gym_exercise,gym_mgmt_system.group_gym_operator,1,1,1,1
access_gym_exercise_trainer,account.gym.exercise,model_gym_exercise,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_gym_exercise_member,account.gym.exercise,model_gym_exercise,gym_mgmt_system.group_gym_member,1,0,0,0
access_exercise_for_operator,account.exercise.for,model_exercise_for,gym_mgmt_system.group_gym_operator,1,1,1,1
access_exercise_for_trainer,account.exercise.for,model_exercise_for,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_exercise_for_member,account.exercise.for,model_exercise_for,gym_mgmt_system.group_gym_member,1,0,0,0
access_my_workout_plan_operator,account.my.workout.plan,model_my_workout_plan,gym_mgmt_system.group_gym_operator,1,1,1,1
access_my_workout_plan_trainer,account.my.workout.plan,model_my_workout_plan,gym_mgmt_system.group_gym_trainer,1,1,1,1
access_my_workout_plan_member,account.my.workout.plan,model_my_workout_plan,gym_mgmt_system.group_gym_member,1,0,0,0
access_workout_plan_wizard_trainer,account.workout.plan.wizard,model_workout_plan_wizard,gym_mgmt_system.group_gym_trainer,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_workout_plan_wizard account.workout.plan.wizard model_workout_plan_wizard 1 1 1 1
3 hr.access_hr_employee_trainer hr.employee user model_hr_employee gym_mgmt_system.group_gym_trainer 1 1 1 0
4 hr.access_hr_employee_member hr.employee user model_hr_employee gym_mgmt_system.group_gym_member 1 0 0 0
5 hr.access_hr_employee_operator hr.employee user model_hr_employee gym_mgmt_system.group_gym_operator 1 1 1 1
6 access_res_partner_trainer res.partner model_res_partner gym_mgmt_system.group_gym_trainer 1 0 0 0
7 access_res_partner_operator res.partner model_res_partner gym_mgmt_system.group_gym_operator 1 1 1 1
8 access_res_partner_member res.partner model_res_partner gym_mgmt_system.group_gym_member 1 0 0 0
9 access_gym_membership_operator account.gym.membership model_gym_membership gym_mgmt_system.group_gym_operator 1 1 1 1
10 access_gym_membership_trainer account.gym.membership model_gym_membership gym_mgmt_system.group_gym_trainer 1 0 0 0
11 access_gym_membership_member account.gym.membership model_gym_membership gym_mgmt_system.group_gym_member 1 0 0 0
12 access_measurement_history_operator account.measurement.history model_measurement_history gym_mgmt_system.group_gym_operator 1 1 1 1
13 access_measurement_history_trainer account.measurement.history model_measurement_history gym_mgmt_system.group_gym_trainer 1 1 1 1
14 access_measurement_history_member account.measurement.history model_measurement_history gym_mgmt_system.group_gym_member 1 0 0 0
15 access_trainer_skill_operator account.trainer_skill model_trainer_skill gym_mgmt_system.group_gym_operator 1 1 1 1
16 access_trainer_skill_member account.trainer_skill model_trainer_skill gym_mgmt_system.group_gym_member 1 0 0 0
17 access_trainer_skill_trainer account.trainer_skill model_trainer_skill gym_mgmt_system.group_gym_trainer 1 1 1 1
18 access_product_template_trainer account.product_template model_product_template gym_mgmt_system.group_gym_trainer 1 1 1 1
19 access_product_template_member account.product_template model_product_template gym_mgmt_system.group_gym_member 1 0 0 0
20 access_workout_plan_operator account.workout.plan model_workout_plan gym_mgmt_system.group_gym_operator 1 1 1 1
21 access_workout_plan_trainer account.workout.plan model_workout_plan gym_mgmt_system.group_gym_trainer 1 1 1 1
22 access_workout_plan_member account.workout.plan model_workout_plan gym_mgmt_system.group_gym_member 1 0 0 0
23 access_workout_plan_option_operator account.workout.plan.option model_workout_plan_option 1 1 1 1
24 access_workout_plan_option_trainer account.workout.plan.option model_workout_plan_option 1 1 1 1
25 access_workout_plan_option_member account.workout.plan.option model_workout_plan_option gym_mgmt_system.group_gym_member 1 0 0 0
26 access_workout_days_operator account.workout.days model_workout_days gym_mgmt_system.group_gym_operator 1 1 1 1
27 access_workout_days_trainer account.workout.days model_workout_days gym_mgmt_system.group_gym_trainer 1 1 1 1
28 access_workout_days_member account.workout.days model_workout_days gym_mgmt_system.group_gym_member 1 0 0 0
29 access_gym_exercise_operator account.gym.exercise model_gym_exercise gym_mgmt_system.group_gym_operator 1 1 1 1
30 access_gym_exercise_trainer account.gym.exercise model_gym_exercise gym_mgmt_system.group_gym_trainer 1 1 1 1
31 access_gym_exercise_member account.gym.exercise model_gym_exercise gym_mgmt_system.group_gym_member 1 0 0 0
32 access_exercise_for_operator account.exercise.for model_exercise_for gym_mgmt_system.group_gym_operator 1 1 1 1
33 access_exercise_for_trainer account.exercise.for model_exercise_for gym_mgmt_system.group_gym_trainer 1 1 1 1
34 access_exercise_for_member account.exercise.for model_exercise_for gym_mgmt_system.group_gym_member 1 0 0 0
35 access_my_workout_plan_operator account.my.workout.plan model_my_workout_plan gym_mgmt_system.group_gym_operator 1 1 1 1
36 access_my_workout_plan_trainer account.my.workout.plan model_my_workout_plan gym_mgmt_system.group_gym_trainer 1 1 1 1
37 access_my_workout_plan_member account.my.workout.plan model_my_workout_plan gym_mgmt_system.group_gym_member 1 0 0 0
38 access_workout_plan_wizard_trainer account.workout.plan.wizard model_workout_plan_wizard gym_mgmt_system.group_gym_trainer 1 0 0 0

78
gym_mgmt_system/security/security.xml

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<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>
<record id="base.group_erp_manager" model="res.groups">
<field name="implied_ids" eval="[(4, ref('group_gym_operator'))]"/>
</record>
<!-- multi-company rule-->
<!-- <record id="gym_managment_equipment_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment Equipment Rule</field>-->
<!-- <field name="model_id" ref="model_product_template"/>-->
<!-- <field name="domain_force">[('company_id', 'in', company_ids)]</field>-->
<!-- </record>-->
<!-- <record id="gym_managment_exercise_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment 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_managment_exercise_for_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment 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_managment_measurement_history_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment 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_gym_member_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment Gym Member Rule</field>-->
<!-- <field name="model_id" ref="model_res_partner"/>-->
<!-- <field name="domain_force">[('company_id', 'in', company_ids)]</field>-->
<!-- </record>-->
<!-- <record id="gym_managment_gym_membership_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment 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_managment_trainer_skill_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment 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_managment_trainer_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment 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_managment_trainer_skill_rule" model="ir.rule">-->
<!-- <field name="name">Gym Managment Trainer skill Rule</field>-->
<!-- <field name="model_id" ref="model_trainer_skill"/>-->
<!-- <field name="domain_force">[('company_id', 'in', company_ids)]</field>-->
<!-- </record>-->
</odoo>

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/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/assign_workout_plan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
gym_mgmt_system/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
gym_mgmt_system/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

706
gym_mgmt_system/static/description/index.html

@ -0,0 +1,706 @@
<div class="container" style="padding: 1rem !important; margin-bottom: 1rem !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between" style="border-bottom: 1px solid #d5d5d5;">
<div class="my-3">
<img src="./assets/icons/logo.png" style="width: auto !important; height: 40px !important;">
</div>
<div class="my-3 d-flex align-items-center">
<div
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
</div>
</div>
</div>
</div>
<div class="container" style="padding: 0rem 1.5rem 4rem !important">
<div class="row" style="height: 900px !important;">
<div class="col-sm-12 col-md-12 col-lg-12"
style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;">
<h1
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;">
GYM Management System</h1>
<p
style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;">
GYM Management System For Managing Membership, Members, Workout Plans, etc.
</p>
<img src="./assets/screenshots/hero.gif" class="img-responsive" width="100%" height="auto" />
</div>
</div>
<div class="row">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-compass mr-2"></i>Explore this module
</h2>
<div class="row">
<div class="col-md-6">
<a href="#overview" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Overview</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Learn more about this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#features" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Features</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View features of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#screenshots" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Screenshots</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
See key screenshots of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="row" id="overview">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-pie-chart mr-2"></i>Overview
</h2>
</div>
<div class="col-mg-12 pl-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;">
In this software , provides fitness businesses the functionality needed to manage all aspects of their business and efficiently operate their studio.</p>
</div>
</p>
</div>
<div class="row" id="features">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-star mr-2"></i>Features
</h2>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Members can check their workout plans, track body measurements,access membership details</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Trainer can create workout plans to members, develop their skills</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Operator can manage trainers and members, Also Access all the membership information </h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Directly create new membership from sale order</h4>
</div>
</div>
</div>
<div class="row" id="screenshots">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-image mr-2"></i>Screenshots
</h2>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Manage Members</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Create a new member and manage all the members in gym, also check the number of measurements and memberships of members.
</p>
<img src="assets/screenshots/member.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Manage Membership Plan</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
User can create membership plans.
</p>
<img src="assets/screenshots/membership_product.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/membership_product_form.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Membership</h4>
<img src="assets/screenshots/membership.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/membership_form.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Membership from sale Order</h4>
<img src="assets/screenshots/membership_sale_order.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/membership_sale_order_form.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Measurement History
</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Automatically create BMI and BMR of member
</p>
<img src="assets/screenshots/measurement_history.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/measurement_history_form.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Manage Trainers</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Create specialization for trainer
</p <p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Create Trainer Skills
</p>
<img src="assets/screenshots/trainer.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/trainer_form_specification.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/trainer_form.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/trainer_skill.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Workout Plan</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Create Workout Plans
</p <p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Assign Workout Plans
</p>
</p <p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Create Workout Days
</p>
<img src="assets/screenshots/workout_plan.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/workout_plan_form.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/workout_plan_form_2.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/workout_plan_form_3.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/assign_workout_plan.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/assign_workout_plan_2.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/assign_workout_plan_3.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/workout_days.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Gym Measurement Report</h4>
<img src="assets/screenshots/measurement_history_form_report.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Gym Equipments</h4>
<img src="assets/screenshots/equipments.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Gym Exercises</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Create Exercise with thier attributes like benefits,steps,images etc
</p>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
- Create exercise for parts of body
</p>
<img src="assets/screenshots/exercise.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/exercise_form_benefits.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/exercise_form_steps.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/exercise_form_images.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/exercise_form_videos.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/exercise_for.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
</div>
<!-- SUGGESTED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/export_stockinfo_xls/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/export_image.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/15.0/custom_gantt_view/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/gantt_image.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/15.0/sales_credit_limit/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/credit_image.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/base_account_budget/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/budget_image.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/15.0/product_to_quotation/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/quotation_image.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/15.0/employee_documents_expiry/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/employee_image.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="left:-25px;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="right:-25px;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 SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Services</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</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: #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>
</section>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Industries</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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>
</section>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Need Help?</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-6">
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-6">
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>+91 86068 27707</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" />
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<!-- END OF FOOTER -->
</div>

43
gym_mgmt_system/views/equipments.xml

@ -0,0 +1,43 @@
<?xml version="1.0"?>
<odoo>
<record id="action_gym_equipments" model="ir.actions.act_window">
<field name="name">Equipments</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('gym_product','=','True')]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Equipment!
</p>
</field>
</record>
<record model="ir.ui.view" id="view_equipment_form_inherit">
<field name="name">product.template.inherited</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='detailed_type']" position="after">
<field name="gym_product"/>
</xpath>
</field>
</record>
<menuitem id="gym_management_root"
name="Gym Management"
sequence="10"/>
<menuitem id="gym_configuration_root"
name="Configuration"
parent="gym_management_root"
sequence="40"/>
<menuitem id="gym_equipments_menu"
name="Equipments"
parent="gym_configuration_root"
action="action_gym_equipments"
sequence="10"/>
</odoo>

93
gym_mgmt_system/views/exercise.xml

@ -0,0 +1,93 @@
<?xml version="1.0"?>
<odoo>
<record id="view_gym_exercise_form" model="ir.ui.view">
<field name="name">gym.exercise.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"/>
</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>
<record id="action_gym_exercise" model="ir.actions.act_window">
<field name="name">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>
<menuitem id="gym_exercise_menu"
name="Exercises"
parent="gym_configuration_root"
action="action_gym_exercise"
sequence="20"/>
</odoo>

31
gym_mgmt_system/views/exercise_for.xml

@ -0,0 +1,31 @@
<?xml version="1.0"?>
<odoo>
<record id="view_exercise_for_tree" model="ir.ui.view">
<field name="name">exercise.for.tree</field>
<field name="model">exercise.for</field>
<field name="arch" type="xml">
<tree string="Exercise For Tags" editable="bottom">
<field name="name"/>
</tree>
</field>
</record>
<record id="action_exercise_for" model="ir.actions.act_window">
<field name="name">Exercise For (Tags)</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>
<menuitem id="gym_exercise_for_menu"
name="Exercises For"
parent="gym_configuration_root"
action="action_exercise_for"
sequence="30"/>
</odoo>

122
gym_mgmt_system/views/measurement_history.xml

@ -0,0 +1,122 @@
<?xml version="1.0"?>
<odoo>
<record id="view_measurement_history_form" model="ir.ui.view">
<field name="name">measurement.history.form</field>
<field name="model">measurement.history</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group name="member" string="Details">
<field name="member"/>
<field name="gender"/>
<field name="age"/>
<field name="date"/>
</group>
</group>
<group>
<group name="group_lots_and_weight" string="Measurements">
<label for="weight"/>
<div class="o_row" name="weight">
<field name="weight"/>
<field name="weight_uom_name"/>
</div>
<label for="height"/>
<div class="o_row" name="height">
<field name="height"/>
<field name="height_uom_name"/>
</div>
<field name="bmi"/>
<field name="bmr"/>
</group>
</group>
<group name="body_measurement" string="Body Measurements">
<group>
<group>
<label for="neck"/>
<div class="o_row" name="neck">
<field name="neck"/>
<field name="height_uom_name"/>
</div>
<label for="biceps"/>
<div class="o_row" name="biceps">
<field name="biceps"/>
<field name="height_uom_name"/>
</div>
<label for="calf"/>
<div class="o_row" name="calf">
<field name="calf"/>
<field name="height_uom_name"/>
</div>
<label for="hips"/>
<div class="o_row" name="hips">
<field name="hips"/>
<field name="height_uom_name"/>
</div>
</group>
</group>
<group>
<group>
<label for="chest"/>
<div class="o_row" name="chest">
<field name="chest"/>
<field name="height_uom_name"/>
</div>
<label for="waist"/>
<div class="o_row" name="waist">
<field name="waist"/>
<field name="height_uom_name"/>
</div>
<label for="thighs"/>
<div class="o_row" name="thighs">
<field name="thighs"/>
<field name="height_uom_name"/>
</div>
</group>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="view_measurement_history_tree" model="ir.ui.view">
<field name="name">measurement.history.tree</field>
<field name="model">measurement.history</field>
<field name="arch" type="xml">
<tree default_order="member desc">
<field name="member"/>
<field name="gender"/>
<field name="date"/>
<field name="age"/>
</tree>
</field>
</record>
<record id="action_measurement_history" 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">tree,form,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Measurement History!
</p>
</field>
</record>
<menuitem
id="menu_measurement_history"
name="Measurement History"
parent="gym_member_root"
action="action_measurement_history"
sequence="40"/>
</odoo>

69
gym_mgmt_system/views/members.xml

@ -0,0 +1,69 @@
<?xml version="1.0"?>
<odoo>
<record id="action_gym_member" model="ir.actions.act_window">
<field name="name">Members</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('gym_member','=','True')]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Member!
</p>
</field>
</record>
<record id="view_member_form_inherit" model="ir.ui.view">
<field name="name">res.partner.inheriteds</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="after">
<field name="gym_member" />
<field name="measurement_count" invisible="1"/>
<field name="membership_count" invisible="1"/>
</xpath>
</field>
</record>
<record id="res_partner_kanban_view" model="ir.ui.view">
<field name="name">res.partner.kanban.inheritzz</field>
<field name="model">res.partner</field>
<!-- <field name="domain">[('gym_member','=','True')]</field>-->
<field name="inherit_id" ref="base.res_partner_kanban_view"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_kanban_partner_categories')]" position="replace">
<div>
<ul>
<li t-if="record.gym_member.raw_value">
Gym Member
<field name="gym_member" invisible="1" />
<li>
<div class="oe_title" style="color:Brown;font-size: 15px;">Memberships :
<field name="membership_count"/>
</div>
<div class="oe_title" style="color:Brown;font-size: 15px;">Measurements :
<field name="measurement_count"/>
</div>
</li>
</li>
</ul>
</div>
</xpath>
</field>
</record>
<menuitem
id="gym_member_root"
name="Members"
parent="gym_management_root"
sequence="10"/>
<menuitem
id="gym_member_menu"
name="Members"
parent="gym_member_root"
action="action_gym_member"
sequence="10"/>
</odoo>

77
gym_mgmt_system/views/membership.xml

@ -0,0 +1,77 @@
<?xml version="1.0"?>
<odoo>
<record id="view_membership_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"/>
<field name="membership_scheme"/>
<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>
<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"/>
<field name="membership_scheme"/>
<field name="membership_fees"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="action_gym_membership" model="ir.actions.act_window">
<field name="name">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>
<menuitem
id="menu_gym_membership"
name="Membership"
parent="gym_member_root"
action="action_gym_membership"
sequence="30"/>
</odoo>

20
gym_mgmt_system/views/membership_plan.xml

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<odoo>
<record id="action_membership_plan" model="ir.actions.act_window">
<field name="name">Membership Plan</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.template</field>
<field name="view_id" ref="membership.membership_products_tree"/>
<!-- <field name="act_window_id" ref="membership.action_membership_products"/>-->
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Trainer!
</p>
</field>
</record>
<menuitem name="Membership plan" id="menu_membership_products" parent="gym_member_root"
action="membership.action_membership_products"/>
</odoo>

72
gym_mgmt_system/views/report.xml

@ -0,0 +1,72 @@
<?xml version="1.0"?>
<odoo>
<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>
<record id="action_gym_report" model="ir.actions.act_window">
<field name="name">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>
<record id="action_measurement_history_pivot" 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>
<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" type="row"/>
</pivot>
</field>
</record>
<menuitem id="gym_report_root"
name="Reports"
parent="gym_management_root"
sequence="30"/>
<menuitem id="gym_report_menu"
name="Member Report"
parent="gym_report_root"
action="action_measurement_history_pivot"
sequence="10"/>
</odoo>

30
gym_mgmt_system/views/trainer_skill.xml

@ -0,0 +1,30 @@
<?xml version="1.0"?>
<odoo>
<record id="view_trainer_skill_tree" model="ir.ui.view">
<field name="name">trainer.skill.tree</field>
<field name="model">trainer.skill</field>
<field name="arch" type="xml">
<tree string="Trainer skill Tags" editable="bottom">
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="action_trainer_skill" model="ir.actions.act_window">
<field name="name">Trainer skill (Tags)</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">trainer.skill</field>
<field name="view_mode">tree</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Trainer skill!
</p>
</field>
</record>
</odoo>

46
gym_mgmt_system/views/trainers.xml

@ -0,0 +1,46 @@
<?xml version="1.0"?>
<odoo>
<record id="action_gym_trainer_emp" 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>
<record id="view_trainer_form_inherit" model="ir.ui.view">
<field name="name">hr.employee.inherited</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>
<menuitem
id="gym_trainer_root"
name="Trainers"
parent="gym_management_root"
sequence="20"/>
<menuitem
id="gym_trainer_menu"
name="Trainers"
parent="gym_trainer_root"
action="action_gym_trainer_emp"
sequence="10"/>
<menuitem id="gym_trainer_skill_menu"
name="Trainer skill"
parent="gym_trainer_root"
action="action_trainer_skill"
sequence="20"/>
</odoo>

153
gym_mgmt_system/views/workout_plan.xml

@ -0,0 +1,153 @@
<?xml version="1.0"?>
<odoo>
<record id="view_workout_plan_tree" model="ir.ui.view">
<field name="name">workout.plan.tree</field>
<field name="model">workout.plan</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="workout_days_ids"/>
</tree>
</field>
</record>
<record id="view_workout_plan_form" model="ir.ui.view">
<field name="name">workout.plan.form</field>
<field name="model">workout.plan</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_title">
<h1>
<field name="name" placeholder="e.g. workout plan 1"/>
</h1>
</div>
<group>
<group>
<field name="workout_days_ids" widget="many2many_tags"/>
</group>
</group>
<button name="action_workout_plan" type="object" class="btn btn-primary"
groups="gym_mgmt_system.group_gym_trainer,gym_mgmt_system.group_gym_operator"
string="Assign Workout Plan"/>
<notebook>
<page string="Exercise List" name="exercise_list">
<field name="workout_plan_option_ids">
<tree editable="bottom">
<field name="exercise_id"/>
<field name="name"/>
<field name="equipment_ids"/>
<field name="sets"/>
<field name="repeat"/>
</tree>
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="view_my_workout_plan_form" model="ir.ui.view">
<field name="name">my.workout.plan.form</field>
<field name="model">my.workout.plan</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_title">
<h1>
<field name="payment_term_id" placeholder="e.g. workout plan 1"/>
</h1>
</div>
<group col="4" colspan="6">
<field name="from_date"/>
<field name="to_date"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="action_workout_plan" model="ir.actions.act_window">
<field name="name">Workout Plan</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">workout.plan</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Workout Plan!
</p>
</field>
</record>
<record id="action_my_workout_plans" model="ir.actions.act_window">
<field name="name">My Workout Plan</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">my.workout.plan</field>
<field name="view_mode">kanban,form</field>
<field name="domain">[('assign_to.user_id', '=', uid)]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
My Workout Plan!
</p>
</field>
</record>
<menuitem id="gym_workout_root"
name="Workout"
parent="gym_management_root"
sequence="25"/>
<menuitem id="gym_workout_menu"
name="Workout Plan"
parent="gym_workout_root"
action="action_workout_plan"
sequence="10"/>
<menuitem id="gym_my_workout_menu"
name="My Workout Plan"
parent="gym_workout_root"
action="action_my_workout_plans"
sequence="20"/>
<record id="action_workout_days" model="ir.actions.act_window">
<field name="name">Workout Days (Tags)</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">workout.days</field>
<field name="view_mode">tree</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first Workout Days!
</p>
</field>
</record>
<record id="view_workout_days_tree" model="ir.ui.view">
<field name="name">workout.days.tree</field>
<field name="model">workout.days</field>
<field name="arch" type="xml">
<tree string="Workout Days Tags" editable="bottom">
<field name="name"/>
</tree>
</field>
</record>
<menuitem id="gym_workout_days_menu"
name="Workout Days"
parent="gym_workout_root"
action="action_workout_days"
sequence="30"/>
</odoo>

23
gym_mgmt_system/wizard/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###################################################################################
# Gym Management
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Shahul Faizh (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import assign_workout

45
gym_mgmt_system/wizard/assign_workout.py

@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Shahul Faiz (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class WorkoutPlanWizard(models.TransientModel):
_name = 'workout.plan.wizard'
assign_to = fields.Many2one('res.partner', string='Assign To',
domain="[('gym_member', '!=',False)]")
workout_plan = fields.Many2one('workout.plan', string='Workout Plan',
required=True, readonly=True)
from_date = fields.Date(string='Date From')
to_date = fields.Date(string='Date To')
def action_workout(self):
""" create my workout plan of assign members only"""
my_workout_plan = {
'payment_term_id': self.workout_plan.id,
'assign_to': self.assign_to.id,
'from_date': self.from_date,
'to_date': self.to_date,
}
record = self.env['my.workout.plan'].create(my_workout_plan)
return record

30
gym_mgmt_system/wizard/assign_workout.xml

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_workout_plan_wizard" model="ir.ui.view">
<field name="name">workout.plan.wizard</field>
<field name="model">workout.plan.wizard</field>
<field name="arch" type="xml">
<form string="my">
<group col="4" colspan="6">
<field name="assign_to"/>
<field name="workout_plan"/>
</group>
<group col="4" colspan="6">
<field name="from_date"/>
<field name="to_date"/>
</group>
<footer>
<button name="action_workout" string="Create" type="object" class="btn-primary"/>
</footer>
</form>
</field>
</record>
<record id="action_workout_plan_wizard" model="ir.actions.act_window">
<field name="name">Assign Workout Plan</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">workout.plan.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>
Loading…
Cancel
Save