Browse Source

[ADD]Initial Commit

pull/95/merge
AjmalCybro 6 years ago
parent
commit
c593331024
  1. 54
      pos_lock_session/README.rst
  2. 21
      pos_lock_session/__init__.py
  3. 42
      pos_lock_session/__manifest__.py
  4. 3
      pos_lock_session/models/__init__.py
  5. 12
      pos_lock_session/models/pos_lock.py
  6. BIN
      pos_lock_session/static/description/banner.jpg
  7. BIN
      pos_lock_session/static/description/cybro_logo.png
  8. BIN
      pos_lock_session/static/description/icon.png
  9. 347
      pos_lock_session/static/description/index.html
  10. BIN
      pos_lock_session/static/description/pos_session_lock_01.png
  11. BIN
      pos_lock_session/static/description/pos_session_lock_02.png
  12. BIN
      pos_lock_session/static/description/pos_session_lock_03.png
  13. 53
      pos_lock_session/static/src/css/session_lock.css
  14. 109
      pos_lock_session/static/src/js/session_lock.js
  15. 125
      pos_lock_session/static/src/js/unlock_screen.js
  16. 47
      pos_lock_session/static/src/xml/session_lock.xml
  17. 32
      pos_lock_session/views/pos_lock.xml
  18. 12
      pos_lock_session/views/pos_templates.xml

54
pos_lock_session/README.rst

@ -0,0 +1,54 @@
====================
POS Session Lock V11
====================
This module allows pos user to lock pos screen.
Installation
============
- www.odoo.com/documentation/10.0/setup/install.html
- Install our custom addon
Configuration
=============
* Using the Boolean button in POS configuration you can enable screen lock.
* Security pin for each pos user can be set from Point of Sale tab under Settings -> Users -> Users.
Features
========
* Screen lock option in POS session configuration.
* Screen lock button in pos.
* Lock screen using keyboard shortcut 'CTRL+L'.
* Login/Unlock screen in pos.
* Extra layer of security.
License
=======
GNU LESSER GENERAL PUBLIC LICENSE, Version 3 (LGPLv3)
(http://www.gnu.org/licenses/agpl.html)
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Credits
=======
* Cybrosys Techno Solutions<https://www.cybrosys.com>
Author
------
Developer: Aswani PC @ cybrosys, aswani@cybrosys.in
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

21
pos_lock_session/__init__.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<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

42
pos_lock_session/__manifest__.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<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 Session Lock",
'version': '11.0.1.0.0',
'summary': """The Module Allows the POS User to Set Screen Lock for POS Screen""",
'description': """This module allows pos user to lock pos screen.""",
'author': "Cybrosys Techno Solutions",
'maintainer': 'Cybrosys Techno Solutions',
'company': "Cybrosys Techno Solutions",
'website': "https://www.cybrosys.com",
'category': 'Point of Sale',
'depends': ['point_of_sale'],
'data': [
'views/pos_lock.xml',
'views/pos_templates.xml',
],
'qweb': ['static/src/xml/session_lock.xml'],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

3
pos_lock_session/models/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import pos_lock

12
pos_lock_session/models/pos_lock.py

@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
from odoo import models, fields
class PosLockConfig(models.Model):
_inherit = 'pos.config'
pos_lock = fields.Boolean(string='Enable Lock Screen')
bg_color = fields.Char('Background Color', default='rgb(218, 218, 218)',
help='The background color of the lock screen, '
'(must be specified in a html-compatible format)')

BIN
pos_lock_session/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
pos_lock_session/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
pos_lock_session/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

347
pos_lock_session/static/description/index.html

@ -0,0 +1,347 @@
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png); background-repeat:no-repeat; background-size:cover;padding: 13% 0% 25% 15%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;">
POS Session Lock
</h2>
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;">
Lock Pos Screen
</h3>
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;">
<a style="color: #080808 !important;" href="https://www.cybrosys.com">Cybrosys Technologies</a>
</h5>
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;">
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> </div>
</a>
</div>
</section>
<section class="oe_container" style="padding: 3% 0% 3% 15%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Overview
</h2>
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
The module allows the POS user to set screen lock for his/her POS screen when it is left unattended. The lock feature will provide an extra layer security for individual POS.
</h3>
</div>
</section>
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 30% 15%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Features
</h2>
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Screen lock option in POS session configuration.
</h3>
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Screen lock button in POS.
</h3>
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Lock screen using keyboard shortcut 'CTRL+L'.
</h3>
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Login/Unlock screen in pos.
</h3>
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Extra layer of security.
</h3>
</div>
</section>
<section class="oe_container" style="padding: 3% 0% 0% 15%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Screenshots
</h2>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Configuration
<h4>
Using the newly appeared Boolean button in POS configuration user can enable screen lock option.
</h4>
</h3>
<div class="oe_row oe_spaced">
<img src="pos_session_lock_01.png" alt="" style="width: 95%;"/>
</div>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Lock Screen
</h3>
<div class="oe_row oe_spaced">
<img src="pos_session_lock_02.png" alt="" style="width: 95%;"/>
</div>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Login/Unlock Screen
</h3>
<div class="oe_row oe_spaced">
<img src="pos_session_lock_03.png" alt="" style="width: 95%;"/>
</div>
</div>
</section>
<section class="oe_container" style="padding: 1% 0% 0% 3%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Our Services
</h2>
<div style="display:flex;padding-top: 20px;justify-content: space-between;">
<div style="flex-basis: 18%;">
<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">
Odoo Customization
</a>
</h3>
</div>
<div style="flex-basis: 18%;">
<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">
Odoo Implementation </a>
</h3>
</div>
<div style="flex-basis: 18%;">
<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">
Odoo Integration
</a>
</h3>
</div>
<div style="flex-basis: 18%;">
<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">
Odoo Support</a>
</h3>
</div>
<div style="flex-basis: 18%;">
<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">
Hire Odoo Developers</a>
</h3>
</a>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 1% 0% 0% 3%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Our Industries
</h2>
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;">
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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">
Trading
</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank">
Easily procure and sell your products.
</a>
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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;">
<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">
Manufacturing</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
Plan, track and schedule your operations.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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">
Restaurant</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
Run your bar or restaurant methodical.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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">
POS</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
Easy configuring and convivial selling.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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">
E-commerce & Website</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
Mobile friendly, awe-inspiring product pages.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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">
Hotel Management</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
An all-inclusive hotel management application.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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">
Education</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
A Collaborative platform for educational management.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<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">
Service Management</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;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;">
Keep track of services and invoice accordingly.
</h3>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;">
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;">
<div>
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a>
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a>
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block">
<div>
<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;padding-left: 3px;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://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;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;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td>
</div>
</div>
</section>

BIN
pos_lock_session/static/description/pos_session_lock_01.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
pos_lock_session/static/description/pos_session_lock_02.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
pos_lock_session/static/description/pos_session_lock_03.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

53
pos_lock_session/static/src/css/session_lock.css

@ -0,0 +1,53 @@
.login-screen{
position:fixed !important;
}
.pos .modal-dialog .screen_lock{
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
margin: auto;
width:100px;
height:100px;
text-align:center;
border-radius: 3px;
z-index:1200;
}
.pos .modal-dialog .screen_lock .fa-lock {
position: absolute;
left: 13px;
top: 13px;
color:black;
font-size: 100px;
border-radius: 100%;
}
.pos_login .fa-arrow-circle-right {
font-size: 40px;
background: #FFFFFF;
color: rgb(0,128,0);
line-height: 30px;
width: 30px;
border-radius: 100%;
margin-top: 8px;
}
.back_pos .fa-arrow-circle-left {
position: absolute;
left: 13px;
top: 13px;
margin-right: 8px;
font-size: 40px;
background: #FFFFFF;
color: red;
line-height: 30px;
width: 30px;
border-radius: 100%;
}
.pos_invalid_password{
color: red;
}
.login-picture{
padding-top:130px;
}

109
pos_lock_session/static/src/js/session_lock.js

@ -0,0 +1,109 @@
odoo.define('pos_lock_session.session_lock', function (require) {
"use strict";
var core = require('web.core');
var chrome = require('point_of_sale.chrome');
var gui = require('point_of_sale.gui');
var PopupWidget = require('point_of_sale.popups');
var _t = core._t;
var SessionLock = PopupWidget.extend({
template:'SessionLock',
events: _.extend({}, PopupWidget.prototype.events,{
"click .screen_lock" : "unlock_screen",
}),
show: function(options){
var self = this;
this._super(options);
$(document).keydown(function(e) {
if(e.keyCode == 13) {
e.preventDefault();
self.gui.show_screen('login',{lock:true});
}
});
},
unlock_screen:function(){
var self = this;
this.gui.show_screen('login',{lock:true});
}
});
gui.define_popup({name:'lock', widget: SessionLock});
chrome.Chrome.include({
events: {
"click .pos-lock": "on_click_pos_lock",
},
init: function() {
var self = this;
this._super();
$(document).keydown(function(e) {
if(self.pos.config.pos_lock){
if(e.keyCode == 76 && e.ctrlKey) {
e.preventDefault();
e.stopPropagation();
var cashier = this.get_cashier().id;
for (var i = 0; i < this.users.length; i++) {
var user = this.users[i];
if (user.id === cashier) {
var cashier_pswd = user.pos_security_pin;
}
}
if(!cashier_pswd){
self.gui.show_popup('error', {
'title': _t('Security pin is not set'),
'body': _t('Please set a security pin.'),
});
}
else{
self.gui.show_popup('lock',{});
}
}
}
});
},
renderElement: function(){
var self = this;
return this._super();
},
build_widgets: function(){
this._super();
var cashier = this.pos.get_cashier().id;
for (var i = 0; i < this.pos.users.length; i++) {
var user = this.pos.users[i];
if (user.id === cashier) {
var cashier_pswd = user.pos_security_pin;
}
}
if (this.pos.config.pos_lock && cashier_pswd) {
this.gui.set_startup_screen('login');
}
},
on_click_pos_lock: function (e) {
var self = this;
e.stopPropagation();
var cashier = this.pos.get_cashier().id;
for (var i = 0; i < this.pos.users.length; i++) {
var user = this.pos.users[i];
if (user.id === cashier) {
var cashier_pswd = user.pos_security_pin;
}
}
if(!cashier_pswd){
this.gui.show_popup('error', {
'title': _t('Security pin is not set'),
'body': _t('Please set a security pin.'),
});
}
else{
self.gui.show_popup('lock',{});
}
},
});
});

125
pos_lock_session/static/src/js/unlock_screen.js

@ -0,0 +1,125 @@
odoo.define('pos_lock_session.screen', function (require) {
"use strict";
var screens = require('point_of_sale.screens');
var gui = require('point_of_sale.gui');
var models = require('point_of_sale.models');
var _super_posmodel = models.PosModel.prototype;
var _t = require('web.core')._t;
var LoginScreenWidget = screens.ScreenWidget.extend({
template: 'LoginScreenWidget',
barcode_product_action: function(code){},
barcode_discount_action: function(code){},
barcode_client_action: function(code){},
init: function(parent, options) {
this._super(parent, options);
},
show: function(){
var self = this;
this._super();
this.renderElement();
this.$('.pos_invalid_password').val('');
this.$('.user_password').val('');
var cashier = this.pos.get_cashier().id;
for (var i = 0; i < this.pos.users.length; i++) {
var user = this.pos.users[i];
if (user.id === cashier) {
this.user = user;
}
}
// this.user = this.pos.get_cashier();
this.chrome.$('.pos-topheader').hide();
if(this.pos.config.iface_vkeyboard && this.chrome.widget.keyboard){
this.chrome.widget.keyboard.connect(this.$('.user_password'));
}
this.$el.css({"background-color": _.escape(this.pos.config.bg_color)});
if (! this.user.pos_security_pin){
self.$('.pos_invalid_password').text('Please set a security pin.');
}
this.$('.back').click(function(){
if (self.gui.get_current_screen_param('lock')){
self.gui.show_screen('products');
self.chrome.$('.pos-topheader').show();
if(self.pos.config.iface_vkeyboard && self.chrome.widget.keyboard){
self.chrome.widget.keyboard.hide();
}
self.gui.show_popup('lock',{});
}
else{
self.gui.close();
}
});
this.$('.login').click(function(){
if (self.$('.user_password').val() === self.user.pos_security_pin){
if (!self.gui.get_current_screen_param('lock')){
_super_posmodel.set_start_order.call(self.pos);
}
self.gui.show_screen('products');
self.chrome.$('.pos-topheader').show();
if(self.pos.config.iface_vkeyboard && self.chrome.widget.keyboard){
self.chrome.widget.keyboard.hide();
}
}
else{
self.$('.pos_invalid_password').text('Invalid Password');
}
});
$(document).keyup(function(e) {
if(e.keyCode == 13) {
e.preventDefault();
e.stopPropagation();
if (self.$('.user_password').val() === self.user.pos_security_pin){
if (!self.gui.get_current_screen_param('lock')){
_super_posmodel.set_start_order.call(self.pos);
}
self.gui.show_screen('products');
self.chrome.$('.pos-topheader').show();
if(self.pos.config.iface_vkeyboard && self.chrome.widget.keyboard){
self.chrome.widget.keyboard.hide();
}
}
else{
self.$('.pos_invalid_password').text('Invalid Password');
}
}
});
},
user_icon_url: function(id){
return '/web/image?model=res.users&id='+id+'&field=image';
},
});
gui.define_screen({
'name': 'login',
'widget': LoginScreenWidget,
'condition': function(){
return this.pos.config.pos_lock;
},
});
models.PosModel = models.PosModel.extend({
// set when the user login to session.
set_start_order: function() {
var cashier = this.get_cashier().id;
for (var i = 0; i < this.users.length; i++) {
var user = this.users[i];
if (user.id === cashier) {
var cashier_pswd = user.pos_security_pin;
}
}
if (!this.config.pos_lock || !cashier_pswd) {
_super_posmodel.set_start_order.apply(this,arguments);
}
},
});
});

47
pos_lock_session/static/src/xml/session_lock.xml

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="Chrome">
<t t-jquery="div.pos-rightheader" t-operation="append">
<t t-if='widget.pos.config and widget.pos.config.pos_lock'>
<div class="oe_status">
<i class="fa fa-lock pos-lock"/>
</div>
</t>
</t>
</t>
<t t-name="SessionLock">
<div class="modal-dialog">
<div class='screen_lock'>
<i class='fa fa-lock' />
</div>
</div>
</t>
<t t-name="LoginScreenWidget">
<div class='login-screen screen'>
<div class='screen-content-flexbox'>
<div class='button back back_pos'>
<i class='fa fa-arrow-circle-left'/>
</div>
<div class='login-picture'>
<t t-if='!widget.pos.get_cashier().id'>
<i class='fa fa-camera'></i>
</t>
<t t-if='widget.pos.get_cashier().id'>
<img t-att-src='widget.user_icon_url(widget.pos.get_cashier().id)' />
</t>
</div>
<div><h2><t t-esc="widget.pos.get_cashier().name"/></h2></div>
<div class="password_input">
<input class='user_password' name='password' placeholder='Password' type="password"/>
</div>
<div><span class="pos_invalid_password"/></div>
<div class='button login pos_login'>
<i class="fa fa-arrow-circle-right" aria-hidden="true"/>
</div>
</div>
</div>
</t>
</templates>

32
pos_lock_session/views/pos_lock.xml

@ -0,0 +1,32 @@
<odoo>
<data>
<record id="view_pos_quick_payment_config_form" model="ir.ui.view">
<field name="name">pos.config.form.view</field>
<field name="model">pos.config</field>
<field name="inherit_id" ref="point_of_sale.pos_config_view_form"/>
<field name="arch" type="xml">
<xpath expr="//h2" position="before">
<h2>Screen Lock</h2>
<group name="session_lock">
<div class="row mt16 o_settings_container">
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="pos_lock"/>
</div>
<div class="o_setting_right_pane">
<label for="pos_lock"/>
</div>
</div>
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_right_pane">
<label for="bg_color"/>
<field name="bg_color" style="height:30px;width:200px"/>
</div>
</div>
</div>
</group>
</xpath>
</field>
</record>
</data>
</odoo>

12
pos_lock_session/views/pos_templates.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/pos_lock_session/static/src/css/session_lock.css"/>
<script type="text/javascript" src="/pos_lock_session/static/src/js/unlock_screen.js"/>
<script type="text/javascript" src="/pos_lock_session/static/src/js/session_lock.js"/>
</xpath>
</template>
</data>
</odoo>
Loading…
Cancel
Save