work on diet plan

This commit is contained in:
sonal
2020-08-04 11:57:11 +05:30
parent 54472af83b
commit d32f648b75
61 changed files with 2858 additions and 0 deletions

View File

@@ -0,0 +1,166 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2019-TODAY Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

63
diet_template/README.rst Normal file
View File

@@ -0,0 +1,63 @@
=========================
Diet Template Management
=========================
The Diet Plan Template Management System module is manage Diet Plan Designing and Scheduling.
=========
Features
=========
* Diet Meals
- Create customized diet meals based on the intervals along with the quantity to be taken.
* Diet Routines
- Select multiple diet meals and you can plan a diet routine for your gym members.
* Food Items
- Configure food items along with their nutritive value.
* Diet Plan Assignment
- Easily assign a diet plan to the member.
- You can set a start date and the end date and the number of days will be automatically calculated upon start date.
- The plans in the hierarchy will get populated and assigned automatically.
* My Diet Plans
- Member can see his diet plan and check what he has to eat on a particular day.
============
Similar Apps
============
Diet Template Management
Diet Template
Diet Plan Designing and Scheduling
Diet app template
Diet plan template
Diet record template
Diet schedule template
Diet design template
Diet plan sheet template
Diet plan table template
Diet analysis template
Diet diary template
Diet food journal template
Diet food log template
Diet meal plan template
Diet meal template
Diet plan schedule template
Diet planner template
Diet planning template
Diet website template
Meals diet plan template
Odoo Diet Template
Odoo DietTemplate Management
Diet Template Management System
odoo diet plan template
Diet Template Management System in odoo
Diet plan template tool

View File

@@ -0,0 +1,4 @@
# See LICENSE file for full copyright and licensing details.
from . import models
from . import wizard

View File

@@ -0,0 +1,31 @@
# See LICENSE file for full copyright and licensing details.
{
'name': 'Diet Template',
'summary': 'Diet Plan Designing and Scheduling',
'author': 'Serpent Consulting Services Pvt. Ltd.',
'maintainer': 'Serpent Consulting Services Pvt. Ltd.',
'license': 'LGPL-3',
'category': 'Gym Management',
'website': 'http://www.serpentcs.com',
'version': '13.0.1.0.0',
'sequence': 1,
'depends': ['gym'],
'data': [
'security/ir.model.access.csv',
'views/diet_view.xml',
'views/project_view.xml',
'views/project_task_view.xml',
'views/menuitem_hide.xml',
'views/sale_order_view.xml',
'wizard/diet_schedule_view.xml',
"views/partner_view.xml",
],
'demo': [
'demo/diet_plan_demo.xml',
],
'images': ['static/description/gym2.jpg'],
'installable': True,
'price': 99,
'currency': 'EUR',
}

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
# See LICENSE file for full copyright and licensing details.
from . import diet
from . import project
from . import sale_order
from . import res_partner

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,47 @@
# See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class DietList(models.Model):
"""New model for creating diet Task."""
_name = 'diet.list'
_description = 'Information of task,interval and food items in task.'
name = fields.Char('Name')
sequence = fields.Integer("Sequence")
diet_id = fields.Many2one('diet.master', 'Diet Line')
food_item_ids = fields.One2many('diet.plan.lines', 'diet_list_id', 'Food')
class DietMaster(models.Model):
"""Information about diet plan and task in the plan and total
days of task.
"""
_name = 'diet.master'
_description = 'Diet Master'
name = fields.Char("Goal")
diet_task_ids = fields.One2many('diet.list', 'diet_id', 'Diet')
total_days = fields.Integer(
compute="_compute_calculate_total_days",
string="Total Days Of Diet Plan")
diet_plan_ids = fields.Many2many('diet.list', 'master_list_rel',
'master_id', 'diet_list_id',
string="Diet Task")
@api.depends('diet_plan_ids')
def _compute_calculate_total_days(self):
"""Calculating total days of PLan."""
for diet_master_rec in self:
diet_master_rec.total_days = \
len(diet_master_rec.diet_plan_ids.ids)
class DietPlanLines(models.Model):
_inherit = 'diet.plan.lines'
diet_list_id = fields.Many2one('diet.list', 'project task list')
diet_plan_id = fields.Many2one('project.task', 'Diet plan in task')

View File

@@ -0,0 +1,23 @@
# See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class Project(models.Model):
"""Inherited Project model for creating diet project."""
_inherit = 'project.project'
product_id = fields.Many2one('product.product', string='Client Product')
type = fields.Selection([('workout', 'Workout'), ('diet', 'Diet')], 'Type')
class Task(models.Model):
"""Inherited Project Task model for creating diet project."""
_inherit = "project.task"
_order = 'schedule_date asc'
_description = 'Details of task in diet plan.'
diet_plan_ids = fields.One2many(
'diet.plan.lines', 'diet_plan_id', 'Diet Plan')

View File

@@ -0,0 +1,18 @@
# See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
member_diet_plan = fields.Integer(
string='Diet Plan',
compute='_compute_member_diet_plan'
)
def _compute_member_diet_plan(self):
for rec in self:
rec.member_diet_plan = \
self.env['project.project'].search_count(
[('partner_id', '=', rec.id)])

View File

@@ -0,0 +1,15 @@
# See LICENSE file for full copyright and licensing details.
from odoo import api, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
@api.model
def create(self, values):
rec = super(SaleOrder, self).create(values)
if self._context.get("is_diet_sale"):
rec.action_confirm()
return rec

View File

@@ -0,0 +1,12 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_diet_list,access.diet_list,model_diet_list,base.group_user,1,1,1,1
access_diet_master,access.diet_master,model_diet_master,base.group_user,1,1,1,1
access_diet_master_trainer,access.diet_master.trainer,model_diet_master,gym.group_gym_trainer,1,1,1,1
access_diet_list_trainer,access.diet_list.trainer,model_diet_list,gym.group_gym_trainer,1,1,1,1
access_diet_master_member,access.diet_master.member,model_diet_master,gym.group_gym_member,1,0,0,0
access_diet_list_member,access.diet_list.member,model_diet_list,gym.group_gym_member,1,0,0,0
access_diet_master_operator,access.diet_master.operator,model_diet_master,gym.group_gym_operator,1,1,1,1
access_diet_list_operator,access.diet_list.operator,model_diet_list,gym.group_gym_operator,1,1,1,1
access_diet_master_manager,access.diet_master.manager,model_diet_master,gym.group_gym_manager,1,1,1,1
access_diet_list_manager,access.diet_list.manager,model_diet_list,gym.group_gym_manager,1,1,1,1
access_project_project_trainer,access.project_project.trainer,project.model_project_project,gym.group_gym_trainer,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_diet_list access.diet_list model_diet_list base.group_user 1 1 1 1
3 access_diet_master access.diet_master model_diet_master base.group_user 1 1 1 1
4 access_diet_master_trainer access.diet_master.trainer model_diet_master gym.group_gym_trainer 1 1 1 1
5 access_diet_list_trainer access.diet_list.trainer model_diet_list gym.group_gym_trainer 1 1 1 1
6 access_diet_master_member access.diet_master.member model_diet_master gym.group_gym_member 1 0 0 0
7 access_diet_list_member access.diet_list.member model_diet_list gym.group_gym_member 1 0 0 0
8 access_diet_master_operator access.diet_master.operator model_diet_master gym.group_gym_operator 1 1 1 1
9 access_diet_list_operator access.diet_list.operator model_diet_list gym.group_gym_operator 1 1 1 1
10 access_diet_master_manager access.diet_master.manager model_diet_master gym.group_gym_manager 1 1 1 1
11 access_diet_list_manager access.diet_list.manager model_diet_list gym.group_gym_manager 1 1 1 1
12 access_project_project_trainer access.project_project.trainer project.model_project_project gym.group_gym_trainer 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -0,0 +1,361 @@
<!DOCTYPE html>
<html>
<body>
<section class="container oe_dark" style="background-color: #F2F2F2;">
<div class='row'>
<div class="col-sm-12 col-12 col-lg-12">
<a class="float-right" href="https://www.serpentcs.com" target="_blank"><img
src="serpent_logo.png"/></a>
</div>
</div>
<div class="row oe_spaced justify-content-center" style="padding-left: 2%; margin-top: 0px;">
<div class="col-sm-12 col-12 col-lg-12 text-center">
<h1 class="text-primary" style="font-size: calc(14.4px + 2.5vw); font-family:
'Lato', 'Open Sans', 'Helvetica', Sans; margin-top: 0px;">
Diet Template
</h1>
</div>
</div>
<!-- If video/flow diagram is not available then skip it this portion. -->
<!-- Flow Diagram -->
<div class="row oe_spaced justify-content-center" style="padding-left: 2%; margin-top: 0px;">
<div class="col-sm-12 col-12 col-lg-12 text-center">
<!--Video Link -->
<a href="https://www.youtube.com/watch?v=sp_X8UYjb-U"
target="new"
class="oe_button oe_big bg-primary fa fa-youtube-play"
style="background-color: #21b799; margin: 4px 0px;"> View video</a>
<a href="http://serpentcs.in/product/gym-management-system"
target="new"
class="oe_button oe_big bg-primary fa"
style="background-color: #21b799; margin: 4px 0px;"> Demo of System</a>
</div>
</div>
<div class="row oe_spaced justify-content-center" style="padding-left: 2%; margin-top: 0px;">
<!-- Module Screenshots Image -->
<div class="col-sm-12 col-12 col-lg-12 text-center">
<h4 class="oe_centered text-primary" style="font-size: calc(16px + 1.3vw); font-family: 'Lato', 'Open Sans', 'Helvetica', Sans;margin: 15px; text-align: center;">
Diet Meals
</h4>
</div>
<div class="col-sm-12 col-12 col-lg-12">
<ul style="margin-left: 0%; padding-left: 5%;">
<li>
<p style="margin-right: 4px; color: black; font-size: calc(16px + 0.3vw); text-align: justify;
font-family: Lato;">Create customized diet meals based on the intervals along with the quantity to be taken.
</p>
</li>
</ul>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/meals.png" style="width: 90%;"/>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/inter.png" style="width: 90%;"/>
</div>
<div class="oe_span12 text-center">
<h4 class="oe_centered text-primary" style="font-size: calc(16px + 1.3vw); font-family: 'Lato', 'Open Sans', 'Helvetica', Sans;
margin: 15px; text-align: center;">
Diet Routines
</h4>
</div>
<div class="col-sm-12 col-12 col-lg-12">
<ul style="margin-left: 0%; padding-left: 5%;">
<li>
<p style="margin-right: 4px; color: black; font-size: calc(16px + 0.3vw); text-align: justify;
font-family: Lato;">Select multiple diet meals and you can plan a diet routine for your gym members.</p>
</li>
</ul>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/dt2.png" style="width: 90%;"/>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/plan-new.png" style="width: 90%;"/>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/tk-2.png" style="width: 90%;"/>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/in-1.png" style="width: 90%;"/>
</div>
<div class="oe_span12 text-center">
<h4 class="oe_centered text-primary" style="font-size: calc(16px + 1.3vw); font-family: 'Lato', 'Open Sans', 'Helvetica', Sans;
margin: 15px; text-align: center;">
Food Items
</h4>
</div>
<div class="col-sm-12 col-12 col-lg-12">
<ul style="margin-left: 0%; padding-left: 5%;">
<li>
<p style="margin-right: 4px; color: black; font-size: calc(16px + 0.3vw); text-align: justify;
font-family: Lato;">Configure food items along with thier nutritive value.</p>
</li>
</ul>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/food-k.png" style="width: 90%;"/>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/food-n.png" style="width: 90%;"/>
</div>
<div class="oe_span12 text-center">
<h4 class="oe_centered text-primary" style="font-size: calc(16px + 1.3vw); font-family: 'Lato', 'Open Sans', 'Helvetica', Sans;
margin: 15px; text-align: center;">
Diet Plan Assignment
</h4>
</div>
<div class="col-sm-12 col-12 col-lg-12">
<ul style="margin-left: 0%; padding-left: 5%;">
<li>
<p style="margin-right: 4px; color: black; font-size: calc(16px + 0.3vw); text-align: justify;
font-family: Lato;">Easily assign an diet plan to the member.
</p>
</li>
<li>
<p style="margin-right: 4px; color: black; font-size: calc(16px + 0.3vw); text-align: justify;
font-family: Lato;">You can set a start date and the end date
and the number of days will be automatically calculated upon start date.
</p>
</li>
<li>
<p style="margin-right: 4px; color: black; font-size: calc(16px + 0.3vw); text-align: justify;
font-family: Lato;">The plans in the hierarchy will get populated and assigned automatically.
</p>
</li>
</ul>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/wi.png" style="width: 90%;"/>
</div>
<div class="oe_span12 text-center">
<h4 class="oe_centered text-primary" style="font-size: calc(16px + 1.3vw); font-family: 'Lato', 'Open Sans', 'Helvetica', Sans;
margin: 15px; text-align: center;">
My Diet Plans
</h4>
</div>
<div class="col-sm-12 col-12 col-lg-12">
<ul style="margin-left: 0%; padding-left: 5%;">
<li>
<p style="margin-right: 4px; color: black; font-size: calc(16px + 0.3vw); text-align: justify;
font-family: Lato;">Member can see his diet plan and check what he has to eat on a particular day.
</p>
</li>
</ul>
</div>
<div class="text-center" style="margin-top: 10px; margin-bottom: 20px;">
<img class="img img-responsive center-block oe_demo oe_screenshot"
src="img/s1.png" style="width: 90%;"/>
</div>
</div>
</section>
<!--Footer-->
<section class="container oe_dark">
<div class='row justify-content-center'>
<p class="fa fa-certificate fa-1x" style="color: #1f2327; font-size: calc(13.6px + 0.3vw); font-weight: bold;
text-align: center; margin: 0px 5px; margin-top: 5px;"> Check out our
various Odoo Services below</p>
<hr style="border-bottom: #d74930 solid 1px; border-style: inset; width: 97%;"/>
</div>
<div class='row' style="margin: 0px auto;">
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/odoo-openerp-services/consulting">Odoo Consulting</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/odoo-openerp-services/offshore-development-partnership">Offshore & Onsite Development</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/community/aios-mobile-client">Odoo Mobile App Development</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/odoo-openerp-services/gap-analysis">Gap Analysis and BPR</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/odoo-packages/odoo-support-package">Support and Maintenance</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.odooqa.com/page/manual-functional-testing">Odoo Manual Testing</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/odoo-openerp-services/implementation">Odoo Implementation</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/odoo-openerp-services/hire-odoo-openerp-developer">Hire Dedicated Odoo Developer</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.odooqa.com/page/automated-functional-testing">Odoo Automated Testing</a></span><br/>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/ecommerce-integrations/magento-integration">Integration with E-Commerce</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/ecommerce-integrations/paymentech-elavon-paypal-integration">Payment Gateway Integrations</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/trainings/openerp-odoo-technical-training">Odoo Technical Training</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/trainings/openerpodoo-functional-training">Odoo Functional Training</a></span><br/>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/ecommerce-integrations/fedex-ups-usps-integration">Integration with Shipping API</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://www.serpentcs.com/services/odoo-openerp-services/installation-and-hosting">Installation & Hosting</a></span>
</div>
</div>
<div class='row justify-content-center'>
<hr style="border-bottom: #d74930 solid 1px; border-style: inset; width: 97%;"/>
<p class="fa fa-certificate fa-1x" style="color: #1f2327; font-size: calc(13.6px + 0.3vw); font-weight: bold;
text-align: center; margin: 0px 5px;"> Check out our various
Odoo Based Products</p>
<hr style="border-bottom: #d74930 solid 1px; border-style: inset; width: 97%;"/>
</div>
<div class='row' style="margin: 0px auto;">
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-coffee fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/restaurant-management-system">Restaurant Management</a></span><br/>
<span class="fa fa-cubes fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/construction-management-system">Construction Management</a></span><br/>
<span class="fa fa-map-marker fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/odoo-fieldstaff-tracking-system">Field Service Management</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-building fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/property-management-system">Property Management</a></span><br/>
<span class="fa fa-bus fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/fleet-management-systems">Fleet Management</a></span><br/>
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/spa-salon-management-system">Spa & Salone Management</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-plane fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/visa-management-system">Visa Agency Management</a></span><br/>
<span class="fa fa-stethoscope fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/healthcare-management-software">Medical ERP</a></span><br/>
<span class="fa fa-phone fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/odoo-ringcentral-integration">Ringcentral telephone integration</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-globe fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/odoo-singapore-localization">Singapore Localization</a></span><br/>
<span class="fa fa-hotel fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/hotel-management-system">Hotel Management</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-graduation-cap fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/education-management-system">School, University Management</a></span><br/>
<span class="fa fa-users fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/human-resource-management-system">Human Resource Management</a></span>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-2">
<span class="fa fa-heart fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/customer-relationship-management">Customer Relationship</a></span><br/>
<span class="fa fa-user fa-1x"> <a target="_blank" style="color: #697582; text-decoration: none; font-size: 11px;
font-weight: bold; margin-right: auto; margin-left: auto;"
href="http://serpentcs.in/product/talent-management-system">Talent Management</a></span>
</div>
</div>
<div class='row justify-content-center'>
<hr style="border-bottom: #d74930 solid 1px; border-style: inset; width: 97%;"/>
<p class="fa fa-certificate fa-1x" style="color: #1f2327; font-size: calc(13.6px + 0.3vw); font-weight: bold;
text-align: center; margin: 0px 5px;"> For any questions,
support and development contact us.</p>
<hr style="border-bottom: #d74930 solid 1px; border-style: inset; width: 97%;"/>
</div>
<div class='row justify-content-center'>
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3" style="margin: 5px auto;" align="center">
<a href="mailto:contact@serpentcs.com"
target="new"
class="oe_button bg-primary fa fa-envelope fa-1x text-center"
style="background-color: #21b799; width: 78%; font-weight: bold;"> Help! Send Mail</a>
</div>
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3" style="margin: 5px auto;" align="center">
<a href="http://www.serpentcs.com"
target="new"
class="oe_button bg-primary fa fa-globe fa-1x text-center"
style="background-color: #21b799; width: 78%; font-weight: bold;"> Browse our Services</a>
</div>
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3" style="margin: 5px auto;" align="center">
<a href="http://www.serpentcs.in"
target="new"
class="oe_button bg-primary fa fa-globe fa-1x text-center"
style="background-color: #21b799; width: 78%; font-weight: bold;"> Browse our Products</a>
</div>
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-3" style="margin: 5px auto;" align="center">
<a href="http://www.odooqa.com"
target="new"
class="oe_button bg-primary fa fa-globe fa-1x text-center"
style="background-color: #21b799; width: 78%; font-weight: bold;"> QA Services</a>
</div>
</div>
<div class='row justify-content-center' style="margin: 0px auto;">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 text-center">
<h3><span class="fa fa-whatsapp fa-1x" style="color: #697582; text-decoration: none; font-size: 13px;
font-weight: bold; margin-right: auto; margin-left: auto;"> (+91) 98793-54457, (+91) 90334-72982 </span>
<span class="fa fa-phone fa-1x" style="color: #697582; text-decoration: none; font-size: 13px;
font-weight: bold; margin-right: auto; margin-left: auto;"> +91-79-2975-0867</span>
</h3>
<span class="fa fa-hand-pointer-o fa-1x" style="color: #697582; text-decoration: none; font-size: 13px;
font-weight: bold; margin-right: auto; margin-left: auto;"> WhatsApp, Telegram or Call 24X7</span>
</div>
</div>
<div class='row justify-content-center'>
<hr style="border-bottom: #d74930 solid 1px; border-style: inset; width: 97%;"/>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 text-center">
<a target="_blank" href="https://www.facebook.com/Serpent-Consulting-Services-Pvt-Ltd-299017730141795/">
<img src="fb.jpg" style="vertical-align: middle; border-radius: 50%; width: 25px;">
</a>
<a target="_blank" href="https://twitter.com/Serpent_CS"
style="text-decoration:none;"><img src="twitter.jpg" style="vertical-align: middle; border-radius: 50%; width: 25px;">
</a>
<a target="_blank" href="https://in.linkedin.com/company/serpent-consulting-services"><img
src="in.jpg" style="vertical-align: middle; border-radius: 50%; width: 25px;"></a>
<a target="_blank" href="https://www.youtube.com/user/husendaudi123/videos"><img
src="youtube.jpg" style="vertical-align: middle; border-radius: 50%; width: 25px;"></a>
<a target="_blank" href="https://www.instagram.com/explore/tags/serpentcs/"><img
src="insta.jpg" style="vertical-align: middle; border-radius: 50%; width: 25px;"></a>
<a target="_blank" href="http://www.serpentcs.com"><img src="serpent32.png" style="vertical-align: middle; border-radius: 50%; width: 25px;"></a>
<a target="_blank" href="http://www.serpentcs.in"><img src="serpent32.png" style="vertical-align: middle; border-radius: 50%; width: 25px;"></a>
<a target="_blank" href="http://www.odooqa.com"><img src="odooqa32.png" style="vertical-align: middle; border-radius: 50%; width: 25px;"></a>
</div>
</div>
</section>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,27 @@
.scs_contactus_form{
border-radius: 0px !important;
background-color: transparent;
color: #ffffff;
border: 2px solid #ffffff;
}
.scs_contactus_form:-webkit-input-placeholder {
color: #ffffff;
}
.scs_contactus_form:-moz-placeholder { /* Firefox 18- */
color: #ffffff;
}
.scs_contactus_form::-moz-placeholder { /* Firefox 19+ */
color: #ffffff;
}
.scs_contactus_form:-ms-input-placeholder {
color: #ffffff;
}
.scs_contactus_setting{
margin-left: 0px !important;
margin-right: 0px !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

View File

@@ -0,0 +1,7 @@
<templates>
<t t-name="FieldOdooUrl" t-extend="FieldEmail">
<t t-jquery="span" t-operation="inner">
<a target="_blank" class="o_form_uri" href="#"></a>
</t>
</t>
</templates>

View File

@@ -0,0 +1,284 @@
<odoo>
<!-- Form view of Diet Plan lines -->
<record id="view_diet_plan_lines_form" model="ir.ui.view">
<field name="name">view.diet.plan.lines.form</field>
<field name="model">diet.plan.lines</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="interval"/>
</group>
<group string="Food Items">
<field name="food_item_ids" nolabel="1">
<tree editable="bottom">
<field name="food_name_id"
domain="[('is_food','=',True)]"
context="{'form_view_ref':'diet_template.view_food_item_product_form','default_is_food':True}"/>
<field name="quantity"/>
<field name="measure_unit_id"/>
</tree>
<form>
<group>
<field name="food_name_id"/>
<field name="quantity"/>
<field name="measure_unit_id"/>
</group>
</form>
</field>
</group>
</sheet>
</form>
</field>
</record>
<!-- Tree view of Diet Plan lines -->
<record id="view_diet_plan_lines_tree" model="ir.ui.view">
<field name="name">view.diet.plan.lines.tree</field>
<field name="model">diet.plan.lines</field>
<field name="arch" type="xml">
<tree>
<field name="interval"/>
<field name="food_item_ids"/>
</tree>
</field>
</record>
<!-- Action of Diet Plan lines -->
<record id="action_diet_plan_lines" model="ir.actions.act_window">
<field name="name">Diet Plan</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">diet.plan.lines</field>
<field name="binding_view_types">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Form view of Diet Plan -->
<record id="view_diet_plan_form" model="ir.ui.view">
<field name="name">view.diet.plan.form</field>
<field name="model">diet.plan</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<h1>
<field name="name"
Placeholder="e.g Diet Plan For Kids"/>
</h1>
<separator string="Diet Plan" colspan="4"/>
<field name="diet_plans_ids" nolabel="1"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- Tree view of Diet Plan -->
<record id="view_diet_plan_tree" model="ir.ui.view">
<field name="name">view.diet.plan.tree</field>
<field name="model">diet.plan</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="diet_plans_ids" widget="many2many_tags"/>
</tree>
</field>
</record>
<!-- Action of Diet Plan lines -->
<record id="action_diet_plan" model="ir.actions.act_window">
<field name="name">Diet Plans</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">diet.plan</field>
<field name="binding_view_types">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Form view of food item-->
<record id="view_item_form" model="ir.ui.view">
<field name="name">view.item.form</field>
<field name="model">food.item</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="food_name_id"
domain="[('is_food','=',True)]"
required="1"/>
<field name="quantity"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- Tree view of food item -->
<record id="view_item_tree" model="ir.ui.view">
<field name="name">view.item.tree</field>
<field name="model">food.item</field>
<field name="arch" type="xml">
<tree>
<field name="food_name_id"/>
<field name="quantity"/>
</tree>
</field>
</record>
<!-- Action of food item -->
<record id="action_food_item" model="ir.actions.act_window">
<field name="name">Food Items</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">food.item</field>
<field name="binding_view_types">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('is_food','=',True)]</field>
<field name="context">{"food_default":True}</field>
</record>
<!-- Form view of Food Product-->
<record id="view_food_item_product_form" model="ir.ui.view">
<field name="name">view.food.item.product.form</field>
<field name="model">product.template</field>
<field name="arch" type="xml">
<form>
<sheet>
<field name="image_1920"
widget="image" class="oe_avatar"/>
<div class="oe_title">
<label class="oe_edit_only"
for="name" string="Food Name"/>
<h1>
<field name="name" placeholder="Food Name"/>
</h1>
</div>
<notebook>
<page string="Nutrition Information">
<table border="1" style="width:100%; height:100%">
<tr>
<td class="text-align:center;">
<style>h4 {text-align: center;}</style>
<h4>
<separator
string="Nutrition Information"
colspan="4"/>
</h4>
</td>
</tr>
</table>
<group>
<group>
<field name="unit_id" widget="selection"
/>
<field name="calorie"/>
<field name="protein"/>
<field name="carbohydrates"/>
</group>
<group>
<field name="fat"/>
<field name="fibres"/>
<field name="sodium"/>
</group>
</group>
</page>
<page string="General Information">
<group col="4">
<field name="type"/>
<field name="list_price"/>
<field name="categ_id"/>
<field name="taxes_id"
widget="many2many_tags"/>
<field name="default_code"/>
<field name="standard_price"/>
</group>
<group string="Internal Notes">
<field name="description" nolabel="1"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- Tree View of Food Product -->
<record id="product_template_food_tree_view" model="ir.ui.view">
<field name="name">product.template.food.product.tree</field>
<field name="model">product.template</field>
<field name="priority">60</field>
<field name="arch" type="xml">
<tree string="Product">
<field name="name"/>
<field name="unit_id" widget="selection" required="1"/>
<field name="calorie"/>
<field name="protein"/>
<field name="carbohydrates"/>
<field name="fat"/>
<field name="fibres"/>
<field name="sodium"/>
</tree>
</field>
</record>
<!-- Action of Food Product -->
<record id="action_food_food_item" model="ir.actions.act_window">
<field name="name">Food Items</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.template</field>
<field name="binding_view_types">form</field>
<field name="domain">[('is_food','=',True)]</field>
<field name="context">{'default_is_food':True}</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a new Food Item.
</p>
</field>
</record>
<!-- Binding the action of Food to Kanban -->
<record id="view_food_product_kanban_bind"
model="ir.actions.act_window.view">
<field name="view_mode">kanban</field>
<field name="sequence">0</field>
<field name="view_id" ref="product.product_template_kanban_view"/>
<field name="act_window_id" ref="action_food_food_item"/>
</record>
<!-- Binding the action of Food to Tree -->
<record id="view_food_product_tree_bind"
model="ir.actions.act_window.view">
<field name="view_mode">tree</field>
<field name="sequence">1</field>
<field name="view_id" ref="product_template_food_tree_view"/>
<field name="act_window_id" ref="action_food_food_item"/>
</record>
<!-- Binding the action of Food to Form -->
<record id="view_food_product_form_bind"
model="ir.actions.act_window.view">
<field name="view_mode">form</field>
<field name="sequence">2</field>
<field name="view_id" ref="view_food_item_product_form"/>
<field name="act_window_id" ref="action_food_food_item"/>
</record>
<!--Parent Menu -->
<menuitem
id="menu_diet_main"
name="Diet"
sequence="13"
web_icon="diet_template,static/description/icon2.png"
/>
<menuitem
id="menu_food_item"
action="action_food_food_item"
parent="menu_diet_main"
sequence="5"
groups='gym.group_gym_operator'
/>
</odoo>

View File

@@ -0,0 +1,10 @@
<odoo>
<!--Project -->
<menuitem name="Project"
id="project.menu_main_pm"
groups="-project.group_project_manager,-project.group_project_user,gym.group_menu_visible"
web_icon="project,static/description/icon.png"
sequence="50"/>
</odoo>

View File

@@ -0,0 +1,57 @@
<odoo>
<!-- Inherited kanban of res_partner -->
<!-- <record id="view_member_kanban_inherit" model="ir.ui.view">
<field name="name">view.member.kanban.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="gym.member_kanban_view_new"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='color']" position="after">
<field name="task_count"/>
</xpath>
<xpath expr="//div[@class='col-md-12']/div[1]" position="before">
<div class="col-md-4 "
style="text-align: center; color:white;" role="button">
<button type="action" class="btn btn-link"
name="%(project.action_view_task)d"
style="color:white;"
context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}">
<h1>
<span t-esc="record.task_count.value"/>
</h1>
<h4>Tasks</h4>
</button>
</div>
</xpath>
</field>
</record> -->
<record id="action_diet_plan" model="ir.actions.act_window">
<field name="name">Diet Plan</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">project.project</field>
<field name="binding_view_types">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('partner_id', '=', active_id)]</field>
</record>
<record id="view_partner_diet_form_inherit" model="ir.ui.view">
<field name="name">view.diet.form.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_button_box')]" position="inside">
<button name="%(action_diet_plan)d"
class="oe_stat_button"
icon="fa-list-ul"
type="action"
attrs="{'invisible':[('is_member','=',False)]}"
>
<field name="member_diet_plan" widget="statinfo"
string="Diet Plan" attrs="{'invisible':[('is_member','=',False)]}"/>
</button>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,18 @@
<odoo>
<record id="view_project_task_form_inherit" model="ir.ui.view">
<field name="name">view.project.task.inherited</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<xpath expr="//notebook/page[@name='description_page']"
position="before">
<page string="Diet Plan"
attrs="{'invisible':[('task_type','=','workout')]}">
<field name="diet_plan_ids"/>
</page>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,350 @@
<odoo>
<menuitem id="menu_workout_main" name="Workout" sequence="3"/>
<record id="project_search_view" model="ir.ui.view">
<field name="name">view.project.search.inherited</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.view_project_project_filter"/>
<field name="arch" type="xml">
<search>
<filter name="fil_by_customer"
context="{'group_by':'partner_id'}" string="Customer"/>
</search>
</field>
</record>
<record id="project_kanban_inherit_view" model="ir.ui.view">
<field name="name">view.project.kanban.inherited</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.project_view_kanban"/>
<field name="arch" type="xml">
<kanban position="replace">
<kanban class="o_kanban_mobile" create="false" edit="false">
<field name="user_id" string="Project Manager"/>
<field name="partner_id"/>
<field name="task_count"/>
<field name="label_tasks"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_content oe_kanban_global_click o_kanban_get_form o_kanban_record_has_image_fill">
<div class="o_kanban_image_fill_left d-none d-md-block" t-attf-style="background-image:url('#{kanban_image('res.partner', 'image_128', record.partner_id.raw_value, placeholder)}')">
</div>
<div class="oe_kanban_details">
<div class="o_kanban_record_title">
<strong>
<field name="name"/>
</strong>
</div>
<div>
<field name="partner_id" string="Contact"/>
</div>
<div class="oe_kanban_bottom_right">
<img t-att-src="kanban_image('res.users', 'image_128', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" class="oe_kanban_avatar o_image_24_cover float-right"/>
</div>
<div class="o_project_kanban_boxes">
<a class="o_project_kanban_box" name="%(project.act_project_project_2_project_task_all)d" type="action">
<div>
<span class="o_value"><t t-esc="record.task_count.value"/></span>
<span class="o_label"><t t-esc="record.label_tasks.value"/></span>
</div>
</a>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</kanban>
</field>
</record>
<record id="project_tree_inherit_view" model="ir.ui.view">
<field name="name">view.project.tree.inherited</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.view_project"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="create">false</attribute>
<attribute name="edit">false</attribute>
</tree>
<field name="user_id" position="attributes">
<attribute name="string">Trainer</attribute>
</field>
<field name="partner_id" position="attributes">
<attribute name="string">Member</attribute>
</field>
<field name="name" position="attributes">
<attribute name="string">Plan Name</attribute>
</field>
<field name="partner_id" position="after">
<field name="analytic_account_id"/>
</field>
</field>
</record>
<record id="project_from_inherit_view" model="ir.ui.view">
<field name="name">view.project.form.inherited</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<form position="attributes">
<attribute name="edit">false</attribute>
<attribute name="create">false</attribute>
</form>
<xpath expr="//div[@name='options_active']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//group[@name='misc']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<field name="user_id" position="attributes">
<attribute name="string">Trainer</attribute>
</field>
<field name="partner_id" position="attributes">
<attribute name="string">Member</attribute>
</field>
</field>
</record>
<!--Action for see My Diet plan -->
<record id="action_diet_project_list" model="ir.actions.act_window">
<field name="name">All Diet Plans</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">project.project</field>
<field name="binding_view_types">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('type','=','diet'),]</field>
<field name="context">{'default_type':'diet'}</field>
</record>
<menuitem id="menu_my_diet_project_list"
action="action_diet_project_list" parent="menu_diet_main"
sequence="1"/>
<!-- *************** Diet Description********************-->
<record id="view_diet_list_form" model="ir.ui.view">
<field name="name">diet.list.form</field>
<field name="model">diet.list</field>
<field name="arch" type="xml">
<form>
<sheet>
<group colspan="4" cols="4">
<field name="name" required="1"/>
<group>
<separator string="List of Meals" colspan="4"/>
<field name="food_item_ids" nolabel="1"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_diet_list_tree" model="ir.ui.view">
<field name="name">diet.list.tree</field>
<field name="model">diet.list</field>
<field name="arch" type="xml">
<tree string="Diet Meals">
<field name="sequence" widget='handle'/>
<field name="name"/>
<!-- <field name="exercise_ids"/> -->
</tree>
</field>
</record>
<record id="view_diet_list_kanban" model="ir.ui.view">
<field name="name">diet.list.kanban</field>
<field name="model">diet.list</field>
<field name="arch" type="xml">
<kanban>
<field name="name"/>
<field name="diet_id"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div style="margin: 0 auto; top: 0; left: 0; bottom: 0; right: 0;">
<div style="padding-top:25px;padding-right:10px;padding-left:10px;">
<div>
<center>
<img src="/gym/static/image/diet.jpg"
style="width: 30%;"
alt="Contact"/>
</center>
</div>
</div>
<div style="padding-bottom:10px">
<h3 class="text-center"
style="margin-top:8px">
<t t-esc="record.name.value"/>
</h3>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="action_diet_list" model="ir.actions.act_window">
<field name="name">Diet Meals</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">diet.list</field>
<field name="binding_view_types">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{}</field>
<field name="domain">[]</field>
</record>
<menuitem id="menu_diet_list" action="action_diet_list"
name="Meals" parent="menu_diet_main" sequence="4"
groups='gym.group_gym_operator,gym.group_gym_trainer'/>
<!-- *************** Diet Description********************-->
<record id="view_diet_list_form" model="ir.ui.view">
<field name="name">diet.list.form</field>
<field name="model">diet.list</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name" required="1"/>
</group>
<separator string='Meal Interval'/>
<group>
<field name="food_item_ids" nolabel='1'/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_diet_list_tree" model="ir.ui.view">
<field name="name">diet.list.tree</field>
<field name="model">diet.list</field>
<field name="arch" type="xml">
<tree string="Diet Meals">
<field name="name"/>
</tree>
</field>
</record>
<record id="action_diet_list" model="ir.actions.act_window">
<field name="name">Diet Meals</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">diet.list</field>
<field name="binding_view_types">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{}</field>
<field name="domain">[]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to add new diet meal.
</p>
</field>
</record>
<!-- *************** Diet Plan********************-->
<record id="view_diet_form" model="ir.ui.view">
<field name="name">diet.form</field>
<field name="model">diet.master</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<h1>
<field name="name" required="1"
placeholder="e.g Weight Loss"/>
</h1>
</group>
<group>
<field name="total_days"/>
</group>
<separator string='Diet Meals'/>
<group>
<field name="diet_plan_ids" nolabel='1'/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_diet_tree" model="ir.ui.view">
<field name="name">diet.tree</field>
<field name="model">diet.master</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="diet_plan_ids"/>
</tree>
</field>
</record>
<!--Kanban view of Diet -->
<record model="ir.ui.view" id="view_workout_kanban">
<field name="name">diet.master</field>
<field name="model">diet.master</field>
<field name="arch" type="xml">
<kanban class="oe_background_grey o_kanban_dashboard o_project_kanban">
<field name="name"/>
<field name="total_days"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div style="margin: 0 auto; top: 0; left: 0; bottom: 0; right: 0;">
<div style="padding-top:25px;padding-right:10px;padding-left:10px;">
<div>
<center>
<img src="/gym/static/image/diet.jpg"
style="width: 30%;"
alt="Contact"/>
</center>
</div>
</div>
<div style="padding-bottom:10px">
<h3 class="text-center"
style="margin-top:8px">
<t t-esc="record.name.value"/>
</h3>
</div>
</div>
<div class="o_project_kanban_boxes">
<div t-if="record.total_days.raw_value"
class="o_project_kanban_box text-center"
style="background-color:#958e9a; width: 100%;">
<span class="o_value">
<t t-esc="record.total_days.value"/>
</span>
<span class="o_label">Days</span>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="action_diet" model="ir.actions.act_window">
<field name="name">Diet Plans</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">diet.master</field>
<field name="binding_view_types">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{}</field>
<field name="domain">[]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to add new diet routine.
</p>
</field>
</record>
<!--parent menu -->
<menuitem id="menu_diet" action="action_diet"
parent="menu_diet_main" sequence="3"
groups='gym.group_gym_operator,gym.group_gym_trainer'/>
</odoo>

View File

@@ -0,0 +1,36 @@
<odoo>
<record id="sale_order_form_view_inherit_diet" model="ir.ui.view">
<field name="name">sale.order.form.inherit.diet</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<field name="partner_id" position="attributes">
<attribute name="domain">
[('is_member','=?',context.get('is_diet_sale'))]
</attribute>
</field>
<field name="product_id" position="attributes">
<attribute name="domain">
[('is_food','=?',context.get('is_diet_sale')),
('type','!=','service')]
</attribute>
</field>
</field>
</record>
<record id="action_sale_order_dite" model="ir.actions.act_window">
<field name="name">Sales</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
<field name="binding_view_types">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="sale.view_order_tree"/>
<field name="context">{'is_diet_sale': True}</field>
</record>
<!-- <menuitem id="menu_sales_items" action="action_sale_order_dite"
parent="menu_diet_main" sequence="2"
groups='gym.group_gym_operator,gym.group_gym_manager'/> -->
</odoo>

View File

@@ -0,0 +1,3 @@
# See LICENSE file for full copyright and licensing details.
from . import diet_schedule

View File

@@ -0,0 +1,111 @@
# See LICENSE file for full copyright and licensing details.
from datetime import datetime, timedelta
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
class DietSchedule(models.TransientModel):
"""object for taking information about Diet schedule."""
_name = 'diet.scheduling'
_description = 'Diet Schedule'
member_id = fields.Many2one('res.partner', string='Member')
goal_id = fields.Many2one('diet.master', string='Diet Plan')
total_days = fields.Integer(string="Total Days Of Plan",
compute='_compute_total_days')
start_date = fields.Date(string='Start Date',
default=datetime.strftime(
datetime.now(), DEFAULT_SERVER_DATE_FORMAT))
end_date = fields.Date(string='End Date')
@api.onchange('member_id')
def _onchange_member_id(self):
if self.env.user.has_group('gym.group_gym_trainer'):
partner_list = []
calendar_event_ids = self.env['calendar.event'].search(
[('trainer_id.user_id', '=', self.env.user.id)])
for rec in calendar_event_ids:
partner_list += rec.partner_ids.ids
return {'domain': {
'member_id': [('id', 'in', partner_list)]}}
return {}
@api.onchange('goal_id', 'start_date')
def _onchange_total_diet_plan_days(self):
"""Method for assign total days based on goal."""
# End Date assign
if not self.total_days:
self.end_date = datetime.strftime(
datetime.now(), DEFAULT_SERVER_DATE_FORMAT)
elif self.start_date:
self.end_date = \
self.start_date + timedelta(days=self.total_days - 1)
@api.depends('goal_id', 'start_date')
def _compute_total_days(self):
# Set the total Days
self.total_days = self.goal_id.total_days
def schedule_project(self):
"""Method for assign workout project to member."""
project = self.env['project.project']
project_task = self.env['project.task']
user_obj = self.env['res.users']
project_kanban = self.env.ref('project.view_project_kanban', False)
for diet_schedule_rec in self:
user_rec = user_obj.search(
[('partner_id', '=', diet_schedule_rec.member_id.id)])
if not user_rec:
raise ValidationError(_('Please make the customer as user'))
elif not diet_schedule_rec.total_days:
raise ValidationError(_('You can\'t created diet schedule '
'with total days of zero.'))
else:
# Creating the project
val = {
'name': diet_schedule_rec.member_id.name + "'s " +
diet_schedule_rec.goal_id.name + ' Schedule',
'type': 'diet',
'partner_id': diet_schedule_rec.member_id.id
}
project_id = project.create(val)
start_tm = diet_schedule_rec.start_date
for task_rec in diet_schedule_rec.goal_id.diet_plan_ids:
interval_list = []
# loop on diet paln lines
for diet_line in task_rec.food_item_ids:
food_list = []
# loop omn food items
for food_rec in diet_line.food_item_ids:
food_list.append((0, 0, {
'food_name_id': food_rec.food_name_id.id,
'quantity': food_rec.quantity
}))
interval_list.append((0, 0, {
'interval': diet_line.interval,
'food_item_ids': food_list
}))
# creating task and assign it to project
project_task.create({'name': task_rec.name + " Plan ",
'project_id': project_id.id,
'diet_plan_ids': interval_list,
'schedule_date': start_tm,
'user_id': user_rec.id,
'sequence': task_rec.sequence,
'task_type': 'diet'
})
start_tm = start_tm + timedelta(days=1)
return {
'type': 'ir.actions.act_window',
'domain': [('id', '=', project_id.id)],
'binding_view_types': 'form',
'view_mode': 'kanban,tree,form',
'res_model': 'project.project',
'view_id': project_kanban.id,
'views': [(project_kanban.id, 'kanban'), (False, 'form')],
'context': dict(create=False),
'target': 'new'
}

View File

@@ -0,0 +1,46 @@
<odoo>
<!-- Form view of Diet schedule -->
<record id="view_diet_schedule_form" model="ir.ui.view">
<field name="name">view.diet.schedule.form</field>
<field name="model">diet.scheduling</field>
<field name="arch" type="xml">
<form>
<group colspan="4" col="4">
<field name="member_id"
options="{'no_create': True, 'no_open': True}"
required="1"
domain="[('is_member','=',True)]"
context="{'default_is_member':True}"/>
<field name="start_date" required="1"/>
<field name="goal_id"
options="{'no_create': True, 'no_open': True}"
required="1"/>
<field name="end_date" readonly="1"/>
<field name="total_days"/>
</group>
<footer>
<button name="schedule_project" type="object"
string="Create Schedule" class="oe_highlight"/>
<button special="cancel" string="Cancel"/>
</footer>
</form>
</field>
</record>
<!-- Action of Diet schedule Wizard -->
<record id="action_diet_schedule" model="ir.actions.act_window">
<field name="name">Assign Diet Plan</field>
<field name="res_model">diet.scheduling</field>
<field name="binding_view_types">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="view_diet_schedule_form"/>
</record>
<!-- Menu of Diet schedule Wizard -->
<menuitem id="menu_diet_schedule" action="action_diet_schedule"
parent="menu_diet_main" sequence="2"
groups='gym.group_gym_operator,gym.group_gym_trainer'/>
</odoo>