@ -1,18 +0,0 @@ |
|||
POS Kitchen Screen Dashboard |
|||
============================ |
|||
POS Kitchen Screen Dashboard |
|||
|
|||
Installation |
|||
============ |
|||
- www.odoo.com/documentation/15.0/setup/install.html |
|||
- Install our custom addon |
|||
|
|||
Configuration |
|||
============= |
|||
|
|||
No additional configurations needed |
|||
|
|||
Credits |
|||
======= |
|||
Developer: Fawas V15 @ cybrosys, Contact: odoo@cybrosys.com |
|||
|
@ -1,22 +0,0 @@ |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<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 models |
@ -1,59 +0,0 @@ |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<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': "POS Kitchen Screen Dashboard", |
|||
'version': "15.0.1.0.0", |
|||
'category': "Tools", |
|||
'summary': """ |
|||
Point of sale Kitchen Screen Dashboard |
|||
""", |
|||
'description': """ |
|||
Point of sale Kitchen Screen Dashboard |
|||
""", |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'website': "https://www.cybrosys.com", |
|||
'data': [ |
|||
'security/pos_kitchengroup.xml', |
|||
'views/dashboard_menu_view.xml', |
|||
'views/user_views.xml' |
|||
], |
|||
'images': ['static/description/banner.png'], |
|||
'depends': [ |
|||
'web', |
|||
'point_of_sale', |
|||
'pos_restaurant' |
|||
], |
|||
"assets": { |
|||
"web.assets_backend": [ |
|||
"pos_dashboard_ks/static/src/js/dashboard.js", |
|||
"pos_dashboard_ks/static/src/css/custom.css", |
|||
], |
|||
'web.assets_qweb': [ |
|||
"pos_dashboard_ks/static/src/xml/dashboard_template.xml", |
|||
], |
|||
}, |
|||
'license': 'LGPL-3', |
|||
'installable': True, |
|||
'application': False, |
|||
'auto_install': False, |
|||
} |
@ -1,7 +0,0 @@ |
|||
## Module <pos_dashboard_ks> |
|||
|
|||
#### 23.09.2022 |
|||
#### Version 15.0.0.0 |
|||
|
|||
##### Initial Commit for pos_dashboard_ks |
|||
|
@ -1,23 +0,0 @@ |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<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 pos_order |
|||
from . import res_users |
@ -1,69 +0,0 @@ |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<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 models, fields, api |
|||
import logging |
|||
|
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class PosOrder(models.Model): |
|||
_inherit = "pos.order" |
|||
|
|||
start_date = fields.Datetime(string="Start date") |
|||
end_date = fields.Datetime(string="End date") |
|||
dashboard_state = fields.Char(compute="compute_dashboard_state", store=True, default="pending") |
|||
|
|||
@api.depends('lines.dashboard_state') |
|||
def compute_dashboard_state(self): |
|||
for order in self: |
|||
order.dashboard_state = 'pending' |
|||
if len(order.lines.filtered(lambda r: r.dashboard_state == 'in_progress')) > 0: |
|||
order.dashboard_state = 'in_progress' |
|||
if len(order.lines.filtered(lambda r: r.dashboard_state == 'done')) == len(order.lines): |
|||
order.dashboard_state = 'done' |
|||
|
|||
|
|||
class PosOrderLine(models.Model): |
|||
_inherit = "pos.order.line" |
|||
|
|||
start_date = fields.Datetime(string="Start date") |
|||
end_date = fields.Datetime(string="End date") |
|||
dashboard_state = fields.Selection(compute="compute_dashboard_state", store=True, |
|||
selection=[('pending', 'Pending'), ('in_progress', 'In progres'), |
|||
('done', 'Done')], default="pending") |
|||
|
|||
@api.depends('start_date', 'end_date') |
|||
def compute_dashboard_state(self): |
|||
for line in self: |
|||
line.dashboard_state = 'pending' |
|||
if line.start_date: |
|||
line.dashboard_state = 'in_progress' |
|||
if line.end_date: |
|||
line.dashboard_state = 'done' |
|||
if line.start_date and line.end_date: |
|||
time_delta = (line.end_date - line.start_date) |
|||
|
|||
def state_change(self, state): |
|||
if 'start_date' in state: |
|||
self.start_date = state['start_date'] |
|||
if 'end_date' in state: |
|||
self.end_date = state['end_date'] |
@ -1,28 +0,0 @@ |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<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 models, fields |
|||
|
|||
|
|||
class ResUsers(models.Model): |
|||
_inherit = "res.users" |
|||
|
|||
kitchen_category_ids = fields.Many2many(comodel_name="pos.category", string="Kitchen categories") |
|||
pos_config_ids = fields.Many2many(comodel_name="pos.config", string="POS") |
@ -1,10 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<record model="res.groups" id="group_pos_dashboard"> |
|||
<field name="name">POS Kitchen Screen</field> |
|||
<field name="category_id" ref="base.module_category_usability"/> |
|||
<field name="comment">POS Kitchen Screen Access</field> |
|||
</record> |
|||
|
|||
</odoo> |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 310 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 576 B |
Before Width: | Height: | Size: 733 B |
Before Width: | Height: | Size: 911 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 878 B |
Before Width: | Height: | Size: 653 B |
Before Width: | Height: | Size: 905 B |
Before Width: | Height: | Size: 839 B |
Before Width: | Height: | Size: 427 B |
Before Width: | Height: | Size: 627 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 988 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 6.5 MiB |
Before Width: | Height: | Size: 179 KiB |
Before Width: | Height: | Size: 119 KiB |
Before Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 3.4 KiB |
@ -1,617 +0,0 @@ |
|||
<div class="container" style="padding: 4rem 1.5rem !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;"> |
|||
POS Kitchen Screen</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;"> |
|||
Manage Kitchen Orders for POS |
|||
</p> |
|||
<img src="images/kitchen.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> |
|||
<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 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;"> |
|||
With this module you can manage your kitchen orders. |
|||
By installing this module you can give access to the desired user so that you can view the kitchen screen from the POS window. Also, you can specify which POS to show on the kitchen screen. |
|||
You can also specify which product category should be shown there..</p> |
|||
|
|||
</div> |
|||
</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;"> |
|||
Easy to manage Kitchen Orders.</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
View POS orders by State.</p> |
|||
</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;"> |
|||
Single Tap State Change</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
You can change the State of Order from the Kitchen Screen.</p> |
|||
</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;"> |
|||
Item Notes</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
View Ordered item Notes from the Kitchen Screen.</p> |
|||
</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"> |
|||
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> |
|||
<i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i> Enable Debug mode. |
|||
</h3> |
|||
<h4 class="mt-2" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
POS Kitchen Screen Access</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
After installation, give the user access to 'POS Kitchen Screen' from user settings.</p> |
|||
|
|||
<img src="images/kitchen_access.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</div> |
|||
|
|||
<div class="col-lg-12 my-2"> |
|||
<h3 class="alert" style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;"> |
|||
<i class="fa fa-check-circle-o" style="width:40px; color:#07B700"></i> Refresh the Page. |
|||
</h3> |
|||
<h4 class="mt-2" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Kitchen Screen Configuration</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
After giving access for the pos kitchen screen, Restart the page to see 'POS Kitchen Dashboard' after the Preference page Tab. |
|||
</p> |
|||
<ul> |
|||
<li> |
|||
Here you can provide the product category and POS that needs to be shown in the POS Kitchen Screen. |
|||
</li> |
|||
</ul> |
|||
|
|||
<img src="images/kitchen_config.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</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;"> |
|||
Open POS</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
On POS Window click on the 'Kitchen Screen' menu.</p> |
|||
<ul> |
|||
<li> |
|||
The Created POS orders will display here under the Order State. |
|||
</li> |
|||
<li> |
|||
You can Change the state to Preparing by just clicking Start button inside the Order. |
|||
|
|||
</li> |
|||
<li> |
|||
You can Change the state to Done by clicking Done button for every order line inside the Box. |
|||
|
|||
</li> |
|||
</ul> |
|||
<img src="images/kitchen_dashboard.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</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;"> |
|||
Item Notes</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
By clicking on the notes icon that comes after the product name, you will see the item notes that are created when the order is placed.</p> |
|||
<img src="images/item_note.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/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/1.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/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/2.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/dynamic_accounts_report/" 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/3.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/hr_payroll_community/" 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/4.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/product_barcode/" 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/5.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/inventory_barcode_scanning/" |
|||
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/6.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 & 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-4"> |
|||
<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-4"> |
|||
<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>WhatsApp</a> |
|||
</div> |
|||
<div class="col-lg-4"> |
|||
<a href="mailto:info@cybrosys.com" target="_blank" class="btn btn-block deep_hover" |
|||
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i |
|||
class="fa fa-envelope mr-2"></i>info@cybrosys.com</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> |
@ -1,255 +0,0 @@ |
|||
.o_content.kitchen { |
|||
background: rgb(62,146,255); |
|||
background: linear-gradient(90deg, rgba(62,146,255,1) 0%, rgba(28,127,255,1) 100%); |
|||
} |
|||
|
|||
.o_content.kitchen .btn { |
|||
border-radius: 5px; |
|||
} |
|||
.kitchen_container{ |
|||
padding:15px; |
|||
position: relative; |
|||
|
|||
} |
|||
.dashboard{ |
|||
background: #c3dfe3; |
|||
|
|||
} |
|||
|
|||
.kitchen_grid{ |
|||
float: left; |
|||
width: 33.33%; |
|||
text-align: center; |
|||
margin-top: -13px; |
|||
} |
|||
.title { |
|||
padding: 15px; |
|||
color:#fff; |
|||
|
|||
} |
|||
.order_name{ |
|||
color:inherit !important; |
|||
} |
|||
.recipie_description{ |
|||
color: black; |
|||
padding: 8px; |
|||
} |
|||
.o_content.kitchen .recipie_container, .o_content.kitchen .note_container { |
|||
background: #fff; |
|||
padding: 15px; |
|||
margin: 15px; |
|||
border-radius: 5px; |
|||
} |
|||
|
|||
.o_content.kitchen .recipie_container .icon-close, .o_content.kitchen .note_container .icon-close { |
|||
position: relative; |
|||
text-align: right; |
|||
font-size: 1.5rem; |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.o_content.kitchen .recipie_container .icon-close-container, .o_content.kitchen .note_container .icon-close-container { |
|||
position: relative; |
|||
text-align: right; |
|||
margin-bottom: -15px; |
|||
} |
|||
.o_content.kitchen .show_receipie, .o_content.kitchen .show_note { |
|||
cursor: pointer; |
|||
color: #1d80ff; |
|||
} |
|||
|
|||
.o_content.kitchen .show_note_disabled { |
|||
cursor: pointer; |
|||
color: #ccc; |
|||
} |
|||
|
|||
.o_content.kitchen .recipie_container .recipie_wrapper, .o_content.kitchen .note_container .note_wrapper { |
|||
display: flex; |
|||
place-content: row; |
|||
} |
|||
|
|||
.o_content.kitchen .recipie_container .recipie_wrapper .product_image img { |
|||
max-width: 400px; |
|||
} |
|||
|
|||
.o_content.kitchen .recipie_container .recipie_wrapper .product_image { |
|||
margin-right: 15px; |
|||
} |
|||
|
|||
.i_content.kitchen .badge { |
|||
margin: 1px 2px 1px 0; |
|||
border-radius: 4px; |
|||
padding: 4px 7px; |
|||
padding-bottom: 6px; |
|||
font-weight: bold; |
|||
} |
|||
.heading_grid{ |
|||
border-radius: 15px; |
|||
background: teal; |
|||
position: sticky; |
|||
top: 0; |
|||
|
|||
} |
|||
.note_body{ |
|||
background: #bad6d9; |
|||
margin-top: 160px; |
|||
|
|||
} |
|||
.o_content.kitchen h3 { |
|||
color: #fff; |
|||
} |
|||
.title_wrapper_cont{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
} |
|||
.order_ref{ |
|||
font-size:13px; |
|||
} |
|||
.content{ |
|||
padding-left: 15px; |
|||
padding-right: 15px; |
|||
} |
|||
.badge{ |
|||
border: none !important; |
|||
} |
|||
.badge-light { |
|||
|
|||
color: #63666e !important; |
|||
background-color: #e7e7e7 !important; |
|||
padding: 6px 14px !important; |
|||
border-radius: 25px !important; |
|||
border: none !important; |
|||
} |
|||
.kitchen_order { |
|||
border: 1px solid #ccc; |
|||
margin: 10px; |
|||
min-width: 550px; |
|||
max-width: 600px; |
|||
background: #fff; |
|||
border-radius: 5px; |
|||
box-shadow: 2px 2px 3px #ccc; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
} |
|||
.kitchen_grid table thead td { |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.kitchen_grid table tbody td { |
|||
color: #888; |
|||
font-size: 15px; |
|||
} |
|||
|
|||
.kitchen_grid table thead td.qty-column, |
|||
.kitchen_grid table tbody td.qty-column { |
|||
max-width: 80px; |
|||
} |
|||
|
|||
.kitchen_grid table tr td { |
|||
text-align: center; |
|||
} |
|||
|
|||
.kitchen_grid table tr td.name-column { |
|||
text-align: left; |
|||
} |
|||
|
|||
.kitchen_grid table tr td.name-column .text { |
|||
font-size: 13px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.kitchen_order .title_wrapper { |
|||
border-bottom: 1px solid #ccc; |
|||
text-align: center; |
|||
} |
|||
.title_wrapper { |
|||
padding: 15px 15px 5px 0px; |
|||
text-align: left; |
|||
} |
|||
|
|||
.kitchen_order .title_wrapper .col { |
|||
padding-left: 5px; |
|||
padding-right: 5px; |
|||
} |
|||
|
|||
.kitchen_order .title { |
|||
font-family: "Lato", "Open Sans", "Helvetica", Sans; |
|||
text-align: center; |
|||
font-size: 18px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.kitchen_order .pos-reference { |
|||
font-size: 12px; |
|||
font-weight: bold; |
|||
} |
|||
.waiter{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
padding: 0px 15px 15px 15px; |
|||
} |
|||
.kitchen_order .waiter { |
|||
font-size: 12px; |
|||
font-weight: bold; |
|||
} |
|||
.btn_action{ |
|||
padding: 3px 10px; |
|||
border-radius: 5px; |
|||
} |
|||
.badge_state{ |
|||
width:75px; |
|||
} |
|||
.kitchen_order .content { |
|||
margin-top: 15px; |
|||
padding-bottom: 10px; |
|||
border-bottom: 1px solid #ccc; |
|||
} |
|||
|
|||
|
|||
.kitchen_order .footer { |
|||
position: relative; |
|||
right: 0; |
|||
bottom: 0px; |
|||
left: 0; |
|||
z-index: 1030; |
|||
padding-top: 15px; |
|||
} |
|||
|
|||
.kitchen_grid { |
|||
padding: 0px 1px; |
|||
} |
|||
|
|||
.kitchen_grid table { |
|||
width:100%; |
|||
table-layout: auto; |
|||
overflow-wrap: break-word; |
|||
} |
|||
|
|||
.o_content.kitchen .options_container { |
|||
margin: 5px 15px; |
|||
background: #fff; |
|||
padding: 5px 15px; |
|||
border-radius: 3px; |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.o_content.kitchen .options_container .options_body { |
|||
padding: 15px 0px; |
|||
} |
|||
|
|||
.o_content.kitchen .options_container .chevron-icons { |
|||
float: right; |
|||
} |
|||
|
|||
.o_content.kitchen .options_container .options_body button { |
|||
background: #ccc; |
|||
color: #000; |
|||
border: none; |
|||
border-radius: 2px; |
|||
padding: 5px 10px; |
|||
} |
|||
|
|||
.o_content.kitchen .options_container .options_body button.active { |
|||
background: #2484ff; |
|||
color: #fff; |
|||
} |
@ -1,179 +0,0 @@ |
|||
odoo.define('pos_dashboard_ks.dashboard_kanban', function (require) { |
|||
"use strict"; |
|||
|
|||
var AbstractAction = require('web.AbstractAction'); |
|||
var core = require('web.core'); |
|||
var session = require('web.session'); |
|||
var QWeb = core.qweb; |
|||
var DashboardKanban = AbstractAction.extend({ |
|||
template: 'dashboard_template', |
|||
events:{ |
|||
'click .start_order_line': '_onStartOrEndOrderLine', |
|||
'click .end_order_line': '_onStartOrEndOrderLine', |
|||
'click .show_note': '_onShowNote', |
|||
}, |
|||
show_pending_orders: true, |
|||
show_in_progress_orders: true, |
|||
show_done_orders: true, |
|||
category_ids: [], |
|||
pos_config_ids: [], |
|||
|
|||
|
|||
init: function(parent, action) { |
|||
this._super(parent, action); |
|||
}, |
|||
|
|||
start: function() { |
|||
var self = this; |
|||
this._rpc({ |
|||
model: 'res.users', |
|||
method: 'search_read', |
|||
args: [[['id', '=', session.uid]], ['kitchen_category_ids']], |
|||
args: [[['id', '=', session.uid]], ['kitchen_category_ids', 'pos_config_ids']], |
|||
}).then(function (data) { |
|||
self.category_ids = data[0].kitchen_category_ids; |
|||
self.pos_config_ids = data[0].pos_config_ids; |
|||
self.load_data(); |
|||
}); |
|||
setInterval(function() { |
|||
self.load_data(); |
|||
}, 30000); |
|||
}, |
|||
|
|||
load_data: function () { |
|||
var self = this; |
|||
if ($('.dashboard_container').length === 0) { |
|||
self.$('.kanban_view').html(QWeb.render('dashboard_orders', {})); |
|||
} |
|||
var today = new Date(); |
|||
var dd = String(today.getDate()).padStart(2, '0'); |
|||
var mm = String(today.getMonth() + 1).padStart(2, '0'); |
|||
var yyyy = today.getFullYear(); |
|||
|
|||
today = yyyy + '-' + mm + '-' + dd; |
|||
var fields = ['id', 'dashboard_state', 'name', 'start_date', 'user_id', 'pos_reference', 'table_id', 'create_date', 'customer_count']; |
|||
self._rpc({ |
|||
model: 'pos.order.line', |
|||
method: 'search_read', |
|||
args: [[ |
|||
['create_date', '>=', today], |
|||
['product_id.pos_categ_id.id', 'in', self.category_ids], |
|||
['order_id.session_id.config_id.id', 'in', self.pos_config_ids]], |
|||
['dashboard_state', 'full_product_name', 'qty', 'order_id', 'product_id', 'note'] |
|||
], |
|||
}).then(function(lines) { |
|||
console.log('lim', lines); |
|||
self._rpc({ |
|||
model: 'pos.order', |
|||
method: 'search_read', |
|||
args: [[['create_date', '>=', today], ['dashboard_state', '=', ['pending', 'in_progress', 'done']]], fields], |
|||
}).then(function(orders) { |
|||
orders.forEach(function(order) { |
|||
order.user_id = order.user_id && order.user_id.length > 0 ? order.user_id[1] : ''; |
|||
order.table_id = order.table_id && order.table_id.length > 0 ? order.table_id[1] : ''; |
|||
order.create_date = self.convertDateToLocale(new Date(order.create_date)); |
|||
}); |
|||
if (self.show_pending_orders) { |
|||
self.getPendingOrders(lines, orders); |
|||
} |
|||
if (self.show_in_progress_orders) { |
|||
self.getInProgressOrders(lines, orders); |
|||
} |
|||
if (self.show_done_orders) { |
|||
self.getDoneOrders(lines, orders); |
|||
} |
|||
|
|||
}); |
|||
|
|||
}); |
|||
|
|||
}, |
|||
|
|||
convertDateToLocale: function(date) { |
|||
var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000); |
|||
var offset = date.getTimezoneOffset() / 60; |
|||
var hours = date.getHours(); |
|||
newDate.setHours(hours - offset); |
|||
return newDate.toLocaleString(); |
|||
}, |
|||
getPendingOrders: function(lines, orders) { |
|||
var self = this; |
|||
var all_orders = this.getOrdersWithLines(orders, lines); |
|||
orders = all_orders.filter((o) => o.dashboard_state === 'pending'); |
|||
var processing_orders = all_orders.filter((o) => o.dashboard_state === 'in_progress'); |
|||
var done_orders = all_orders.filter((o) => o. dashboard_state === 'done'); |
|||
|
|||
this.$('.kitchen_grid.pending .pending_content').html(QWeb.render('dashboard_orders', { |
|||
orders: orders |
|||
})); |
|||
|
|||
this.$('.kitchen_grid.prepare .preparing_content').html(QWeb.render('dashboard_orders', { |
|||
orders: processing_orders |
|||
})); |
|||
|
|||
this.$('.kitchen_grid.done .done_content').html(QWeb.render('dashboard_orders', { |
|||
orders: done_orders |
|||
})); |
|||
|
|||
}, |
|||
|
|||
getInProgressOrders: function(lines, orders) { |
|||
var self = this; |
|||
orders = this.getOrdersWithLines(orders, lines); |
|||
orders = orders.filter((order) => { |
|||
const in_progress_lines = order.lines.filter((line) => line.dashboard_state === 'in_progress'); |
|||
const pending_lines = order.lines.filter((line) => line.dashboard_state === 'pending'); |
|||
const done_lines = order.lines.filter((line) => line.dashboard_state === 'done'); |
|||
return (in_progress_lines.length > 0) || (pending_lines.length > 0 && done_lines.length > 0); |
|||
}); |
|||
}, |
|||
|
|||
|
|||
|
|||
getDoneOrders: function(lines, orders) { |
|||
var self = this; |
|||
orders = this.getOrdersWithLines(orders, lines); |
|||
orders = orders.filter((order) => { |
|||
return order.lines.filter((line) => line.dashboard_state !== 'done').length === 0; |
|||
}); |
|||
}, |
|||
getOrdersWithLines: function(orders, lines) { |
|||
orders.forEach(function(order) { |
|||
order.lines = lines.filter((line) => line.order_id[0] === order.id); |
|||
}); |
|||
orders = orders.filter((order) => order.lines.length > 0); |
|||
return orders; |
|||
}, |
|||
_onStartOrEndOrderLine: function (ev) { |
|||
var today = new Date(); |
|||
var date = today.getFullYear()+'-'+String(today.getMonth()+1).padStart(2, '0') + '-'+String(today.getDate()).padStart(2, '0'); |
|||
var time = String(today.getHours()).padStart(2, '0') + ":" + String(today.getMinutes()).padStart(2, '0') + ":" + String(today.getSeconds()).padStart(2, '0'); |
|||
var dateTime = date+' '+time; |
|||
var self = this; |
|||
ev.stopPropagation(); |
|||
var values = {} |
|||
var id = $(ev.currentTarget).parent().data( "id"); |
|||
values[$(ev.currentTarget).data( "type") === 'start' ? 'start_date' : 'end_date'] = dateTime; |
|||
|
|||
this._rpc({ |
|||
model: 'pos.order.line', |
|||
method: 'state_change', |
|||
args: [[id], values], |
|||
}).then(function () { |
|||
self.load_data(); |
|||
}); |
|||
}, |
|||
_onShowNote: function (ev) { |
|||
var note = $(ev.currentTarget).data( "note"); |
|||
var html_data = '<div class="icon-close-container"><div class="recipie_description">' + note + '</div>'; |
|||
html_data += '</div>'; |
|||
self.$('.note_container').html(html_data); |
|||
self.$('.note_container').show(); |
|||
|
|||
}, |
|||
|
|||
|
|||
}); |
|||
|
|||
core.action_registry.add("dashboard_kanban", DashboardKanban); |
|||
}); |
@ -1,137 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
|
|||
<templates xml:space="preserve"> |
|||
<t t-name="dashboard_template"> |
|||
<div class="o_action o_view_controller"> |
|||
<div class="o_content dashboard"> |
|||
<div class="kitchen_container row"> |
|||
<div class="kitchen_grid pending col-lg-4 col-12"> |
|||
<div class="heading_grid"> |
|||
<h3 class="title">Order</h3> |
|||
</div> |
|||
<div class="pending_content"></div> |
|||
</div> |
|||
<div class="kitchen_grid prepare col-lg-4 col-12"> |
|||
<div class="heading_grid"> |
|||
<h3 class="title">Preparing</h3> |
|||
</div> |
|||
<div class="preparing_content"></div> |
|||
</div> |
|||
|
|||
<div class="kitchen_grid done col-lg-4 col-12"> |
|||
<div class="heading_grid"> |
|||
<h3 class="title">Done</h3> |
|||
</div> |
|||
<div class="done_content"></div> |
|||
</div> |
|||
<hr/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
<t t-name="dashboard_orders"> |
|||
<div class="row"> |
|||
<t t-if="orders"> |
|||
<t t-foreach="orders" t-as="order"> |
|||
<div class="kitchen_order"> |
|||
<div class="title_wrapper"> |
|||
<div class="title_wrapper_cont"> |
|||
|
|||
<div class="title order_name"> |
|||
<t t-esc="order.name"/> |
|||
<span>- <t t-esc="order.table_id"/></span> |
|||
</div> |
|||
<div class="pos-reference text-left"> |
|||
|
|||
<span class="badge badge-light mb-1 d-block">Guests: <t t-esc="order.customer_count"/></span> |
|||
<span class="badge badge-light d-block order_ref"><t t-esc="order.pos_reference" /></span> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="content"> |
|||
<table class="table-striped"> |
|||
<thead> |
|||
<tr> |
|||
<td class="name-column">Items</td> |
|||
<td class="qty-column">Qty</td> |
|||
<td>State</td> |
|||
<td></td> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<t t-foreach="order.lines" t-as="line"> |
|||
<tr> |
|||
<td class="name-column"> |
|||
<div> |
|||
<span title="Recipie" t-att-data-product="line.product_id" |
|||
class="show_receipie"> |
|||
<i class="fa fa-clock-o" |
|||
t-if="line.dashboard_state == 'pending'"></i> |
|||
<i class="fa fa-hourglass-end" |
|||
t-if="line.dashboard_state == 'in_progress'"></i> |
|||
<i class="fa fa-check-circle" |
|||
t-if="line.dashboard_state == 'done'"></i> |
|||
</span> |
|||
|
|||
<span class="text"><t t-esc="line.full_product_name"/> |
|||
|
|||
</span> |
|||
<a t-if="line.note" role="button" class="btn show_note" |
|||
data-toggle="modal" data-target="#modalnotes" |
|||
t-att-data-note="line.note" href="#"> |
|||
<i class="fa fa-sticky-note"/></a> |
|||
<div role="dialog" class="modal fade" id="modalnotes"> |
|||
<div class="modal-dialog "> |
|||
<main class="modal-body note_body" id="note-dialog"> |
|||
<button type="button" class="close" data-dismiss="modal" |
|||
aria-label="Close" |
|||
style="cursor:pointer">×</button> |
|||
<span>Item Notes: </span> |
|||
|
|||
<div class="note_container" style="display:none;"> |
|||
|
|||
</div> |
|||
|
|||
</main> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</td> |
|||
<td class="qty-column"><t t-esc="line.qty" /></td> |
|||
<td> |
|||
<span class="badge badge-success badge_state" |
|||
t-if="line.dashboard_state == 'done'">Done</span> |
|||
<span class="badge badge-warning badge_state" |
|||
t-if="line.dashboard_state == 'in_progress'">In progress</span> |
|||
<span class="badge badge-danger badge_state" |
|||
t-if="line.dashboard_state == 'pending'">Pending</span> |
|||
</td> |
|||
<td t-att-data-id="line.id"> |
|||
<button data-type="start" |
|||
class="start_order_line btn btn-info btn_action" |
|||
t-if="line.dashboard_state == 'pending'">Start |
|||
<i class="fa fa-arrow-circle-right fa-lg"></i></button> |
|||
<button data-type="end" |
|||
class="end_order_line btn btn-success btn_action" |
|||
t-if="line.dashboard_state == 'in_progress'">Done |
|||
<i class="fa fa-check-square-o"></i></button> |
|||
</td> |
|||
</tr> |
|||
</t> |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
<div class="footer"> |
|||
<div class="waiter col"> |
|||
<div><t t-esc="order.user_id" /></div> |
|||
<div><t t-esc="order.create_date" /></div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</t> |
|||
</div> |
|||
</t> |
|||
|
|||
</templates> |
@ -1,12 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<!-- Client Action For Menu --> |
|||
<record id="action_dashboard_pos" model="ir.actions.client"> |
|||
<field name="name">Kitchen Screen</field> |
|||
<field name="tag">dashboard_kanban</field> |
|||
</record> |
|||
|
|||
<menuitem id="dashboard_pos_menu" name="Kitchen Screen" action="action_dashboard_pos" parent="point_of_sale.menu_point_root" groups="pos_dashboard_ks.group_pos_dashboard" sequence="4"/> |
|||
|
|||
</odoo> |
@ -1,20 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<record id="view_users_form" model="ir.ui.view"> |
|||
<field name="model">res.users</field> |
|||
<field name="inherit_id" ref="base.view_users_form"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//page[@name='preferences']" position="after"> |
|||
<page string="POS Kitchen Dashboard" name="kitchen_d" groups="pos_dashboard_ks.group_pos_dashboard"> |
|||
<group> |
|||
<field name="kitchen_category_ids" widget="many2many_tags" /> |
|||
<field name="pos_config_ids" widget="many2many_tags" /> |
|||
</group> |
|||
</page> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
|
|||
</odoo> |