Browse Source

[ADD] Initial Commit 'dashboard_pos'

pull/165/head
Ajmal JK 5 years ago
parent
commit
d25d661e68
  1. 18
      dashboard_pos/README.rst
  2. 23
      dashboard_pos/__init__.py
  3. 45
      dashboard_pos/__manifest__.py
  4. 7
      dashboard_pos/doc/RELEASE_NOTES.md
  5. 23
      dashboard_pos/models/__init__.py
  6. 227
      dashboard_pos/models/pos_dashboard.py
  7. BIN
      dashboard_pos/static/description/banner.png
  8. BIN
      dashboard_pos/static/description/icon.png
  9. BIN
      dashboard_pos/static/description/images/booking_order.png
  10. BIN
      dashboard_pos/static/description/images/chart_view.png
  11. BIN
      dashboard_pos/static/description/images/checked.png
  12. BIN
      dashboard_pos/static/description/images/cybrosys.png
  13. BIN
      dashboard_pos/static/description/images/dashboard.png
  14. BIN
      dashboard_pos/static/description/images/mrp_orders.png
  15. BIN
      dashboard_pos/static/description/images/order_line_image.png
  16. BIN
      dashboard_pos/static/description/images/pos_coupons.png
  17. BIN
      dashboard_pos/static/description/images/pos_dashboard.gif
  18. BIN
      dashboard_pos/static/description/images/pos_return.png
  19. BIN
      dashboard_pos/static/description/images/product_creation.png
  20. BIN
      dashboard_pos/static/description/images/tile_view.png
  21. BIN
      dashboard_pos/static/description/images/tree_view.png
  22. 545
      dashboard_pos/static/description/index.html
  23. 1009
      dashboard_pos/static/src/css/pos_dashboard.css
  24. 544
      dashboard_pos/static/src/js/pos_dashboard.js
  25. 305
      dashboard_pos/static/src/xml/pos_dashboard.xml
  26. 21
      dashboard_pos/views/dashboard_views.xml

18
dashboard_pos/README.rst

@ -0,0 +1,18 @@
POS Dashboard v13
=================
POS Dashboard
Installation
============
- www.odoo.com/documentation/13.0/setup/install.html
- Install our custom addon
Configuration
=============
No additional configurations needed
Credits
=======
Developer: Irfan v13 @ cybrosys, Contact: odoo@cybrosys.com

23
dashboard_pos/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Irfan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models

45
dashboard_pos/__manifest__.py

@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Irfan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': "POS Dashboard",
'version': '13.0.1.0.0',
'summary': """POS Dashboard""",
'description': """POS Dashboard""",
'category': 'Point of Sale',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.openhrms.com",
'depends': ['hr', 'point_of_sale'],
'external_dependencies': {
'python': ['pandas'],
},
'data': [
'views/dashboard_views.xml'
],
'qweb': ["static/src/xml/pos_dashboard.xml"],
'images': ['static/description/banner.png'],
'license': "AGPL-3",
'installable': True,
'application': False,
}

7
dashboard_pos/doc/RELEASE_NOTES.md

@ -0,0 +1,7 @@
## Module <pos_dashboard>
#### 20.03.2020
#### Version 13.0.1.0.0
##### Initial Commit for pos_dashboard

23
dashboard_pos/models/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Irfan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import pos_dashboard

227
dashboard_pos/models/pos_dashboard.py

@ -0,0 +1,227 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Irfan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
import pytz
from odoo import models, fields, api
from datetime import timedelta, datetime, date
class PosDashboard(models.Model):
_inherit = 'pos.order'
@api.model
def get_department(self, option):
company_id = self.env.company.id
if option == 'pos_hourly_sales':
user_tz = self.env.user.tz if self.env.user.tz else pytz.UTC
query = '''select EXTRACT(hour FROM date_order at time zone 'utc' at time zone '{}')
as date_month,sum(amount_total) from pos_order where
EXTRACT(month FROM date_order::date) = EXTRACT(month FROM CURRENT_DATE)
AND pos_order.company_id = ''' + str(
company_id) + ''' group by date_month '''
query = query.format(user_tz)
label = 'HOURS'
elif option == 'pos_monthly_sales':
query = '''select date_order::date as date_month,sum(amount_total) from pos_order where
EXTRACT(month FROM date_order::date) = EXTRACT(month FROM CURRENT_DATE) AND pos_order.company_id = ''' + str(
company_id) + ''' group by date_month '''
label = 'DAYS'
else:
query = '''select TO_CHAR(date_order,'MON')date_month,sum(amount_total) from pos_order where
EXTRACT(year FROM date_order::date) = EXTRACT(year FROM CURRENT_DATE) AND pos_order.company_id = ''' + str(
company_id) + ''' group by date_month'''
label = 'MONTHS'
self._cr.execute(query)
docs = self._cr.dictfetchall()
order = []
for record in docs:
order.append(record.get('sum'))
today = []
for record in docs:
today.append(record.get('date_month'))
final = [order, today, label]
return final
@api.model
def get_details(self):
company_id = self.env.company.id
cr = self._cr
cr.execute(
"""select pos_payment_method.name,sum(amount) from pos_payment inner join pos_payment_method on
pos_payment_method.id=pos_payment.payment_method_id group by pos_payment_method.name ORDER
BY sum(amount) DESC; """)
payment_details = cr.fetchall()
cr.execute(
'''select hr_employee.name,sum(pos_order.amount_paid) as total,count(pos_order.amount_paid) as orders
from pos_order inner join hr_employee on pos_order.user_id = hr_employee.user_id
where pos_order.company_id =''' + str(company_id) + '''GROUP BY hr_employee.name order by total DESC;''')
salesperson = cr.fetchall()
total_sales = []
for rec in salesperson:
rec = list(rec)
sym_id = rec[1]
company = self.env.company
if company.currency_id.position == 'after':
rec[1] = "%s %s" % (sym_id, company.currency_id.symbol)
else:
rec[1] = "%s %s" % (company.currency_id.symbol, sym_id)
rec = tuple(rec)
total_sales.append(rec)
cr.execute(
'''select DISTINCT(product_template.name) as product_name,sum(qty) as total_quantity from
pos_order_line inner join product_product on product_product.id=pos_order_line.product_id inner join
product_template on product_product.product_tmpl_id = product_template.id where pos_order_line.company_id =''' + str(
company_id) + ''' group by product_template.id ORDER
BY total_quantity DESC Limit 10 ''')
selling_product = cr.fetchall()
sessions = self.env['pos.config'].search([])
sessions_list = []
dict = {
'closing_control': 'Closed',
'opened': 'Opened',
'new_session': 'New Session',
'opening_control': "Opening Control"
}
for session in sessions:
sessions_list.append({
'session': session.name,
'status': dict.get(session.pos_session_state)
})
payments =[]
for rec in payment_details:
rec = list(rec)
sym_id = rec[1]
company = self.env.company
if company.currency_id.position == 'after':
rec[1] = "%s %s" % (sym_id, company.currency_id.symbol)
else:
rec[1] = "%s %s" % (company.currency_id.symbol, sym_id)
rec = tuple(rec)
payments.append(rec)
return {
'payment_details': payments,
'salesperson': total_sales,
'selling_product': sessions_list,
}
@api.model
def get_refund_details(self):
default_date = datetime.today().date()
pos_order = self.env['pos.order'].search([])
total = 0
today_refund_total = 0
total_order_count = 0
total_refund_count = 0
today_sale = 0
a = 0
for rec in pos_order:
if rec.amount_total < 0.0 and rec.date_order.date() == default_date:
today_refund_total = today_refund_total + 1
total_sales = rec.amount_total
total = total + total_sales
total_order_count = total_order_count + 1
if rec.date_order.date() == default_date:
today_sale = today_sale + 1
if rec.amount_total < 0.0:
total_refund_count = total_refund_count + 1
magnitude = 0
while abs(total) >= 1000:
magnitude += 1
total /= 1000.0
# add more suffixes if you need them
val = '%.2f%s' % (total, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])
pos_session = self.env['pos.session'].search([])
total_session = 0
for record in pos_session:
total_session = total_session + 1
return {
'total_sale': val,
'total_order_count': total_order_count,
'total_refund_count': total_refund_count,
'total_session': total_session,
'today_refund_total': today_refund_total,
'today_sale': today_sale,
}
@api.model
def get_the_top_customer(self, ):
company_id = self.env.company.id
query = '''select res_partner.name as customer,pos_order.partner_id,sum(pos_order.amount_paid) as amount_total from pos_order
inner join res_partner on res_partner.id = pos_order.partner_id where pos_order.company_id = ''' + str(
company_id) + ''' GROUP BY pos_order.partner_id,
res_partner.name ORDER BY amount_total DESC LIMIT 10;'''
self._cr.execute(query)
docs = self._cr.dictfetchall()
print(docs)
order = []
for record in docs:
order.append(record.get('amount_total'))
day = []
for record in docs:
day.append(record.get('customer'))
final = [order, day]
return final
@api.model
def get_the_top_products(self):
company_id = self.env.company.id
query = '''select DISTINCT(product_template.name) as product_name,sum(qty) as total_quantity from
pos_order_line inner join product_product on product_product.id=pos_order_line.product_id inner join
product_template on product_product.product_tmpl_id = product_template.id where pos_order_line.company_id = ''' + str(
company_id) + ''' group by product_template.id ORDER
BY total_quantity DESC Limit 10 '''
self._cr.execute(query)
top_product = self._cr.dictfetchall()
total_quantity = []
for record in top_product:
# if record.get('total_quantity') != 0:
# print(total_quantity.append(record.get('total_quantity')))
total_quantity.append(record.get('total_quantity'))
product_name = []
for record in top_product:
product_name.append(record.get('product_name'))
final = [total_quantity, product_name]
return final
@api.model
def get_the_top_categories(self):
company_id = self.env.company.id
query = '''select DISTINCT(product_category.complete_name) as product_category,sum(qty) as total_quantity
from pos_order_line inner join product_product on product_product.id=pos_order_line.product_id inner join
product_template on product_product.product_tmpl_id = product_template.id inner join product_category on
product_category.id =product_template.categ_id where pos_order_line.company_id = ''' + str(
company_id) + ''' group by product_category ORDER BY total_quantity DESC '''
self._cr.execute(query)
top_product = self._cr.dictfetchall()
total_quantity = []
for record in top_product:
total_quantity.append(record.get('total_quantity'))
product_categ = []
for record in top_product:
product_categ.append(record.get('product_category'))
final = [total_quantity, product_categ]
return final

BIN
dashboard_pos/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
dashboard_pos/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
dashboard_pos/static/description/images/booking_order.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
dashboard_pos/static/description/images/chart_view.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
dashboard_pos/static/description/images/checked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
dashboard_pos/static/description/images/cybrosys.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
dashboard_pos/static/description/images/dashboard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
dashboard_pos/static/description/images/mrp_orders.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
dashboard_pos/static/description/images/order_line_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
dashboard_pos/static/description/images/pos_coupons.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
dashboard_pos/static/description/images/pos_dashboard.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 KiB

BIN
dashboard_pos/static/description/images/pos_return.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
dashboard_pos/static/description/images/product_creation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
dashboard_pos/static/description/images/tile_view.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
dashboard_pos/static/description/images/tree_view.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

545
dashboard_pos/static/description/index.html

@ -0,0 +1,545 @@
<div class="row"
style="margin: 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4;text-align: center; margin: auto; display: flex;justify-content: center;">
<a href="https://www.cybrosys.com/" target="_blank"><img src="images/cybrosys.png"
style=" width: 293px; padding: 1rem 0rem; margin: auto"
alt="cybrosys-logo"></a></div>
<div class="row"
style="margin:75px 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4; padding-bottom: 30px;">
<div class="col-md-7 col-sm-12 col-xs-12" style="padding: 0px">
<div style=" margin: 0 0 0px;padding: 20px 0 10;font-size: 23px;line-height: 35px;font-weight: 400;color: #000;border-top: 1px solid rgba(255,255,255,0.1);border-bottom: 1px solid rgba(255,255,255,0.11);text-align: left;">
<h1 style="font-size: 39px;font-weight: 600;margin: 0px !important;">POS Dashboard</h1>
<h3 style="font-size: 21px;margin-top: 8px;position: relative;">
Detailed Dashboard View for POS
</h3>
</div>
<h2 style="font-weight: 600;font-size: 1.8rem;margin-top: 15px;">Key Highlights</h2>
<ul style=" padding: 0 1px; list-style: none; ">
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">
Total Pos Orders
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Session
Details
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Customer
List
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Sale
Report
</li>
</ul>
</div>
<div class="col-md-5 col-sm-12 col-xs-12"><img src="images/pos_dashboard.gif" class="img-responsive" alt=""></div>
</div>
<div>
<section class="oe_container" style="padding: 1rem 0rem 1rem; background-color: #ffffff !important;">
<div class="row py-4 px-3">
<div class="w-100" style="padding-top:30px;padding-bottom:45px;border-radius: 10px;">
<ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab"
style="border: none;background: unset;">
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab"
aria-controls="pills-home" aria-selected="true" class="nav-link active show" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400;text-align: center;
color: #fff;">Overview </a></li>
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a id="pills-home-tab" data-toggle="pill" href="#pills-home1" role="tab"
aria-controls="pills-home" aria-selected="true" class="nav-link " style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;
color: #fff;">Features </a></li>
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab"
aria-controls="pills-profile" aria-selected="false" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;
color: #fff;">Screenshots </a></li>
</ul>
<div class="tab-content" id="pills-tabContent"
style="padding-top: 30px; padding-bottom: 30px; padding: 30px;">
<div class="px-3 pt-1 tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby="
pills-home-tab">
<!-- Overview-->
<h2 style="font-weight: 600;text-align: center;width: 100%;">Overview</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<h3 class="oe_slogan"
style="text-align: center;font-size: 19px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 31px;font-weight: 400;letter-spacing: .5px;margin-bottom: 21px;">
This module helps you to see the Overview of POS, here You can see the total orders,
sessions, top customers, top products etc
</h3>
</div>
<div class="px-3 pt-1 tab-pane fade " id="pills-home1" role="tabpanel" aria-labelledby="
pills-home-tab">
<!-- feature tab-->
<h2 style="font-weight: 600;text-align: center;width: 100%;">POS Dashboard</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<ul>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Total Pos Orders
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Session Details
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Refund Details
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Sale Details
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Sale Report Charts
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Top Products
</li>
</ul>
</div>
<!-- Screenshot tab-->
<div class="px-3 tab-pane fade" id="pills-profile" role="tabpanel"
aria-labelledby="pills-profile-tab">
<div class="tab-pane">
<h2 style="font-weight: 600;text-align: center;width: 100%;">Screenshots</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<div>
<section class="oe_container">
<div id="demo" class="row carousel slide mb32" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active" style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">
After installation, open POS</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/dashboard.png"></div>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">Order and Session details</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/tile_view.png"></div>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="mb32 alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; ">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">Possible to see the pos details
in different charts</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/chart_view.png"></div>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="mb32 alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; ">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">Details like
bank, session status, salesperson details are listed.</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/tree_view.png"></div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#demo" 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="#demo" 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>
</section>
</div>
</div>
</div>
<!-- <div class="px-3 pt-1 tab-pane fade" id="pills-video" role="tabpanel" aria-labelledby="-->
<!-- pills-home-tab">-->
<!-- &lt;!&ndash; Video&ndash;&gt;-->
<!-- <h2 style="font-weight: 600;text-align: center;width: 100%;">Video</h2>-->
<!-- <hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">-->
<!-- <center>-->
<!-- <p>Project Task Timer Demo</p>-->
<!-- &lt;!&ndash;<a href="https://www.youtube.com/watch?v=57QWXrMYe84&feature=youtu.be" target="_blank"> <img src="addon-youtube.png" style="width:80%;"></a>&ndash;&gt;-->
<!-- <div class="s_panel_video" data-video-id="7PFB7FpMFyM?rel=0" style="cursor:pointer;">-->
<!-- <img class="img-fluid s_tooltip_tabs_tooltip_image s_figure_link pb0" src="images/task_timer_youtube.png" alt="Cybrosys Cover Video" style="max-width:100%;">-->
<!-- </div>-->
<!-- </center>-->
<!-- </div>-->
<!-- faq tab-->
<div class="px-2 px-lg-4 pt-3 tab-pane fade" id="pills-contact" role="tabpanel"
aria-labelledby="pills-contact-tab">
<ul class="list-unstyled">
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<h2 style="font-weight: 600;text-align: center;margin-bottom: 25px;width: 100%;">Suggested Products</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<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/12.0/project_report_pdf/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/booking_order.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/10.0/project_status_level_report/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/mrp_orders.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/10.0/project_lifeline/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/order_line_image.png"></div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
<a href="https://apps.odoo.com/apps/modules/10.0/project_subtask/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/pos_coupons.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/12.0/task_deadline_reminder/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/pos_return.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/10.0/project_time_spend/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/product_creation.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>
</section>
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Service</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<div class="row" style=" display: flex; justify-content: center; flex-wrap: wrap;width: 100%; ">
<!-- <div style="display:flex;padding-top: 20px;justify-content: space-between;"> -->
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-customization.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Customization </a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-implementation.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Implementation </a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-integration.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Integration </a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-support.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Support</a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> <img
src="https://www.cybrosys.com/images/hire-odoo-developer.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Hire Odoo Developers</a></h3>
</a>
</div>
<!-- </div> -->
</div>
</section>
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
<div class="row" style="margin: 0">
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Industries</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<!-- <div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> -->
<div class="row" style="width: 100%">
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Trading </a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Easily procure and sell your products. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-2.png"
alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a></div>
</div>
<div style="width:70%;float:left;" style=" margin-bottom: 10px; ">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Manufacturing</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Plan, track and schedule your operations. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Restaurant</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Run your bar or restaurant methodical. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
POS</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Easy configuring and convivial selling. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
E-commerce & Website</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Mobile friendly, awe-inspiring product pages. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Hotel Management</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
An all-inclusive hotel management application. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Education</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
A Collaborative platform for educational management. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Service Management</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Keep track of services and invoice accordingly. </h3>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
<center>
<div class="col-md-12" style="margin: auto !important;
width: 70%;
padding: 30px;">
<h2 style="font-weight: 600;text-align: center;width: 100%;">Need Any Help?</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<h4 style="font-size:16px;"> If you have anything to share with us based on your use of this module, please
let us know. We are ready to offer our support. </h4>
<div class="col-md-6" style="float:left; padding:20px;">
<h4><i class="fa fa-envelope"></i>Email us </h4>
<p>odoo@cybrosys.com / info@cybrosys.com</p>
</div>
<div class="col-md-6" style="float:left; padding:20px;">
<h4><i class="fa fa-phone"></i> Contact Us </h4>
<a href="https://www.cybrosys.com/contact/" target="_blank"> www.cybrosys.com</a>
</div>
</div>
</center>
</section>
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
<div class="oe_slogan" style="margin-bottom: 0px;">
<div style=" display: flex; justify-content: center; flex-wrap: wrap; ">
</div>
<br>
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;"
class="center-block">
<div style=" display: flex; justify-content: center; flex-wrap: wrap; "><a href="https://twitter.com/cybrosys"
target="_blank"><i
class="fa fa-2x fa-twitter"
style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i
class="fa fa-2x fa-linkedin"
style="color:white;background: #31a3d6;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook"
style="color:white;background: #3b5998;width:35px; height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest"
style="color:white;background: #ac0f18;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
</div>
</div>
</section>
</div>

1009
dashboard_pos/static/src/css/pos_dashboard.css

File diff suppressed because it is too large

544
dashboard_pos/static/src/js/pos_dashboard.js

@ -0,0 +1,544 @@
odoo.define('dashboard_pos.Dashboard', function (require) {
"use strict";
var AbstractAction = require('web.AbstractAction');
var ajax = require('web.ajax');
var core = require('web.core');
var rpc = require('web.rpc');
var session = require('web.session');
var web_client = require('web.web_client');
var _t = core._t;
var QWeb = core.qweb;
var PosDashboard = AbstractAction.extend({
template: 'PosDashboard',
events: {
'click .pos_order_today':'pos_order_today',
'click .pos_order':'pos_order',
'click .pos_total_sales':'pos_order',
'click .pos_session':'pos_session',
'click .pos_refund_orders':'pos_refund_orders',
'click .pos_refund_today_orders':'pos_refund_today_orders',
'change #pos_sales': 'onclick_pos_sales',
},
init: function(parent, context) {
this._super(parent, context);
this.dashboards_templates = ['PosOrders','PosChart','PosCustomer'];
this.payment_details = [];
this.top_salesperson = [];
this.selling_product = [];
this.total_sale = [];
this.total_order_count = [];
this.total_refund_count = [];
this.total_session = [];
this.today_refund_total = [];
this.today_sale = [];
},
willStart: function() {
var self = this;
return $.when(ajax.loadLibs(this), this._super()).then(function() {
return self.fetch_data();
});
},
start: function() {
var self = this;
this.set("title", 'Dashboard');
return this._super().then(function() {
self.render_dashboards();
self.render_graphs();
self.$el.parent().addClass('oe_background_grey');
});
},
fetch_data: function() {
var self = this;
var def1 = this._rpc({
model: 'pos.order',
method: 'get_refund_details'
}).then(function(result) {
self.total_sale = result['total_sale'],
self.total_order_count = result['total_order_count']
self.total_refund_count = result['total_refund_count']
self.total_session = result['total_session']
self.today_refund_total = result['today_refund_total']
self.today_sale = result['today_sale']
});
var def2 = self._rpc({
model: "pos.order",
method: "get_details",
})
.then(function (res) {
self.payment_details = res['payment_details'];
self.top_salesperson = res['salesperson'];
self.selling_product = res['selling_product'];
});
return $.when(def1,def2);
},
render_dashboards: function() {
var self = this;
_.each(this.dashboards_templates, function(template) {
self.$('.o_pos_dashboard').append(QWeb.render(template, {widget: self}));
});
},
render_graphs: function(){
var self = this;
self.render_top_customer_graph();
self.render_top_product_graph();
self.render_product_category_graph();
},
// get_emp_image_url: function(employee){
// return window.location.origin + '/web/image?model=pos.order&field=image&id='+employee;
// },
pos_order_today: function(e){
var self = this;
var date = new Date();
var yesterday = new Date(date.getTime());
yesterday.setDate(date.getDate() - 1);
console.log(yesterday)
e.stopPropagation();
e.preventDefault();
session.user_has_group('hr.group_hr_user').then(function(has_group){
if(has_group){
var options = {
on_reverse_breadcrumb: self.on_reverse_breadcrumb,
};
self.do_action({
name: _t("Today Order"),
type: 'ir.actions.act_window',
res_model: 'pos.order',
view_mode: 'tree,form,calendar',
view_type: 'form',
views: [[false, 'list'],[false, 'form']],
domain: [['date_order','<=', date],['date_order', '>=', yesterday]],
target: 'current'
}, options)
}
});
},
pos_refund_orders: function(e){
var self = this;
var date = new Date();
// alert(date,"date")
var yesterday = new Date(date.getTime());
yesterday.setDate(date.getDate() - 1);
console.log(yesterday)
e.stopPropagation();
e.preventDefault();
session.user_has_group('hr.group_hr_user').then(function(has_group){
if(has_group){
var options = {
on_reverse_breadcrumb: self.on_reverse_breadcrumb,
};
self.do_action({
name: _t("Refund Orders"),
type: 'ir.actions.act_window',
res_model: 'pos.order',
view_mode: 'tree,form,calendar',
view_type: 'form',
views: [[false, 'list'],[false, 'form']],
domain: [['amount_total', '<', 0.0]],
// domain: [['date_order', '=', date]],
target: 'current'
}, options)
}
});
},
pos_refund_today_orders: function(e){
var self = this;
var date = new Date();
// alert(date,"date")
var yesterday = new Date(date.getTime());
yesterday.setDate(date.getDate() - 1);
console.log(yesterday)
e.stopPropagation();
e.preventDefault();
session.user_has_group('hr.group_hr_user').then(function(has_group){
if(has_group){
var options = {
on_reverse_breadcrumb: self.on_reverse_breadcrumb,
};
self.do_action({
name: _t("Refund Orders"),
type: 'ir.actions.act_window',
res_model: 'pos.order',
view_mode: 'tree,form,calendar',
view_type: 'form',
views: [[false, 'list'],[false, 'form']],
domain: [['amount_total', '<', 0.0],['date_order','<=', date],['date_order', '>=', yesterday]],
// domain: [['date_order', '=', date]],
target: 'current'
}, options)
}
});
},
pos_order: function(e){
var self = this;
var date = new Date();
var yesterday = new Date(date.getTime());
yesterday.setDate(date.getDate() - 1);
console.log(yesterday)
e.stopPropagation();
e.preventDefault();
session.user_has_group('hr.group_hr_user').then(function(has_group){
if(has_group){
var options = {
on_reverse_breadcrumb: self.on_reverse_breadcrumb,
};
self.do_action({
name: _t("Total Order"),
type: 'ir.actions.act_window',
res_model: 'pos.order',
view_mode: 'tree,form,calendar',
view_type: 'form',
views: [[false, 'list'],[false, 'form']],
// domain: [['amount_total', '<', 0.0]],
target: 'current'
}, options)
}
});
},
pos_session: function(e){
var self = this;
e.stopPropagation();
e.preventDefault();
session.user_has_group('hr.group_hr_user').then(function(has_group){
if(has_group){
var options = {
on_reverse_breadcrumb: self.on_reverse_breadcrumb,
};
self.do_action({
name: _t("sessions"),
type: 'ir.actions.act_window',
res_model: 'pos.session',
view_mode: 'tree,form,calendar',
view_type: 'form',
views: [[false, 'list'],[false, 'form']],
// domain: [['state','=', In Progress]],
target: 'current'
}, options)
}
});
},
onclick_pos_sales:function(events){
var option = $(events.target).val();
console.log('came monthly')
var self = this
var ctx = self.$("#canvas_1");
rpc.query({
model: "pos.order",
method: "get_department",
args: [option],
}).then(function (arrays) {
console.log(arrays)
var data = {
labels: arrays[1],
datasets: [
{
label: arrays[2],
data: arrays[0],
backgroundColor: [
"rgba(255, 99, 132,1)",
"rgba(54, 162, 235,1)",
"rgba(75, 192, 192,1)",
"rgba(153, 102, 255,1)",
"rgba(10,20,30,1)"
],
borderColor: [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(75, 192, 192, 0.2)",
"rgba(153, 102, 255, 0.2)",
"rgba(10,20,30,0.3)"
],
borderWidth: 1
},
]
};
//options
var options = {
responsive: true,
title: {
display: true,
position: "top",
text: "SALE DETAILS",
fontSize: 18,
fontColor: "#111"
},
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0
}
}]
}
};
//create Chart class object
if (window.myCharts != undefined)
window.myCharts.destroy();
window.myCharts = new Chart(ctx, {
// var chart = new Chart(ctx, {
type: "bar",
data: data,
options: options
});
});
},
render_top_customer_graph:function(){
var self = this
var ctx = self.$(".top_customer");
rpc.query({
model: "pos.order",
method: "get_the_top_customer",
}).then(function (arrays) {
var data = {
labels: arrays[1],
datasets: [
{
label: "",
data: arrays[0],
backgroundColor: [
"rgb(148, 22, 227)",
"rgba(54, 162, 235)",
"rgba(75, 192, 192)",
"rgba(153, 102, 255)",
"rgba(10,20,30)"
],
borderColor: [
"rgba(255, 99, 132,)",
"rgba(54, 162, 235,)",
"rgba(75, 192, 192,)",
"rgba(153, 102, 255,)",
"rgba(10,20,30,)"
],
borderWidth: 1
},
]
};
//options
var options = {
responsive: true,
title: {
display: true,
position: "top",
text: " Top Customer",
fontSize: 18,
fontColor: "#111"
},
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0
}
}]
}
};
//create Chart class object
var chart = new Chart(ctx, {
type: "pie",
data: data,
options: options
});
});
},
render_top_product_graph:function(){
var self = this
var ctx = self.$(".top_selling_product");
rpc.query({
model: "pos.order",
method: "get_the_top_products",
}).then(function (arrays) {
var data = {
labels: arrays[1],
datasets: [
{
label: "Quantity",
data: arrays[0],
backgroundColor: [
"rgba(255, 99, 132,1)",
"rgba(54, 162, 235,1)",
"rgba(75, 192, 192,1)",
"rgba(153, 102, 255,1)",
"rgba(10,20,30,1)"
],
borderColor: [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(75, 192, 192, 0.2)",
"rgba(153, 102, 255, 0.2)",
"rgba(10,20,30,0.3)"
],
borderWidth: 1
},
]
};
//options
var options = {
responsive: true,
title: {
display: true,
position: "top",
text: " Top products",
fontSize: 18,
fontColor: "#111"
},
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0
}
}]
}
};
//create Chart class object
var chart = new Chart(ctx, {
type: "horizontalBar",
data: data,
options: options
});
});
},
render_product_category_graph:function(){
var self = this
var ctx = self.$(".top_product_categories");
rpc.query({
model: "pos.order",
method: "get_the_top_categories",
}).then(function (arrays) {
var data = {
labels: arrays[1],
datasets: [
{
label: "Quantity",
data: arrays[0],
backgroundColor: [
"rgba(255, 99, 132,1)",
"rgba(54, 162, 235,1)",
"rgba(75, 192, 192,1)",
"rgba(153, 102, 255,1)",
"rgba(10,20,30,1)"
],
borderColor: [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(75, 192, 192, 0.2)",
"rgba(153, 102, 255, 0.2)",
"rgba(10,20,30,0.3)"
],
borderWidth: 1
},
]
};
//options
var options = {
responsive: true,
title: {
display: true,
position: "top",
text: " Top product categories",
fontSize: 18,
fontColor: "#111"
},
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0
}
}]
}
};
//create Chart class object
var chart = new Chart(ctx, {
type: "horizontalBar",
data: data,
options: options
});
});
},
});
core.action_registry.add('pos_dashboard', PosDashboard);
return PosDashboard;
});

305
dashboard_pos/static/src/xml/pos_dashboard.xml

@ -0,0 +1,305 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="PosDashboard">
<div class="oh_dashboards">
<div class="container-fluid o_pos_dashboard">
</div>
</div>
</t>
<t t-name="PosOrders">
<div class="row main-section">
<div class="col-md-4 col-sm-6 pos_order_today oh-payslip">
<div class="oh-card" style="width: 288px;">
<div class="oh-card-body">
<div class="stat-widget-one">
<!-- <div class="stat-icon" style="background:#5bcbd0"><t t-esc="widget.today_sale"/></div>-->
<div class="stat-icon" style="background:#5bcbd0"><i class="fa fa-shopping-bag"/></div>
<div class="stat-content">
<div class="stat-head">Today Orders</div>
<div class="stat_count"><t t-esc="widget.today_sale"/></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 pos_order oh-payslip">
<div class="oh-card" style="width: 288px;">
<div class="oh-card-body">
<div class="stat-widget-one">
<!-- <div class="stat-icon" style="background:#645bd0"><t t-esc="widget.total_order_count"/></div>-->
<div class="stat-icon" style="background:#645bd0"><i class="fa fa-shopping-bag"/></div>
<div class="stat-content">
<div class="stat-head">Total Orders</div>
<div class="stat_count"><t t-esc="widget.total_order_count"/></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 pos_total_sales oh-payslip">
<div class="oh-card" style="width: 350px;">
<div class="oh-card-body">
<div class="stat-widget-one">
<div class="stat-icon" style="background:#85d05b"><i class="fa fa-shopping-cart"/></div>
<!-- <div class="stat-icon" style="width:150px;background:##85d05b"><t t-esc="widget.total_sale"/></div>-->
<div class="stat-content">
<div class="stat-head">Total Sales</div>
<div class="stat_count"><t t-esc="widget.total_sale"/></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 pos_session oh-payslip">
<div class="oh-card" style="width: 288px;">
<div class="oh-card-body">
<div class="stat-widget-one">
<div class="stat-icon" style="background:#d05bb8"><i class="fa fa-signal"/></div>
<div class="stat-content">
<div class="stat-head">Sessions</div>
<div class="stat_count"><t t-esc="widget.total_session"/></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 pos_refund_orders oh-payslip">
<div class="oh-card" style="width: 288px;">
<div class="oh-card-body">
<div class="stat-widget-one">
<div class="stat-icon" style="background:#d0c35b"><i class="fa fa-minus-circle"/></div>
<div class="stat-content">
<div class="stat-head">Total Refund Orders</div>
<div class="stat_count"><t t-esc="widget.total_refund_count"/></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 pos_refund_today_orders oh-payslip">
<div class="oh-card" style="width: 350px;">
<div class="oh-card-body">
<div class="stat-widget-one">
<div class="stat-icon" style="background:#5b8ed0"><i class="fa fa-minus-circle"/></div>
<div class="stat-content">
<div class="stat-head">Today Refund Order</div>
<div class="stat_count"><t t-esc="widget.today_refund_total"/></div>
</div>
</div>
</div>
</div>
</div>
</div>
</t>
<t t-name="PosChart">
<div class="col-xs-12 col-sm-12 col-lg-12 col-md-12">
<div class="row" style="margin:0px;">
<div class="col-md-6" id="col-graph">
<div class="card">
<div class="card-header">
<div class="card-title">
<b>
<h3 class="custom-h3">SALE REPORT</h3>
</b>
</div>
<div class="card-tools">
<select id="pos_sales">
<!-- <option value="pos_hourly_sales">Select</option>-->
<option style="display:none;"> -- select an option -- </option>
<option value="pos_hourly_sales">Hourly</option>
<option value="pos_monthly_sales">Monthly</option>
<option value="pos_year_sales">Yearly</option>
</select>
</div>
</div>
<div class="card-body mt-3" id="in_ex_body_hide">
<div class="row">
<div class="col-md-12">
<p id="myelement1"></p>
<div class="chart">
<canvas id="canvas_1" width="200" height="90"></canvas>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-6 col-lg-6 top_customer_graph_view">
<div class="oh-card text-color">
<div class="oh-card-body pb-0">
<h4 class="mb-0">
</h4>
</div>
<canvas class="top_customer" width="200" height="120"/>
</div>
</div>
<div class="col-sm-6 col-lg-6 selling_product_graph_view">
<div class="oh-card text-color">
<div class="oh-card-body pb-0">
<h4 class="mb-0">
</h4>
</div>
<canvas class="top_selling_product" width="200" height="120"/>
</div>
</div>
<div class="col-sm-6 col-lg-6 selling_product_graph_view">
<div class="oh-card text-color">
<div class="oh-card-body pb-0">
<h4 class="mb-0">
</h4>
</div>
<canvas class="top_product_categories" width="200" height="120"/>
</div>
</div>
</div>
</div>
</t>
<t t-name="PosCustomer">
<div class="employee_dashboard_main">
<div class="row main-section">
<div class="col-md-4 col-lg-4">
<div class="hr_notification" style="background: #fff;transition: transform 0.2s ease, box-shadow 0.2s ease;will-change: transform, box-shadow;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06);
height: 316px;overflow-y: auto;margin-bottom: 15px;">
<div class="hr_notification_head"
style="font-size: 17px;text-align: center;padding: 12px 0;color: #fff;font-weight: 300;background: #de6a5e;margin-bottom: 9px;">
Sale by Salesperson
</div>
<div class="col-sm-12 col-lg-12" style="padding:0;">
<div class="text-color">
<div class="">
<div class="media">
<div class="media-body">
<table class="table table-sm">
<thead>
<tr>
<th rowspan="12">Name&#160;&#160;&#160;</th>
<th rowspan="12">orders</th>
<th rowspan="12">Amount</th>
</tr>
</thead>
<tbody>
<t t-foreach="widget.top_salesperson" t-as="salesperson">
<tr>
<td>
<h2 class="text-color display-6" style="font-size: 15px;">
<t t-esc="salesperson[0]"/>
</h2>
</td>
<td>
<h2 class="text-color display-6" style="font-size: 15px;">
<t t-esc="salesperson[2]"/>
</h2>
</td>
<td>
<h2 class="text-color display-6" style="font-size: 15px;">
<t t-esc="salesperson[1]"/>
</h2>
</td>
</tr>
</t>
</tbody>
</table>
</div></div></div></div>
</div>
</div>
</div>
<div class="col-md-4 col-lg-4">
<div class="hr_notification" style="background: #fff;transition: transform 0.2s ease, box-shadow 0.2s ease;will-change: transform, box-shadow;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06);
height: 316px;overflow-y: auto;margin-bottom: 15px;">
<div class="hr_notification_head"
style="font-size: 17px;text-align: center;padding: 12px 0;color: #fff;font-weight: 300;background:#de6a5e;;margin-bottom: 9px;">
Payment Method
</div>
<div class="col-sm-12 col-lg-12" style="padding:0;">
<div class="text-color">
<div class="">
<div class="media">
<div class="media-body">
<table class="table table-sm">
<thead>
<tr>
<th rowspan="12">Payment Method&#160;&#160;&#160;</th>
<th rowspan="12">Amount</th>
</tr>
</thead>
<tbody>
<t t-foreach="widget.payment_details" t-as="payment_method">
<tr>
<td>
<h2 class="text-color display-6" style="font-size: 15px;">
<t t-esc="payment_method[0]"/>
</h2>
</td>
<td>
<h2 class="text-color display-6" style="font-size: 15px;">
<t t-esc="payment_method[1]"/>
</h2>
</td>
</tr>
</t>
</tbody>
</table>
</div></div></div></div>
</div>
</div>
</div>
<div class="col-md-4 col-lg-4">
<div class="hr_notification" style="background: #fff;transition: transform 0.2s ease, box-shadow 0.2s ease;will-change: transform, box-shadow;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06);
height: 316px;overflow-y: auto;margin-bottom: 15px;">
<div class="hr_notification_head"
style="font-size: 17px;text-align: center;padding: 12px 0;color: #fff;font-weight: 300;background: #de6a5e;margin-bottom: 9px;">
Session Status
</div>
<div class="col-sm-12 col-lg-12" style="padding:0;">
<div class="text-color">
<div class="">
<div class="media">
<div class="media-body">
<table class="table table-sm">
<thead>
<tr>
<th rowspan="12">Session&#160;&#160;&#160;</th>
<th rowspan="12">Status</th>
<!-- <th rowspan="12">Amount</th>-->
</tr>
</thead>
<tbody>
<t t-foreach="widget.selling_product" t-as="session">
<tr>
<td>
<h2 class="text-color display-6" style="font-size: 15px;">
<t t-esc="session['session']"/>
</h2>
</td>
<td>
<h2 class="text-color display-6" style="font-size: 15px;">
<t t-esc="session['status']"/>
</h2>
</td>
<!-- <td>-->
<!-- <h2 class="text-color display-6" style="font-size: 15px;">-->
<!-- <t t-esc="salesperson[1]"/>-->
<!-- </h2>-->
<!-- </td>-->
</tr>
</t>
</tbody>
</table>
</div></div></div></div>
</div>
</div>
</div>
</div>
</div>
</t>
</templates>

21
dashboard_pos/views/dashboard_views.xml

@ -0,0 +1,21 @@
<odoo>
<data>
<record id="action_pos_dashboard" model="ir.actions.client">
<field name="name">Dashboard</field>
<field name="tag">pos_dashboard</field>
</record>
<menuitem name="Dashboard" id="pos_dashboard" parent="point_of_sale.menu_point_rep"
sequence="1"
groups="point_of_sale.group_pos_manager"
action="action_pos_dashboard"/>
</data>
<template id="assets_backend_dashboard" name="POS Dashboard assets inherit" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/dashboard_pos/static/src/js/pos_dashboard.js"/>
<link rel="stylesheet" href="/dashboard_pos/static/src/css/pos_dashboard.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js"></script>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save