diff --git a/custom_receipts_for_pos/README.rst b/custom_receipts_for_pos/README.rst new file mode 100644 index 0000000..2c562f4 --- /dev/null +++ b/custom_receipts_for_pos/README.rst @@ -0,0 +1,38 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +POS Receipt Designs +=================== +POS Receipt Design + + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +Developer: Afra K @cybrosys, Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ \ No newline at end of file diff --git a/custom_receipts_for_pos/__init__.py b/custom_receipts_for_pos/__init__.py new file mode 100644 index 0000000..b604a29 --- /dev/null +++ b/custom_receipts_for_pos/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/custom_receipts_for_pos/__manifest__.py b/custom_receipts_for_pos/__manifest__.py new file mode 100644 index 0000000..5e4b319 --- /dev/null +++ b/custom_receipts_for_pos/__manifest__.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies (). +# Author: Afra K () +# +# 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 . +# +################################################################################### + +{ + 'name': 'POS Receipt Design', + 'version': '16.0.1.0.0', + 'summary': """Option to select the customised Receipts for each POS""", + 'description': "Option to select the customised Receipts for each POS", + 'category': 'Point of Sale', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'point_of_sale'], + 'data': [ + 'security/ir.model.access.csv', + 'views/point_of_sale_view.xml', + 'views/pos_receipt_views.xml', + 'views/res_config_settings_views.xml', + ], + 'demo':['demo/pos_receipt_views_demo.xml'], + 'assets': { + 'point_of_sale.assets': [ + 'custom_receipts_for_pos/static/js/ReceiptScreen/order_receipt.js', + ], + }, + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/custom_receipts_for_pos/demo/pos_receipt_views_demo.xml b/custom_receipts_for_pos/demo/pos_receipt_views_demo.xml new file mode 100644 index 0000000..642a777 --- /dev/null +++ b/custom_receipts_for_pos/demo/pos_receipt_views_demo.xml @@ -0,0 +1,269 @@ + + + + + Design 1 + +
+ +
+
+ +
Tel:
+
+ +
:
+
+ +
+
+ +
+
+ + + + +
+
+ +
+
--------------------------------
+
Served by
+
+
+
+
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + +
ProductQtyAmount
+ + +
+ % discount +
+
+ +
+ +
+ + + +
+
+
+
+ + + +
+
Subtotal :
+ +
+ + +
+
+
+ +
+
+ TOTAL : + +
+ +
+ + ]]>
+
+ + Design 2 + +
+
+ Phone:
+
+ +
+
+ Date : + + + + + + +
+ Order :
+
+
+
+ Cashier :
+ + Customer : + +
+
+
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + +
ProductQtyAmount
+ + +
+ % discount +
+
+ +
+ +
+ + + +
+
+
+
+ + + +
+
Subtotal :
+ +
+ + +
+
+
+ +
+
+ TOTAL : + +
+

+
+ + +
+ + +
+
+
+
+ CHANGE : + +
+
+ + +
+ Discounts : + +
+
+ + +
+ + +
+
+
+ Total Taxes : + +
+
+ ]]>
+
+
\ No newline at end of file diff --git a/custom_receipts_for_pos/doc/RELEASE_NOTES.md b/custom_receipts_for_pos/doc/RELEASE_NOTES.md new file mode 100644 index 0000000..e0b84d1 --- /dev/null +++ b/custom_receipts_for_pos/doc/RELEASE_NOTES.md @@ -0,0 +1,8 @@ +## Module + +#### 21.11.2022 +#### Version 16.0.1.0.0 +#### ADD +Initial Commit for POS Receipt Designs. + + diff --git a/custom_receipts_for_pos/models/__init__.py b/custom_receipts_for_pos/models/__init__.py new file mode 100644 index 0000000..11555cb --- /dev/null +++ b/custom_receipts_for_pos/models/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies (). +# Author: Afra K () +# +# 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 . +# +################################################################################### + +from .import pos_receipt +from .import pos_config +from .import res_config_settings +from .import pos_session + diff --git a/custom_receipts_for_pos/models/pos_config.py b/custom_receipts_for_pos/models/pos_config.py new file mode 100644 index 0000000..1aad2a6 --- /dev/null +++ b/custom_receipts_for_pos/models/pos_config.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies (). +# Author: Afra K () +# +# 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 . +# +################################################################################### + +from odoo import fields, models + + +class PosConfig(models.Model): + _inherit = "pos.config" + + receipt_design = fields.Many2one('pos.receipt', string="Receipt Design", help="Choose any receipt design") + design_receipt = fields.Text(related='receipt_design.design_receipt', string='Receipt XML') + is_custom_receipt = fields.Boolean(string='Is Custom Receipt') diff --git a/custom_receipts_for_pos/models/pos_receipt.py b/custom_receipts_for_pos/models/pos_receipt.py new file mode 100644 index 0000000..05de87d --- /dev/null +++ b/custom_receipts_for_pos/models/pos_receipt.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies (). +# Author: Afra K () +# +# 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 . +# +################################################################################### + +from odoo import fields, models + + +class PosReceipt(models.Model): + _name = 'pos.receipt' + + name = fields.Char(string='Name') + design_receipt = fields.Text(string='Receipt XML', help='Add your customised receipts for pos') diff --git a/custom_receipts_for_pos/models/pos_session.py b/custom_receipts_for_pos/models/pos_session.py new file mode 100644 index 0000000..67ec519 --- /dev/null +++ b/custom_receipts_for_pos/models/pos_session.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies (). +# Author: Afra K () +# +# 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 . +# +################################################################################### + +from odoo import models + + +class PosSession(models.Model): + _inherit = 'pos.session' + + def _loader_params_product_product(self): + result = super()._loader_params_product_product() + result['search_params']['fields'].append('qty_available') + return result + + def _pos_ui_models_to_load(self): + result = super()._pos_ui_models_to_load() + result += [ + 'res.config.settings', + 'pos.receipt', + ] + return result + + def _loader_params_pos_receipt(self): + return { + 'search_params': { + 'fields': ['design_receipt', 'name'], + + }, + } + + def _get_pos_ui_pos_receipt(self, params): + return self.env['pos.receipt'].search_read(**params['search_params']) + + def _loader_params_res_config_settings(self): + return { + 'search_params': { + 'fields': ['pos_receipt_design'], + + }, + } + + def _get_pos_ui_res_config_settings(self, params): + return self.env['res.config.settings'].search_read(**params['search_params']) diff --git a/custom_receipts_for_pos/models/res_config_settings.py b/custom_receipts_for_pos/models/res_config_settings.py new file mode 100644 index 0000000..34bb3d4 --- /dev/null +++ b/custom_receipts_for_pos/models/res_config_settings.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies (). +# Author: Afra K () +# +# 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 . +# +################################################################################### + +from odoo import api, fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + pos_receipt_design = fields.Many2one(related='pos_config_id.receipt_design', string="Receipt Design", + help="Choose any receipt design", compute='_compute_pos_is_custom_receipt', + readonly=False, store=True) + pos_design_receipt = fields.Text(related='pos_config_id.design_receipt', string='Receipt XML') + pos_is_custom_receipt = fields.Boolean(related='pos_config_id.is_custom_receipt', readonly=False, store=True) + + @api.depends('pos_is_custom_receipt', 'pos_config_id') + def _compute_pos_is_custom_receipt(self): + for res_config in self: + if res_config.pos_is_custom_receipt: + res_config.pos_receipt_design = res_config.pos_config_id.receipt_design + else: + res_config.pos_receipt_design = False diff --git a/custom_receipts_for_pos/security/ir.model.access.csv b/custom_receipts_for_pos/security/ir.model.access.csv new file mode 100644 index 0000000..d89b715 --- /dev/null +++ b/custom_receipts_for_pos/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_pos_receipt,access_pos_receipt,model_pos_receipt,base.group_user,1,1,1,1 + diff --git a/custom_receipts_for_pos/static/description/assets/icons/check.png b/custom_receipts_for_pos/static/description/assets/icons/check.png new file mode 100644 index 0000000..c8e85f5 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/check.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/chevron.png b/custom_receipts_for_pos/static/description/assets/icons/chevron.png new file mode 100644 index 0000000..2089293 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/chevron.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/cogs.png b/custom_receipts_for_pos/static/description/assets/icons/cogs.png new file mode 100644 index 0000000..95d0bad Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/cogs.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/consultation.png b/custom_receipts_for_pos/static/description/assets/icons/consultation.png new file mode 100644 index 0000000..8319d4b Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/consultation.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/ecom-black.png b/custom_receipts_for_pos/static/description/assets/icons/ecom-black.png new file mode 100644 index 0000000..a9385ff Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/ecom-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/education-black.png b/custom_receipts_for_pos/static/description/assets/icons/education-black.png new file mode 100644 index 0000000..3eb09b2 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/education-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/hotel-black.png b/custom_receipts_for_pos/static/description/assets/icons/hotel-black.png new file mode 100644 index 0000000..130f613 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/hotel-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/license.png b/custom_receipts_for_pos/static/description/assets/icons/license.png new file mode 100644 index 0000000..a586979 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/license.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/lifebuoy.png b/custom_receipts_for_pos/static/description/assets/icons/lifebuoy.png new file mode 100644 index 0000000..658d56c Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/lifebuoy.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/logo.png b/custom_receipts_for_pos/static/description/assets/icons/logo.png new file mode 100644 index 0000000..478462d Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/logo.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/manufacturing-black.png b/custom_receipts_for_pos/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 0000000..697eb0e Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/manufacturing-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/pos-black.png b/custom_receipts_for_pos/static/description/assets/icons/pos-black.png new file mode 100644 index 0000000..97c0f90 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/pos-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/puzzle.png b/custom_receipts_for_pos/static/description/assets/icons/puzzle.png new file mode 100644 index 0000000..65cf854 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/puzzle.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/restaurant-black.png b/custom_receipts_for_pos/static/description/assets/icons/restaurant-black.png new file mode 100644 index 0000000..4a35eb9 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/restaurant-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/service-black.png b/custom_receipts_for_pos/static/description/assets/icons/service-black.png new file mode 100644 index 0000000..301ab51 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/service-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/trading-black.png b/custom_receipts_for_pos/static/description/assets/icons/trading-black.png new file mode 100644 index 0000000..9398ba2 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/trading-black.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/training.png b/custom_receipts_for_pos/static/description/assets/icons/training.png new file mode 100644 index 0000000..884ca02 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/training.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/update.png b/custom_receipts_for_pos/static/description/assets/icons/update.png new file mode 100644 index 0000000..ecbc5a0 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/update.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/user.png b/custom_receipts_for_pos/static/description/assets/icons/user.png new file mode 100644 index 0000000..6ffb23d Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/user.png differ diff --git a/custom_receipts_for_pos/static/description/assets/icons/wrench.png b/custom_receipts_for_pos/static/description/assets/icons/wrench.png new file mode 100644 index 0000000..6c04dea Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/icons/wrench.png differ diff --git a/custom_receipts_for_pos/static/description/assets/modules/budget_image.png b/custom_receipts_for_pos/static/description/assets/modules/budget_image.png new file mode 100644 index 0000000..b50130c Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/modules/budget_image.png differ diff --git a/custom_receipts_for_pos/static/description/assets/modules/credit_image.png b/custom_receipts_for_pos/static/description/assets/modules/credit_image.png new file mode 100644 index 0000000..3ad04ec Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/modules/credit_image.png differ diff --git a/custom_receipts_for_pos/static/description/assets/modules/employee_image.png b/custom_receipts_for_pos/static/description/assets/modules/employee_image.png new file mode 100644 index 0000000..30ad582 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/modules/employee_image.png differ diff --git a/custom_receipts_for_pos/static/description/assets/modules/export_image.png b/custom_receipts_for_pos/static/description/assets/modules/export_image.png new file mode 100644 index 0000000..492980a Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/modules/export_image.png differ diff --git a/custom_receipts_for_pos/static/description/assets/modules/gantt_image.png b/custom_receipts_for_pos/static/description/assets/modules/gantt_image.png new file mode 100644 index 0000000..1ae7cfe Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/modules/gantt_image.png differ diff --git a/custom_receipts_for_pos/static/description/assets/modules/quotation_image.png b/custom_receipts_for_pos/static/description/assets/modules/quotation_image.png new file mode 100644 index 0000000..499b1a7 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/modules/quotation_image.png differ diff --git a/custom_receipts_for_pos/static/description/assets/modules/sales_discount.png b/custom_receipts_for_pos/static/description/assets/modules/sales_discount.png new file mode 100644 index 0000000..004c61a Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/modules/sales_discount.png differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/hero.gif b/custom_receipts_for_pos/static/description/assets/screenshots/hero.gif new file mode 100644 index 0000000..ed4c911 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/hero.gif differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/screenshot1.png b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot1.png new file mode 100644 index 0000000..a33d1c0 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot1.png differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/screenshot2.png b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot2.png new file mode 100644 index 0000000..f065dbb Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot2.png differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/screenshot3.png b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot3.png new file mode 100644 index 0000000..a7c93ae Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot3.png differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/screenshot4.png b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot4.png new file mode 100644 index 0000000..7914466 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot4.png differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/screenshot5.png b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot5.png new file mode 100644 index 0000000..d940652 Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot5.png differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/screenshot6.png b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot6.png new file mode 100644 index 0000000..af72e5c Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot6.png differ diff --git a/custom_receipts_for_pos/static/description/assets/screenshots/screenshot7.png b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot7.png new file mode 100644 index 0000000..37b00ea Binary files /dev/null and b/custom_receipts_for_pos/static/description/assets/screenshots/screenshot7.png differ diff --git a/custom_receipts_for_pos/static/description/banner.png b/custom_receipts_for_pos/static/description/banner.png new file mode 100644 index 0000000..d1d3775 Binary files /dev/null and b/custom_receipts_for_pos/static/description/banner.png differ diff --git a/custom_receipts_for_pos/static/description/cybro_logo.png b/custom_receipts_for_pos/static/description/cybro_logo.png new file mode 100644 index 0000000..bb30911 Binary files /dev/null and b/custom_receipts_for_pos/static/description/cybro_logo.png differ diff --git a/custom_receipts_for_pos/static/description/icon.png b/custom_receipts_for_pos/static/description/icon.png new file mode 100644 index 0000000..9e01399 Binary files /dev/null and b/custom_receipts_for_pos/static/description/icon.png differ diff --git a/custom_receipts_for_pos/static/description/index.html b/custom_receipts_for_pos/static/description/index.html new file mode 100644 index 0000000..841fc65 --- /dev/null +++ b/custom_receipts_for_pos/static/description/index.html @@ -0,0 +1,614 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+ +
+
+
+
+ +
+
+
+

+ POS Receipt Designs

+

+ Option to select the customised Receipts for each POS.

+ +
+
+ + + +
+
+

+ Overview +

+
+ +
+

+ In this module POS Receipt Design user can add receipt designs from the backend, and we can choose the receipt designs for each POS, + And we can view the different receipts for each POS.

+
+

+ +
+ + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ User can add the receipt designs from the backend in the menu Receipt Designs.

+
+
+ +
+
+ +
+
+

+ User can choose whether the current pos needs custom receipt design

+
+
+ +
+
+ +
+
+

+ We can see that chosen receipt in frontend of the POS .

+
+
+ +
+
+ +
+
+

+ We can edit the receipt design from the backend of the POS.

+
+
+ + +
+ +
+
+

+ Screenshots +

+
+
+

+ Default Receipt of POS

+

+ This is the default receipt of POS. +

+ +
+
+

+ Receipt Designs

+

+ We can add the Receipt designs from the backend in the menu 'Receipt Designs'. +

+ + +
+ +
+

+ Choose receipt design for POS.

+

+ We can choose the receipt design for each POS from the backend of the pos. +

+ +
+
+

+ Edit receipt designs for POS.

+

+ We can edit the receipt design from the backend of the POS. +

+ +
+ +
+

+ Chosen receipt in the frontend

+

+ We can see the chosen receipts for the POS in the frontend of the POS, It will vary as per we're choosing from the Backend for each POS. +

+
+
+ +
+
+ +
+
+ + +
+ +
+ +
+
+

Suggested Products

+
+ + +
+
+ + + +
+
+
+

Our Services

+
+
+ +
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+
+

Our Industries

+
+
+ +
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+ +
+
+ + + + + +
+
+
+

Need Help?

+
+
+
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/custom_receipts_for_pos/static/js/ReceiptScreen/order_receipt.js b/custom_receipts_for_pos/static/js/ReceiptScreen/order_receipt.js new file mode 100644 index 0000000..8a7c797 --- /dev/null +++ b/custom_receipts_for_pos/static/js/ReceiptScreen/order_receipt.js @@ -0,0 +1,53 @@ +odoo.define('custom_receipts_for_pos.receipt',function(require){ + "use strict" + var models=require('point_of_sale.models'); + const Registries = require('point_of_sale.Registries'); + var PosDB = require("point_of_sale.DB"); + const OrderReceipt = require('point_of_sale.OrderReceipt'); + const AbstractReceiptScreen = require('point_of_sale.AbstractReceiptScreen'); + var SuperOrder = models.Order; + const{onMounted}=owl; + + PosDB.include({ + init:function(options) + { + var self=this; + this._super(options); + this.receipt_design=null; + }, + }) + + const PosResOrderReceipt = OrderReceipt => + class extends OrderReceipt { + setup(){ + super.setup(); + onMounted(()=>{ + var self=this; + + if(self.env.pos.config.is_custom_receipt){ + var receipt_design=self.env.pos.config.design_receipt + var order=self._receiptEnv.order; + var data={ + widget:self.env, + pos:order.pos, + order:order, + receipt:order.export_for_printing(), + orderlines:order.get_orderlines(), + paymentlines:order.get_paymentlines(), + moment:moment, + }; + var parser=new DOMParser(); + var xmlDoc=parser.parseFromString(receipt_design,"text/xml"); + var s=new XMLSerializer(); + var newXmlStr=s.serializeToString(xmlDoc); + var qweb=new QWeb2.Engine(); + console.log('receipt', self._receiptEnv) + qweb.add_template(''+newXmlStr+''); + var receipt=qweb.render('receipt_design',data);$('div.pos-receipt').replaceWith(receipt); + console.log(receipt, 'ooooo') + } + }) + } + } + Registries.Component.extend(OrderReceipt, PosResOrderReceipt) +}); diff --git a/custom_receipts_for_pos/views/point_of_sale_view.xml b/custom_receipts_for_pos/views/point_of_sale_view.xml new file mode 100644 index 0000000..bfa337b --- /dev/null +++ b/custom_receipts_for_pos/views/point_of_sale_view.xml @@ -0,0 +1,17 @@ + + + + + Receipt Designs + pos.receipt + tree,form + current + + + + diff --git a/custom_receipts_for_pos/views/pos_config_views.xml b/custom_receipts_for_pos/views/pos_config_views.xml new file mode 100644 index 0000000..b8c9c58 --- /dev/null +++ b/custom_receipts_for_pos/views/pos_config_views.xml @@ -0,0 +1,27 @@ + + + + + pos.config.view + pos.config + + + +
+
+ +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/custom_receipts_for_pos/views/pos_receipt_views.xml b/custom_receipts_for_pos/views/pos_receipt_views.xml new file mode 100644 index 0000000..b1b0910 --- /dev/null +++ b/custom_receipts_for_pos/views/pos_receipt_views.xml @@ -0,0 +1,26 @@ + + + + pos.receipt.form + pos.receipt + +
+ + + + + + +
+
+
+ + pos.receipt + + + + + + +
\ No newline at end of file diff --git a/custom_receipts_for_pos/views/res_config_settings_views.xml b/custom_receipts_for_pos/views/res_config_settings_views.xml new file mode 100644 index 0000000..2d2761b --- /dev/null +++ b/custom_receipts_for_pos/views/res_config_settings_views.xml @@ -0,0 +1,34 @@ + + + + res.config.settings.view.form.inherit.point_of_sale + res.config.settings + + + + +
+
+
+ +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/dashboard_pos/README.rst b/dashboard_pos/README.rst new file mode 100644 index 0000000..6f479e0 --- /dev/null +++ b/dashboard_pos/README.rst @@ -0,0 +1,21 @@ +POS Dashboard v16 +================= +POS Dashboard + +Installation +============ + - www.odoo.com/documentation/14.0/setup/install.html + - Install our custom addon + +Configuration +============= + + No additional configurations needed + +Credits +======= +Developer: Irfan v13 @ cybrosys, Contact: odoo@cybrosys.com + Jibin James V14 @ cybrosys, Contact: odoo@cybrosys.com + Irfan V15 @ cybrosys, Contact: odoo@cybrosys.com + Amaya Aravind EV V16 @ cybrosys, Contact: odoo@cybrosys.com + diff --git a/dashboard_pos/__init__.py b/dashboard_pos/__init__.py new file mode 100644 index 0000000..6f1457f --- /dev/null +++ b/dashboard_pos/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Irfan () +# +# 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 . +# +################################################################################### + +from . import models diff --git a/dashboard_pos/__manifest__.py b/dashboard_pos/__manifest__.py new file mode 100644 index 0000000..8ad9376 --- /dev/null +++ b/dashboard_pos/__manifest__.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Irfan () +# +# 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 . +# +################################################################################### +{ + 'name': "POS Dashboard", + 'version': '16.0.1.0.2', + '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.cybrosys.com", + 'depends': ['hr', 'point_of_sale'], + 'external_dependencies': { + 'python': ['pandas'], + }, + 'data': [ + 'views/dashboard_views.xml' + ], + 'assets': { + 'web.assets_backend': [ + 'dashboard_pos/static/src/xml/pos_dashboard.xml', + 'dashboard_pos/static/src/js/pos_dashboard.js', + 'dashboard_pos/static/src/css/pos_dashboard.css', + 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js', + ], + }, + 'images': ['static/description/banner.png'], + 'license': "AGPL-3", + 'installable': True, + 'application': False, +} \ No newline at end of file diff --git a/dashboard_pos/doc/RELEASE_NOTES.md b/dashboard_pos/doc/RELEASE_NOTES.md new file mode 100644 index 0000000..a3ffac3 --- /dev/null +++ b/dashboard_pos/doc/RELEASE_NOTES.md @@ -0,0 +1,11 @@ +## Module + +#### 09.10.2021 +#### Version 16.0.1.0.0 +##### ADD +-Initial Commit for pos_dashboard + +#### 15.05.2023 +#### Version 16.0.2.0.1 +##### FIX +-Error of increasing the font in the entire database removed \ No newline at end of file diff --git a/dashboard_pos/models/__init__.py b/dashboard_pos/models/__init__.py new file mode 100644 index 0000000..aa63756 --- /dev/null +++ b/dashboard_pos/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Irfan () +# +# 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 . +# +################################################################################### + +from . import pos_dashboard diff --git a/dashboard_pos/models/pos_dashboard.py b/dashboard_pos/models/pos_dashboard.py new file mode 100644 index 0000000..dd102aa --- /dev/null +++ b/dashboard_pos/models/pos_dashboard.py @@ -0,0 +1,232 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Irfan () +# +# 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 . +# +################################################################################### +import pytz +from odoo import models, fields, api +from datetime import timedelta, datetime, date +import json + + +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 ->>'en_US',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 = { + 'opened': 'Opened', + 'opening_control': "Opening Control" + } + for session in sessions: + st = dict.get(session.pos_session_state) + if st == None: + sessions_list.append({ + 'session': session.name, + 'status': 'Closed' + }) + else: + 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() + + 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)->>'en_US' 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: + 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 diff --git a/dashboard_pos/static/description/assets/icons/check.png b/dashboard_pos/static/description/assets/icons/check.png new file mode 100644 index 0000000..c8e85f5 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/check.png differ diff --git a/dashboard_pos/static/description/assets/icons/chevron.png b/dashboard_pos/static/description/assets/icons/chevron.png new file mode 100644 index 0000000..2089293 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/chevron.png differ diff --git a/dashboard_pos/static/description/assets/icons/cogs.png b/dashboard_pos/static/description/assets/icons/cogs.png new file mode 100644 index 0000000..95d0bad Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/cogs.png differ diff --git a/dashboard_pos/static/description/assets/icons/consultation.png b/dashboard_pos/static/description/assets/icons/consultation.png new file mode 100644 index 0000000..8319d4b Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/consultation.png differ diff --git a/dashboard_pos/static/description/assets/icons/ecom-black.png b/dashboard_pos/static/description/assets/icons/ecom-black.png new file mode 100644 index 0000000..a9385ff Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/ecom-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/education-black.png b/dashboard_pos/static/description/assets/icons/education-black.png new file mode 100644 index 0000000..3eb09b2 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/education-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/hotel-black.png b/dashboard_pos/static/description/assets/icons/hotel-black.png new file mode 100644 index 0000000..130f613 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/hotel-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/license.png b/dashboard_pos/static/description/assets/icons/license.png new file mode 100644 index 0000000..a586979 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/license.png differ diff --git a/dashboard_pos/static/description/assets/icons/lifebuoy.png b/dashboard_pos/static/description/assets/icons/lifebuoy.png new file mode 100644 index 0000000..658d56c Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/lifebuoy.png differ diff --git a/dashboard_pos/static/description/assets/icons/manufacturing-black.png b/dashboard_pos/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 0000000..697eb0e Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/manufacturing-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/pos-black.png b/dashboard_pos/static/description/assets/icons/pos-black.png new file mode 100644 index 0000000..97c0f90 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/pos-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/puzzle.png b/dashboard_pos/static/description/assets/icons/puzzle.png new file mode 100644 index 0000000..65cf854 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/puzzle.png differ diff --git a/dashboard_pos/static/description/assets/icons/restaurant-black.png b/dashboard_pos/static/description/assets/icons/restaurant-black.png new file mode 100644 index 0000000..4a35eb9 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/restaurant-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/service-black.png b/dashboard_pos/static/description/assets/icons/service-black.png new file mode 100644 index 0000000..301ab51 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/service-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/trading-black.png b/dashboard_pos/static/description/assets/icons/trading-black.png new file mode 100644 index 0000000..9398ba2 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/trading-black.png differ diff --git a/dashboard_pos/static/description/assets/icons/training.png b/dashboard_pos/static/description/assets/icons/training.png new file mode 100644 index 0000000..884ca02 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/training.png differ diff --git a/dashboard_pos/static/description/assets/icons/update.png b/dashboard_pos/static/description/assets/icons/update.png new file mode 100644 index 0000000..ecbc5a0 Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/update.png differ diff --git a/dashboard_pos/static/description/assets/icons/user.png b/dashboard_pos/static/description/assets/icons/user.png new file mode 100644 index 0000000..6ffb23d Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/user.png differ diff --git a/dashboard_pos/static/description/assets/icons/wrench.png b/dashboard_pos/static/description/assets/icons/wrench.png new file mode 100644 index 0000000..6c04dea Binary files /dev/null and b/dashboard_pos/static/description/assets/icons/wrench.png differ diff --git a/dashboard_pos/static/description/assets/misc/categories.png b/dashboard_pos/static/description/assets/misc/categories.png new file mode 100644 index 0000000..bedf1e0 Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/categories.png differ diff --git a/dashboard_pos/static/description/assets/misc/check-box.png b/dashboard_pos/static/description/assets/misc/check-box.png new file mode 100644 index 0000000..42caf24 Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/check-box.png differ diff --git a/dashboard_pos/static/description/assets/misc/compass.png b/dashboard_pos/static/description/assets/misc/compass.png new file mode 100644 index 0000000..d5fed8f Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/compass.png differ diff --git a/dashboard_pos/static/description/assets/misc/corporate.png b/dashboard_pos/static/description/assets/misc/corporate.png new file mode 100644 index 0000000..2eb13ed Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/corporate.png differ diff --git a/dashboard_pos/static/description/assets/misc/customer-support.png b/dashboard_pos/static/description/assets/misc/customer-support.png new file mode 100644 index 0000000..79efc72 Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/customer-support.png differ diff --git a/dashboard_pos/static/description/assets/misc/cybrosys-logo.png b/dashboard_pos/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 0000000..cc3cc0c Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/cybrosys-logo.png differ diff --git a/dashboard_pos/static/description/assets/misc/features.png b/dashboard_pos/static/description/assets/misc/features.png new file mode 100644 index 0000000..b41769f Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/features.png differ diff --git a/dashboard_pos/static/description/assets/misc/logo.png b/dashboard_pos/static/description/assets/misc/logo.png new file mode 100644 index 0000000..478462d Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/logo.png differ diff --git a/dashboard_pos/static/description/assets/misc/pictures.png b/dashboard_pos/static/description/assets/misc/pictures.png new file mode 100644 index 0000000..56d255f Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/pictures.png differ diff --git a/dashboard_pos/static/description/assets/misc/pie-chart.png b/dashboard_pos/static/description/assets/misc/pie-chart.png new file mode 100644 index 0000000..426e052 Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/pie-chart.png differ diff --git a/dashboard_pos/static/description/assets/misc/right-arrow.png b/dashboard_pos/static/description/assets/misc/right-arrow.png new file mode 100644 index 0000000..730984a Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/right-arrow.png differ diff --git a/dashboard_pos/static/description/assets/misc/star.png b/dashboard_pos/static/description/assets/misc/star.png new file mode 100644 index 0000000..2eb9ab2 Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/star.png differ diff --git a/dashboard_pos/static/description/assets/misc/support.png b/dashboard_pos/static/description/assets/misc/support.png new file mode 100644 index 0000000..4f18b8b Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/support.png differ diff --git a/dashboard_pos/static/description/assets/misc/whatsapp.png b/dashboard_pos/static/description/assets/misc/whatsapp.png new file mode 100644 index 0000000..d513a53 Binary files /dev/null and b/dashboard_pos/static/description/assets/misc/whatsapp.png differ diff --git a/dashboard_pos/static/description/assets/modules/1.png b/dashboard_pos/static/description/assets/modules/1.png new file mode 100644 index 0000000..5238bde Binary files /dev/null and b/dashboard_pos/static/description/assets/modules/1.png differ diff --git a/dashboard_pos/static/description/assets/modules/2.png b/dashboard_pos/static/description/assets/modules/2.png new file mode 100644 index 0000000..1ae7cfe Binary files /dev/null and b/dashboard_pos/static/description/assets/modules/2.png differ diff --git a/dashboard_pos/static/description/assets/modules/3.png b/dashboard_pos/static/description/assets/modules/3.png new file mode 100644 index 0000000..3c3ff1a Binary files /dev/null and b/dashboard_pos/static/description/assets/modules/3.png differ diff --git a/dashboard_pos/static/description/assets/modules/4.png b/dashboard_pos/static/description/assets/modules/4.png new file mode 100644 index 0000000..3fae463 Binary files /dev/null and b/dashboard_pos/static/description/assets/modules/4.png differ diff --git a/dashboard_pos/static/description/assets/modules/5.gif b/dashboard_pos/static/description/assets/modules/5.gif new file mode 100644 index 0000000..2a5f8e6 Binary files /dev/null and b/dashboard_pos/static/description/assets/modules/5.gif differ diff --git a/dashboard_pos/static/description/assets/modules/6.png b/dashboard_pos/static/description/assets/modules/6.png new file mode 100644 index 0000000..7f28152 Binary files /dev/null and b/dashboard_pos/static/description/assets/modules/6.png differ diff --git a/dashboard_pos/static/description/assets/screenshots/1.png b/dashboard_pos/static/description/assets/screenshots/1.png new file mode 100644 index 0000000..6098706 Binary files /dev/null and b/dashboard_pos/static/description/assets/screenshots/1.png differ diff --git a/dashboard_pos/static/description/assets/screenshots/2.png b/dashboard_pos/static/description/assets/screenshots/2.png new file mode 100644 index 0000000..ebed5d1 Binary files /dev/null and b/dashboard_pos/static/description/assets/screenshots/2.png differ diff --git a/dashboard_pos/static/description/assets/screenshots/3.png b/dashboard_pos/static/description/assets/screenshots/3.png new file mode 100644 index 0000000..1f1076f Binary files /dev/null and b/dashboard_pos/static/description/assets/screenshots/3.png differ diff --git a/dashboard_pos/static/description/assets/screenshots/4.png b/dashboard_pos/static/description/assets/screenshots/4.png new file mode 100644 index 0000000..fc0ad6d Binary files /dev/null and b/dashboard_pos/static/description/assets/screenshots/4.png differ diff --git a/dashboard_pos/static/description/assets/screenshots/hero.gif b/dashboard_pos/static/description/assets/screenshots/hero.gif new file mode 100644 index 0000000..3b1077f Binary files /dev/null and b/dashboard_pos/static/description/assets/screenshots/hero.gif differ diff --git a/dashboard_pos/static/description/banner.png b/dashboard_pos/static/description/banner.png new file mode 100644 index 0000000..17c1498 Binary files /dev/null and b/dashboard_pos/static/description/banner.png differ diff --git a/dashboard_pos/static/description/icon.png b/dashboard_pos/static/description/icon.png new file mode 100644 index 0000000..29791a8 Binary files /dev/null and b/dashboard_pos/static/description/icon.png differ diff --git a/dashboard_pos/static/description/index.html b/dashboard_pos/static/description/index.html new file mode 100644 index 0000000..fb1f98e --- /dev/null +++ b/dashboard_pos/static/description/index.html @@ -0,0 +1,554 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

POS Dashboard

+

Detailed Dashboard View for POS.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module helps you to see the Overview of POS, here You can see the total orders, sessions, top + customers, top products etc. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Total POS Orders. +
+
+ + Session Details. +
+
+ + Refund Details. +
+
+ + Sale Details. +
+
+ + Sale Report Charts. +
+
+ + Top products. +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Open POS

+ +
+ +
+

Order and Session details.

+

Order and Session counts are displayed in the dashboard.

+ +
+ +
+

Details in Charts

+

Possible to see the POS details in different charts.

+ +
+ +
+

Bank, session & salesperson details

+

Details like bank, session status, salesperson details are listed.

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/dashboard_pos/static/src/css/pos_dashboard.css b/dashboard_pos/static/src/css/pos_dashboard.css new file mode 100644 index 0000000..c3a8144 --- /dev/null +++ b/dashboard_pos/static/src/css/pos_dashboard.css @@ -0,0 +1,1005 @@ +.oh_dashboards{ + padding-top :15px; + background-color: #f8faff !important; +} + +.oh-card h4 { + font-size: 1.1rem; +} +.breadcrumbs { + margin-top: 0; +} + +.buttons button { + margin: 2px 0; } + +/* Button Reset */ +.btn, .button { + display: inline-block; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + transition: all .15s ease-in-out; + border-radius: 0; + cursor: pointer; } + + +/* Widget One +---------------------------*/ +.stat-content { + display: inline-block; + width: 66%; +} +.stat-icon{ + display: inline-block; +} + +.stat-widget-one .stat-icon { + vertical-align: top; + margin: auto; + width: 100%; + color: #01c490; +} + +.stat-widget-one .stat-icon i { + font-size: 30px; + font-weight: 900; + display: inline-block; + color: #01c490;} + +.stat-widget-one .stat-text { + font-size: 14px; + color: #868e96; + font-weight: bold; +} + +.stat-widget-one .stat-digit { + font-size: 24px; + color: #02448b; } + +.stat-count { + font-size: 20px; + text-align: center; + color: #00438b;} + +.stat-title { + font-size: 17px; + text-align: center; + color: #00438b; } + +.mb-0 .dash-title { + font-size: 20px; + text-align: center; + color: rgba(255, 255, 255, 0.81); +} +.hr_birthday { + font-size: 28px; + text-align: center; + padding: 20px 0; + color: #00438b; + font-weight: 600; +} + +body .text-color { + color: #00438b; +} +.slice { + stroke: #fff; + stroke-width: 0px; +} + +/* Leave graph */ + +path { stroke: #fff; } +path:hover { opacity:0.9; } +rect:hover { fill:#934da5; } +.axis { font: 10px sans-serif; } +.legend tr{ border-bottom:1px solid grey; } +.legend tr:first-child{ border-top:1px solid grey; } + +.axis path, +.axis line { + fill: none; + stroke: #000; + shape-rendering: crispEdges; +} + +.x.axis path { display: none; } +.legend{ + border-collapse: collapse; + border-spacing: 0px; + display: inline-block; +} +.legend td, .legend .legend_col{ + padding:4px 5px; + vertical-align:bottom; +} +.legendFreq, .legendPerc{ + align:right; + width:50px; +} + +/* Leave broadfactor graph */ + +.broad_factor_graph .axis path, +.broad_factor_graph .axis line { + fill: none; + stroke: black; + shape-rendering: crispEdges; +} +.broad_factor_graph .axis text { + font-family: sans-serif; + font-size: 11px; +} + +.broad_factor_graph rect { + -moz-transition: all 0.3s; + -webkit-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; +} +.broad_factor_graph rect:hover{ + fill: #ff618a; +} + +#broad_factor_pdf { + background-color: #ffffff; + border: 0; + color : #000000; + float: right; +} +#broad_factor_pdf i { + color: red; +} + +.leave_broad_factor{ + overflow-x: auto !important; + overflow-y: hidden !important; + height: auto; +} + +/*=====================New Dashboard===========================*/ + +.oh_dashboards { + background-color: #f8faff !important; + padding: 0px !important; + +} +.container-fluid.o_pos_dashboard { + padding: 0px !important; +} +.employee-prof { + + padding: 0px; + height: 100%; + background-color: #3e6282; + /*background-image: linear-gradient(180deg, #3e6282, #41666f);*/ + position: fixed; + z-index: 999; +} +.employee-prof .oh-card:hover { + + transform:none !important; + box-shadow: none !important; + +} + +/*.dummy{ + height:130vh; +}*/ +.oh-card { + + padding-top: 0px; + padding: 0px; + margin-bottom: 1.5rem; + border-radius: 0px; + box-shadow: none; + background: none; + transition: transform 0.2s ease, box-shadow 0.2s ease; + will-change: transform, box-shadow; + +} +.oh-card:hover { + + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; + +} +.employee-prof .employee-icon { + + float: left; + padding-right: 0px; + width: 100%; + height: 185px; + overflow: hidden; + background: #fff; + +} +.employee-prof .employee-icon img{ + width: 100%; + background: #fff; +} + +.employee-prof .employee-name h2 { + + text-align: center; + font-weight: 300; + text-transform: uppercase; + font-size: 17px; + margin-top: 12px; + margin-bottom: 2px; + color: #fff; + +} +.media-body.employee-name { + + background: #466b8d; + float: left; + margin: 0; + width: 100% + +} +.employee-prof .employee-name p { + + margin: 0 0 9px; + text-align: center; + font-size: 12px; + color: #f3f3f3; + +} +.employee-prof p { + margin: 0 0 9px; + color: #fff; +} +.employee-gender { + width: 40%; + margin-left: 10%; + padding: 8% 10% 4%; + text-align: center; + border-right: 1px solid #4d769b; + margin-top: 14%; + float: left; + border-bottom: 1px solid #4d769b; +} +.employee-gender p { + margin: 0px 0 4px !important; + color: #fff; +} +.employee-age { + width: 40%; + margin-right: 10%; + padding: 4% 10% 7%; + text-align: center; + margin-top: 18%; + float: left; + border-bottom: 1px solid #4d769b; +} +.employee-age p { + margin: 0 0 1px; + color: #fff; +} +.employee-experience { + + width: 100%; + text-align: center; + padding-top: 8%; + float: left; + padding-bottom: 3%; + +} +.employee-country { + width: 40%; + margin-left: 10%; + padding: 9% 0% 4%; + text-align: center; + border-right: 1px solid #4d769b; + margin-top: 2%; + float: left; + border-top: 1px solid #4d769b; + +} +.employee-country p { + margin: 0px 0 1px !important; + color: #fff; +} +.employee-mobile { + width: 40%; + margin-right: 10%; + padding: 9% 0% 7%; + text-align: center; + margin-top: 2%; + float: left; + border-top: 1px solid #4d769b; +} +.employee-mobile p { + margin: 0 0 1px; + color: #fff; +} +.oh-payslip { + + margin-top: 4.5%; + +} +.oh-payslip .stat-icon { + + width: 30%; + height: 85px; + text-align: center; + background: #ff8762; + color: #fff; + width: 32%; + padding-top: 2%; + font-size: xxx-large; + +} +.oh-payslip .oh-card { + + 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); + +} +.stat-widget-one .stat-text { + + font-size: 14px; + color: #ff8762; + margin-top: 2.3rem; + margin-left: 1rem; + +} +.stat-widget-one .stat-digit { + font-size: 26px; + color:#993232; + margin-left: 1rem; + margin-top: -1px; + font-family: initial +} + +.stat-widget-one .stat-icon i { + + font-size: 25px; + font-weight: 900; + display: inline-block; + color: #fff; + +} +.stat-widget-one { + + background-color: white; + text-align: left; + +} +.stat-widget-one { + width: 100%; +} +.oh-payslip .stat-icon { + + width: 30%; + height: 85px; + text-align: center; + padding-top: 2%; + +} +.oh-timesheets .stat-icon{ + background: #5ebade !important; +} +.oh-contracts .stat-icon{ + background: #b298e1 !important; +} +.oh-broad-factor .stat-icon{ + background: #70cac1 !important; +} +.oh-timesheets .stat-widget-one .stat-text { + color: #5ebade; +} +.oh-contracts .stat-widget-one .stat-text { + color: #b298e1; +} +.oh-broad-factor .stat-widget-one .stat-text { + color: #70cac1; +} +.leave-manager { + + background-color: #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); + padding: 0px; + margin: 15px; + +} +.hr_leave_request_approve { + padding: 0; + padding-bottom: 0em; + padding-top: 0em; + transition: transform 0.2s ease, box-shadow 0.2s ease; + will-change: transform, box-shadow; +} +.leaves_request_month { + padding: 0; + padding-top: 0px; + padding-bottom: 0px; + padding-bottom: 0em; + padding-top: 0em; + transition: transform 0.2s ease, box-shadow 0.2s ease; + will-change: transform, box-shadow; + border-bottom: 1px solid #f1f1f133; +} +.leaves_request_today{ + padding: 0; + padding-bottom: 0em; + padding-top: 0em; + transition: transform 0.2s ease, box-shadow 0.2s ease; + will-change: transform, box-shadow; + +} +.hr_leave_request_approve:hover, .leaves_request_month:hover, .leaves_request_today:hover{ + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; +} +.hr_leave_request_approve p { + font-size: 14px; + color: #ff8762; + margin-left: 1rem; + margin-bottom: 0px; + text-align: left; + width: 64%; + font-weight: bold; + float: left; +} +.leaves_request_today p { + font-size: 14px; + color: #5ebade; + margin-left: 1rem; + margin-bottom: 0px; + text-align: left; + width:64%; + float:left; + font-weight: bold; +} +.leaves_request_month p{ + font-size: 14px; + color: #b298e1; + margin-left: 1rem; + margin-bottom:0px; + text-align: left; + width:64%; + float:left; + font-weight: bold; +} +h4 .stat-count { + font-size: 17px; + text-align: center; + color: #000 !important; + margin-top: 0px; + width: 100%; + float: left; + margin: 0; +} +.leave-manager h4 { + float: left; + width: 23%; + +} +.hr_leave_request_approve h4 { + + padding: 5.2rem 0; + margin: 0; + background: #ff8762; + color: #fff; + +} +.leaves_request_today h4 { + + padding: 2.2rem 0; + margin: 0 !important; + background: #5ebade; + color: #fff; + +} +.leaves_request_month h4 { + + padding: 2.1rem 0; + margin: 0 !important; + background: #b298e1; + color: #fff; + +} +.leaves_request_today h4 .stat-count ,.leaves_request_month h4 .stat-count , .hr_leave_request_approve h4 .stat-count +{ + color:#fff !important; +} +.graph_view .legend { + margin-bottom: 27px; + display: inline-block; + border-collapse: collapse; + border-spacing: 0px; + margin-left: 29px; +} +.hr-chart-1{ + margin: 15px 0px; + background: #fff; + padding: 0px !important; + 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); +} +.hr-chart-1:hover{ + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; +} +.stat-head { + text-align: left !important; + font-weight: 300; + font-size: 15px; + margin-bottom: 25px; + margin-left: 24px; + width: 100%; +} +.emp_graph { + padding-left: 90px; + height: auto; + padding-bottom: 65px; + text-align: center !important; +} +.hr_leave_allocations_approve p { + font-size: 14px; + color: #ff8762; + margin-left: 1rem; + margin-bottom: 0px; + text-align: left; + width: 70%; + float: left; + font-weight: bold; +} +.hr_leave_allocations_approve h4 { + + padding: 2.5rem 0; + margin: 0; + background: #ff8762; + color: #fff; + width: 26%; + float: left; +} +.hr_leave_allocations_approve .stat-count { + + font-size: 17px; + text-align: center; + color: #fff !important; + margin-top: 0px; + width: 100%; + float: left; + margin: 0; + +} +.hr_leave_allocations_approve { + + padding: 0; + padding-top: 0px; + padding-bottom: 0px; + padding-bottom: 0em; + padding-top: 0em; + box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06); + transition: transform 0.2s ease, box-shadow 0.2s ease; + will-change: transform, box-shadow; + background: #fff; + height: 80px; + +} +.hr_leave_allocations_approve:hover{ + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; +} +.leave-manager { + + background-color: #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); + padding: 0px; + margin: 15px; + margin-right: 15px; + margin-right: 0px; + width: 95% !important; + padding: 0; + +} +.hr_job_application_approve { + padding: 0; + padding-top: 0px; + padding-bottom: 0px; + padding-top: 0px; + padding-bottom: 0px; + padding-top: 0px; + padding-bottom: 0px; + padding-bottom: 0em; + padding-top: 0em; + box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62,57,107,0.06); + transition: transform 0.2s ease, box-shadow 0.2s ease; + will-change: transform, box-shadow; + background: #fff; + margin-top: 15px; + height: 80px; + +} +.hr_job_application_approve p { + font-size: 14px; + color: #70cac1; + margin-left: 1rem; + margin-bottom: 0px; + text-align: left; + width: 70%; + float: left; + font-weight: bold; +} +.hr_job_application_approve h4 { + + padding: 2.5rem 0; + margin: 0; + background: #70cac1; + color: #fff; + width: 26%; + float: left; + +} +.hr_job_application_approve .stat-count { + + font-size: 17px !important; + color: #fff !important; + margin-top: 0px !important; + width: 100%; + float: left; + margin: 0; + margin: 0px !important; + text-align: center !important; + width: 100% !important; + +} +.hr_job_application_approve:hover{ + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; +} +.hr_attendance_login .oh-card { + margin: 0; + margin-bottom: 0px; + margin-bottom: 0px; + background: #134c8a; + padding-bottom: 7px; + 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); +} +.hr_attendance_login .stat-widget-one { + background: none; +} +.hr_attendance_login .stat-widget-one .stat-icon { + text-align: center; + padding-top: 9px; +} +.hr_attendance_login .stat-content { + width: 100%; + color: #fff !important; +} +.hr_attendance_login .stat-widget-one .stat-text { + margin: 0; + text-align: center; + width: 100% !important; + padding: 0; + color: #fff; +} +.hr_attendance_login .stat-widget-one .stat-icon .fa { + font-size: 50px; +} +.hr_attendance_login .stat-widget-one .stat-icon .fa { + font-size: 50px; + margin: 0px; + box-shadow: none; +} +.hr_attendance_login { + margin-top: 1.5%; +} +.monthly_leave_graph_view .oh-card { + 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); + padding: 15px; +} +.broad_factor_graph .oh-card { + padding: 15px !important; + 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); + padding: 15px; +} +.leave_broad_factor { + overflow-x: auto !important; + overflow-y: hidden !important; + height: 336px; + padding: 0px; + padding-left: 0px; +} +#broad_factor_pdf { + + background-color: #ffffff; + float: right; + border-radius: 30px; + 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); + border: 1px solid #4ec3b7; + color: #757575; + padding-top: 9px; + color: #4ec3b7; + +} +#broad_factor_pdf:hover{ + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; +} +.hr_birthday { + font-size: 17px; + text-align: center; + padding: 20px 0; + color: #00438b; + font-weight: 300; +} +.hr_notification img { + width: 40px; + height: 40px; + border-radius: 100%; +} +.hr_notification { + 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; +} +.hr_notification .media { + border-bottom: 1px solid #e6e6e6; + padding-bottom: 6px; + margin-bottom: 10px; +} +.hr_notification .text-color.display-6 { + margin: 0px 0 3px; + color: #2d2d2d; +} +.hr_notification p { + margin: 0 0 1px; + color: #666; + font-size: 10px; +} +.hr_notification_head { + font-size: 17px; + text-align: center; + padding: 12px 0; + color: #fff; + font-weight: 300; + background: #de6a5e; + margin-bottom: 9px; +} +.monthly_leave_trend .oh-card{ + background: #fff; + transition: none !important; + will-change: none !important; + box-shadow: none !important; + margin-bottom: 5px; +} + +.monthly_leave_trend path { + stroke: #70cac1; + stroke-width: 2; + fill: none; +} + +.monthly_leave_trend .axis path, +.monthly_leave_trend .axis line { + fill: none; + stroke: grey; + stroke-width: 1; + shape-rendering: crispEdges; +} +.monthly_leave_trend circle{ + fill: #ffffff; + stroke: #44b7ac; + stroke-width: 1.5; +} +.hr-chart-1 { + margin: 15px 0px; + background: #fff; + padding: 0px !important; + padding-top: 0px; + 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); + padding-top: 3px !important; +} +.monthly_leave_trend { + 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); +} +.monthly_leave_trend:hover{ + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; +} + + +/*----------------------*/ +.monthly_join_resign_trend{ + padding-right: 0px !important; +} + +.monthly_join_resign_trend .oh-card { + 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); + padding: 15px; +} + +.monthly_join_resign_trend .axis path, +.monthly_join_resign_trend .axis line { + fill: none; + shape-rendering: crispEdges; + } + +.monthly_join_resign_trend .line { + fill: none; + stroke-width: 3px; + + } + +.monthly_join_resign_trend .area { + fill: steelblue; + opacity: 0.5; + } + +.monthly_join_resign_trend .dot { + fill: steelblue; + stroke: steelblue; + stroke-width: 1.5px; + } + +/*----------------------------------------*/ + + +.monthly_attrition_rate path { + stroke: #70cac1; + stroke-width: 2; + fill: none; +} + +.monthly_attrition_rate .axis path, +.monthly_attrition_rate .axis line { + fill: none; + stroke: grey; + stroke-width: 1; + shape-rendering: crispEdges; +} +.monthly_attrition_rate circle{ + fill: #ffffff; + stroke: #44b7ac; + stroke-width: 1.5; +} + +.monthly_attrition_rate .oh-card { + 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); + padding: 15px; +} + +.monthly_attrition_rate .oh-card:hover{ + transform: translateY(-2px) translateZ(0) !important; + box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; +} + + +.row.main-section { + margin-right: 0px; !important; +} +/* width */ +.hr_notification::-webkit-scrollbar { + width: 4px; +} + +/* Track */ +.hr_notification::-webkit-scrollbar-track { + background: #f1f1f1; +} + +/* Handle */ +.hr_notification::-webkit-scrollbar-thumb { + background: #5ebade; +} + +/* Handle on hover */ +.hr_notification::-webkit-scrollbar-thumb:hover { + background: #598da1; +} + +.oh-card-body { + display: flex; + justify-content: space-between; + align-items: center; +} + +.oh-ribbon { + position: absolute; + left: -5px; top: -5px; + z-index: 1; + overflow: hidden; + width: 150px; height: 150px; + text-align: right; +} +.oh-ribbon span { + font-size: 10px; + font-weight: bold; + color: #FFF; + text-transform: uppercase; + text-align: center; + line-height: 20px; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + width: 200px; + display: block; + background: #79A70A; + background: linear-gradient(#2989d8 0%, #1e5799 100%); + box-shadow: 0 3px 10px -5px rgba(0, 0, 0, 1); + position: absolute; + top: 56px; + left: -35px; +} +.oh-ribbon span::before { + content: ""; + position: absolute; left: 0px; top: 100%; + z-index: -1; + border-left: 3px solid #1e5799; + border-right: 3px solid transparent; + border-bottom: 3px solid transparent; + border-top: 3px solid #1e5799; +} +.oh-ribbon span::after { + content: ""; + position: absolute; right: 0px; top: 100%; + z-index: -1; + border-left: 3px solid transparent; + border-right: 3px solid #1e5799; + border-bottom: 3px solid transparent; + border-top: 3px solid #1e5799; +} + +.o_action_manager{ + overflow-y: scroll !important; + max-width:100%; + } + + .hr_notification { + + margin-top: 20px; +} + +.stat_count{ + margin-top: -111px; + margin-left: 35px; + font-size: 48px; +} + + +.stat-head { + text-align: left !important; + font-weight: 300; + font-size: 18px; + margin-bottom: 25px; + margin-left: 24px; + width: 100%; + margin-top: 57px; +} \ No newline at end of file diff --git a/dashboard_pos/static/src/js/pos_dashboard.js b/dashboard_pos/static/src/js/pos_dashboard.js new file mode 100644 index 0000000..69f302d --- /dev/null +++ b/dashboard_pos/static/src/js/pos_dashboard.js @@ -0,0 +1,540 @@ +odoo.define('dashboard_pos.Dashboard', function (require) { +"use strict"; + +var AbstractAction = require('web.AbstractAction'); +var core = require('web.core'); +const { loadBundle } = require("@web/core/assets"); +var ajax = require('web.ajax'); +var session = require('web.session'); +var web_client = require('web.web_client'); +var rpc = require('web.rpc'); +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(); +// }); +// }, + + + willStart: function() { + var self = this; + return $.when(loadBundle(this), this._super()).then(function() { + return self.fetch_data(); + }); + }, +// willStart: function() { +// var self = this; +// return Promise.all([loadBundle(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(); + }, + + + + + pos_order_today: function(e){ + var self = this; + var date = new Date(); + var yesterday = new Date(date.getTime()); + yesterday.setDate(date.getDate() - 1); + 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(); + var yesterday = new Date(date.getTime()); + yesterday.setDate(date.getDate() - 1); + 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]], + target: 'current' + }, options) + } + }); + + }, + pos_refund_today_orders: function(e){ + var self = this; + var date = new Date(); + var yesterday = new Date(date.getTime()); + yesterday.setDate(date.getDate() - 1); + 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]], + 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); + 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']], + 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']], + target: 'current' + }, options) + } + }); + + }, + + onclick_pos_sales:function(events){ + var option = $(events.target).val(); + var self = this + var ctx = self.$("#canvas_1"); + rpc.query({ + model: "pos.order", + method: "get_department", + args: [option], + }).then(function (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, { + 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; + +}); diff --git a/dashboard_pos/static/src/xml/pos_dashboard.xml b/dashboard_pos/static/src/xml/pos_dashboard.xml new file mode 100644 index 0000000..cc8ba28 --- /dev/null +++ b/dashboard_pos/static/src/xml/pos_dashboard.xml @@ -0,0 +1,294 @@ + + + +
+
+
+
+
+ +
+
+
+
+
+
+
+
Today Orders
+
+
+
+
+
+
+
+
+
+
+
+
+
Total Orders
+
+
+
+
+
+
+
+
+
+
+
+
+
Total Sales
+
+
+
+
+
+
+
+
+
+
+
+
+
Sessions
+
+
+
+
+
+
+ +
+
+
+
+
+
+
Total Refund Orders
+
+
+
+
+
+
+
+
+
+
+
+
+
Today Refund Order
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +

SALE REPORT

+
+
+
+ +
+
+
+
+
+

+
+ +
+
+
+
+
+
+
+
+
+

+

+
+ +
+
+
+
+
+

+

+
+ +
+
+
+
+
+

+

+
+ +
+
+
+
+ +
+ + +
+
+
+
+
+ Sale by Salesperson +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + +
Name   ordersAmount
+

+ +

+
+

+ +

+
+

+ +

+
+
+
+
+
+
+
+
+ Payment Method +
+
+
+
+
+
+ + + + + + + + + + + + + + + +
Payment Method   Amount
+

+ +

+
+

+ +

+
+
+
+
+
+ + +
+
+
+ Session Status +
+
+
+
+
+
+ + + + + + + + + + + + + + + +
Session   Status
+

+ +

+
+

+ +

+
+
+
+
+
+ +
+
+ + +
+
diff --git a/dashboard_pos/views/dashboard_views.xml b/dashboard_pos/views/dashboard_views.xml new file mode 100644 index 0000000..13c883c --- /dev/null +++ b/dashboard_pos/views/dashboard_views.xml @@ -0,0 +1,14 @@ + + + + Dashboard + pos_dashboard + + + + + + diff --git a/login_pos_direct/README.rst b/login_pos_direct/README.rst new file mode 100644 index 0000000..8515270 --- /dev/null +++ b/login_pos_direct/README.rst @@ -0,0 +1,38 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +POS DIRECT LOGIN +======================= +Helps to directly login to POS and Log in to configured POS shop to save time without backend. + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +Developer: V15 Ammu @cybrosys, Contact: odoo@cybrosys.com + V16 Archana @cybrosys, Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/login_pos_direct/__init__.py b/login_pos_direct/__init__.py new file mode 100644 index 0000000..8c46155 --- /dev/null +++ b/login_pos_direct/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Archana (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ + +from . import models +from . import controllers diff --git a/login_pos_direct/__manifest__.py b/login_pos_direct/__manifest__.py new file mode 100644 index 0000000..8c3d0b8 --- /dev/null +++ b/login_pos_direct/__manifest__.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Archana(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ + +{ + 'name': 'POS Direct Login', + 'version': '16.0.1.0.0', + 'category': 'Point of Sale', + 'summary': 'Helps to directly login to POS.', + 'description': 'Log in to configured POS shop to save time without backend.', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'license': 'AGPL-3', + 'depends': ['base', 'point_of_sale'], + 'data': [ + 'views/res_users_views.xml' + ], + 'images': ['static/description/banner.png'], + 'installable': True, + 'application': False, + 'auto_install': False, +} diff --git a/login_pos_direct/controllers/__init__.py b/login_pos_direct/controllers/__init__.py new file mode 100644 index 0000000..a4f6b9d --- /dev/null +++ b/login_pos_direct/controllers/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Archana (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ + +from . import direct_pos_login diff --git a/login_pos_direct/controllers/direct_pos_login.py b/login_pos_direct/controllers/direct_pos_login.py new file mode 100644 index 0000000..5fa158a --- /dev/null +++ b/login_pos_direct/controllers/direct_pos_login.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Archana (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ + +from odoo import http +from odoo.http import request +import werkzeug +from odoo.addons.web.controllers.main import home + + +class PosScreen(home.Home): + """The class PosScreen is used to login pos session directly""" + + @http.route('/web/login', type='http', auth="none") + def web_login(self, redirect=None, **kw): + """Override to add direct login to POS""" + res = super().web_login(redirect=redirect, **kw) + if request.env.user.pos_conf_id: + if not request.env.user.pos_conf_id.current_session_id: + request.env['pos.session'].sudo().create({ + 'user_id': request.env.uid, + 'config_id': request.env.user.pos_conf_id.id + }) + return werkzeug.utils.redirect('/pos/ui') + return res diff --git a/login_pos_direct/doc/RELEASE_NOTES.md b/login_pos_direct/doc/RELEASE_NOTES.md new file mode 100644 index 0000000..23efc2f --- /dev/null +++ b/login_pos_direct/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 09.03.2023 +#### Version 16.0.1.0.0 +#### ADD +- Initial commit for Pos Direct Login diff --git a/login_pos_direct/models/__init__.py b/login_pos_direct/models/__init__.py new file mode 100644 index 0000000..bd894ca --- /dev/null +++ b/login_pos_direct/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Archana (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ + +from . import res_users diff --git a/login_pos_direct/models/res_users.py b/login_pos_direct/models/res_users.py new file mode 100644 index 0000000..8e99537 --- /dev/null +++ b/login_pos_direct/models/res_users.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Archana (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +################################################################################ + +from odoo import fields, models + + +class ResUsers(models.Model): + """ THe class ResUsers is used to inherit res.users """ + _inherit = "res.users" + + pos_conf_id = fields.Many2one('pos.config', string="POS Configuration", + help='select POS for the user') diff --git a/login_pos_direct/static/description/assets/icons/check.png b/login_pos_direct/static/description/assets/icons/check.png new file mode 100644 index 0000000..c8e85f5 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/check.png differ diff --git a/login_pos_direct/static/description/assets/icons/chevron.png b/login_pos_direct/static/description/assets/icons/chevron.png new file mode 100644 index 0000000..2089293 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/chevron.png differ diff --git a/login_pos_direct/static/description/assets/icons/cogs.png b/login_pos_direct/static/description/assets/icons/cogs.png new file mode 100644 index 0000000..95d0bad Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/cogs.png differ diff --git a/login_pos_direct/static/description/assets/icons/consultation.png b/login_pos_direct/static/description/assets/icons/consultation.png new file mode 100644 index 0000000..8319d4b Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/consultation.png differ diff --git a/login_pos_direct/static/description/assets/icons/ecom-black.png b/login_pos_direct/static/description/assets/icons/ecom-black.png new file mode 100644 index 0000000..a9385ff Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/ecom-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/education-black.png b/login_pos_direct/static/description/assets/icons/education-black.png new file mode 100644 index 0000000..3eb09b2 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/education-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/hotel-black.png b/login_pos_direct/static/description/assets/icons/hotel-black.png new file mode 100644 index 0000000..130f613 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/hotel-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/license.png b/login_pos_direct/static/description/assets/icons/license.png new file mode 100644 index 0000000..a586979 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/license.png differ diff --git a/login_pos_direct/static/description/assets/icons/lifebuoy.png b/login_pos_direct/static/description/assets/icons/lifebuoy.png new file mode 100644 index 0000000..658d56c Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/lifebuoy.png differ diff --git a/login_pos_direct/static/description/assets/icons/manufacturing-black.png b/login_pos_direct/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 0000000..697eb0e Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/manufacturing-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/pos-black.png b/login_pos_direct/static/description/assets/icons/pos-black.png new file mode 100644 index 0000000..97c0f90 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/pos-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/puzzle.png b/login_pos_direct/static/description/assets/icons/puzzle.png new file mode 100644 index 0000000..65cf854 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/puzzle.png differ diff --git a/login_pos_direct/static/description/assets/icons/restaurant-black.png b/login_pos_direct/static/description/assets/icons/restaurant-black.png new file mode 100644 index 0000000..4a35eb9 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/restaurant-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/service-black.png b/login_pos_direct/static/description/assets/icons/service-black.png new file mode 100644 index 0000000..301ab51 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/service-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/trading-black.png b/login_pos_direct/static/description/assets/icons/trading-black.png new file mode 100644 index 0000000..9398ba2 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/trading-black.png differ diff --git a/login_pos_direct/static/description/assets/icons/training.png b/login_pos_direct/static/description/assets/icons/training.png new file mode 100644 index 0000000..884ca02 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/training.png differ diff --git a/login_pos_direct/static/description/assets/icons/update.png b/login_pos_direct/static/description/assets/icons/update.png new file mode 100644 index 0000000..ecbc5a0 Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/update.png differ diff --git a/login_pos_direct/static/description/assets/icons/user.png b/login_pos_direct/static/description/assets/icons/user.png new file mode 100644 index 0000000..6ffb23d Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/user.png differ diff --git a/login_pos_direct/static/description/assets/icons/wrench.png b/login_pos_direct/static/description/assets/icons/wrench.png new file mode 100644 index 0000000..6c04dea Binary files /dev/null and b/login_pos_direct/static/description/assets/icons/wrench.png differ diff --git a/login_pos_direct/static/description/assets/misc/categories.png b/login_pos_direct/static/description/assets/misc/categories.png new file mode 100644 index 0000000..bedf1e0 Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/categories.png differ diff --git a/login_pos_direct/static/description/assets/misc/check-box.png b/login_pos_direct/static/description/assets/misc/check-box.png new file mode 100644 index 0000000..42caf24 Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/check-box.png differ diff --git a/login_pos_direct/static/description/assets/misc/compass.png b/login_pos_direct/static/description/assets/misc/compass.png new file mode 100644 index 0000000..d5fed8f Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/compass.png differ diff --git a/login_pos_direct/static/description/assets/misc/corporate.png b/login_pos_direct/static/description/assets/misc/corporate.png new file mode 100644 index 0000000..2eb13ed Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/corporate.png differ diff --git a/login_pos_direct/static/description/assets/misc/customer-support.png b/login_pos_direct/static/description/assets/misc/customer-support.png new file mode 100644 index 0000000..79efc72 Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/customer-support.png differ diff --git a/login_pos_direct/static/description/assets/misc/cybrosys-logo.png b/login_pos_direct/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 0000000..cc3cc0c Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/cybrosys-logo.png differ diff --git a/login_pos_direct/static/description/assets/misc/features.png b/login_pos_direct/static/description/assets/misc/features.png new file mode 100644 index 0000000..b41769f Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/features.png differ diff --git a/login_pos_direct/static/description/assets/misc/logo.png b/login_pos_direct/static/description/assets/misc/logo.png new file mode 100644 index 0000000..478462d Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/logo.png differ diff --git a/login_pos_direct/static/description/assets/misc/pictures.png b/login_pos_direct/static/description/assets/misc/pictures.png new file mode 100644 index 0000000..56d255f Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/pictures.png differ diff --git a/login_pos_direct/static/description/assets/misc/pie-chart.png b/login_pos_direct/static/description/assets/misc/pie-chart.png new file mode 100644 index 0000000..426e052 Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/pie-chart.png differ diff --git a/login_pos_direct/static/description/assets/misc/right-arrow.png b/login_pos_direct/static/description/assets/misc/right-arrow.png new file mode 100644 index 0000000..730984a Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/right-arrow.png differ diff --git a/login_pos_direct/static/description/assets/misc/star.png b/login_pos_direct/static/description/assets/misc/star.png new file mode 100644 index 0000000..2eb9ab2 Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/star.png differ diff --git a/login_pos_direct/static/description/assets/misc/support.png b/login_pos_direct/static/description/assets/misc/support.png new file mode 100644 index 0000000..4f18b8b Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/support.png differ diff --git a/login_pos_direct/static/description/assets/misc/whatsapp.png b/login_pos_direct/static/description/assets/misc/whatsapp.png new file mode 100644 index 0000000..d513a53 Binary files /dev/null and b/login_pos_direct/static/description/assets/misc/whatsapp.png differ diff --git a/login_pos_direct/static/description/assets/modules/4.png b/login_pos_direct/static/description/assets/modules/4.png new file mode 100644 index 0000000..31ed467 Binary files /dev/null and b/login_pos_direct/static/description/assets/modules/4.png differ diff --git a/login_pos_direct/static/description/assets/modules/5.png b/login_pos_direct/static/description/assets/modules/5.png new file mode 100644 index 0000000..038385e Binary files /dev/null and b/login_pos_direct/static/description/assets/modules/5.png differ diff --git a/login_pos_direct/static/description/assets/modules/6.png b/login_pos_direct/static/description/assets/modules/6.png new file mode 100644 index 0000000..6553478 Binary files /dev/null and b/login_pos_direct/static/description/assets/modules/6.png differ diff --git a/login_pos_direct/static/description/assets/screenshots/123.png b/login_pos_direct/static/description/assets/screenshots/123.png new file mode 100644 index 0000000..f8d1f62 Binary files /dev/null and b/login_pos_direct/static/description/assets/screenshots/123.png differ diff --git a/login_pos_direct/static/description/assets/screenshots/234.png b/login_pos_direct/static/description/assets/screenshots/234.png new file mode 100644 index 0000000..7963b66 Binary files /dev/null and b/login_pos_direct/static/description/assets/screenshots/234.png differ diff --git a/login_pos_direct/static/description/assets/screenshots/345.png b/login_pos_direct/static/description/assets/screenshots/345.png new file mode 100644 index 0000000..f9d3ef8 Binary files /dev/null and b/login_pos_direct/static/description/assets/screenshots/345.png differ diff --git a/login_pos_direct/static/description/assets/screenshots/hero.gif b/login_pos_direct/static/description/assets/screenshots/hero.gif new file mode 100644 index 0000000..e24f3e3 Binary files /dev/null and b/login_pos_direct/static/description/assets/screenshots/hero.gif differ diff --git a/login_pos_direct/static/description/banner.png b/login_pos_direct/static/description/banner.png new file mode 100644 index 0000000..7595744 Binary files /dev/null and b/login_pos_direct/static/description/banner.png differ diff --git a/login_pos_direct/static/description/icon.png b/login_pos_direct/static/description/icon.png new file mode 100644 index 0000000..b563daa Binary files /dev/null and b/login_pos_direct/static/description/icon.png differ diff --git a/login_pos_direct/static/description/index.html b/login_pos_direct/static/description/index.html new file mode 100644 index 0000000..57bfa7b --- /dev/null +++ b/login_pos_direct/static/description/index.html @@ -0,0 +1,551 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+
+ +
+
+
+ +

+ POS Direct Login +

+

A Module For Direct + Login into POS. + +

+ + + +
+
+
+ + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module allows to directly login to POS no need to access Backend. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Enterprise and Community compatible. +
+
+ + Direct user based login to pos save time. +
+ + +
+
+ +
+ + Available in Odoo 16.0 + Community +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Configuration for + User +

+

Select POS for the + user.

+ +
+ +
+

Login +

+

Direct Login to + POS.

+ +
+
+ + + +
+ + +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/login_pos_direct/views/res_users_views.xml b/login_pos_direct/views/res_users_views.xml new file mode 100644 index 0000000..b51b753 --- /dev/null +++ b/login_pos_direct/views/res_users_views.xml @@ -0,0 +1,22 @@ + + + + + view.users.form.inherit + res.users + + + + + + + + + + + + + + + + diff --git a/simplified_pos/README.rst b/simplified_pos/README.rst new file mode 100755 index 0000000..b17d57a --- /dev/null +++ b/simplified_pos/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Simplified POS +=============== +This module provides all aspects of pos on a single page in Odoo. + +Configuration +============= +* No Additional configuration is needed. + +License +------- +General Public License, Version 3 (AGPL-3). +(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +Developer: Swetha Anand @cybrosys, Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/simplified_pos/__init__.py b/simplified_pos/__init__.py new file mode 100644 index 0000000..e063a18 --- /dev/null +++ b/simplified_pos/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Swetha Anand (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### diff --git a/simplified_pos/__manifest__.py b/simplified_pos/__manifest__.py new file mode 100644 index 0000000..2dff409 --- /dev/null +++ b/simplified_pos/__manifest__.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Swetha Anand (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': 'Simplified POS', + 'version': '16.0.1.0.0', + 'category': 'Point of Sale', + 'summary': 'All aspects of POS on a single page.', + 'description': 'A straightforward point-of-sale system that enables ' + 'payment,order confirmation, and product selection all on ' + 'the same page.', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'images': ['static/description/banner.jpg'], + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'point_of_sale'], + 'assets': { + 'point_of_sale.assets': [ + 'simplified_pos/static/src/js/ProductScreen.js', + 'simplified_pos/static/src/js/ConfirmationPopup.js', + 'simplified_pos/static/src/js/PrintPopup.js', + 'simplified_pos/static/src/js/ProductScreenPaymentLine.js', + 'simplified_pos/static/src/js/ProductWidgetSimple.js', + 'simplified_pos/static/src/scss/pos.scss', + 'simplified_pos/static/src/xml/ProductScreen.xml', + 'simplified_pos/static/src/xml/OrderWidget.xml', + 'simplified_pos/static/src/xml/ActionpadWidget.xml', + 'simplified_pos/static/src/xml/ConfirmationPopup.xml', + 'simplified_pos/static/src/xml/PrintPopup.xml', + 'simplified_pos/static/src/xml/PaymentScreenPaymentLine.xml', + 'simplified_pos/static/src/xml/ProductWidgetControlPanel.xml', + 'simplified_pos/static/src/xml/chrome.xml', + ] + }, + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/simplified_pos/doc/RELEASE_NOTES.md b/simplified_pos/doc/RELEASE_NOTES.md new file mode 100644 index 0000000..93708f2 --- /dev/null +++ b/simplified_pos/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module +#### 01.07.2023 +#### Version 16.0.1.0.0 +#### ADD + +- Initial commit for Simplified POS diff --git a/simplified_pos/static/description/assets/icons/check.png b/simplified_pos/static/description/assets/icons/check.png new file mode 100644 index 0000000..c8e85f5 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/check.png differ diff --git a/simplified_pos/static/description/assets/icons/chevron.png b/simplified_pos/static/description/assets/icons/chevron.png new file mode 100644 index 0000000..2089293 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/chevron.png differ diff --git a/simplified_pos/static/description/assets/icons/cogs.png b/simplified_pos/static/description/assets/icons/cogs.png new file mode 100644 index 0000000..95d0bad Binary files /dev/null and b/simplified_pos/static/description/assets/icons/cogs.png differ diff --git a/simplified_pos/static/description/assets/icons/consultation.png b/simplified_pos/static/description/assets/icons/consultation.png new file mode 100644 index 0000000..8319d4b Binary files /dev/null and b/simplified_pos/static/description/assets/icons/consultation.png differ diff --git a/simplified_pos/static/description/assets/icons/ecom-black.png b/simplified_pos/static/description/assets/icons/ecom-black.png new file mode 100644 index 0000000..a9385ff Binary files /dev/null and b/simplified_pos/static/description/assets/icons/ecom-black.png differ diff --git a/simplified_pos/static/description/assets/icons/education-black.png b/simplified_pos/static/description/assets/icons/education-black.png new file mode 100644 index 0000000..3eb09b2 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/education-black.png differ diff --git a/simplified_pos/static/description/assets/icons/hotel-black.png b/simplified_pos/static/description/assets/icons/hotel-black.png new file mode 100644 index 0000000..130f613 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/hotel-black.png differ diff --git a/simplified_pos/static/description/assets/icons/license.png b/simplified_pos/static/description/assets/icons/license.png new file mode 100644 index 0000000..a586979 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/license.png differ diff --git a/simplified_pos/static/description/assets/icons/lifebuoy.png b/simplified_pos/static/description/assets/icons/lifebuoy.png new file mode 100644 index 0000000..658d56c Binary files /dev/null and b/simplified_pos/static/description/assets/icons/lifebuoy.png differ diff --git a/simplified_pos/static/description/assets/icons/manufacturing-black.png b/simplified_pos/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 0000000..697eb0e Binary files /dev/null and b/simplified_pos/static/description/assets/icons/manufacturing-black.png differ diff --git a/simplified_pos/static/description/assets/icons/pos-black.png b/simplified_pos/static/description/assets/icons/pos-black.png new file mode 100644 index 0000000..97c0f90 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/pos-black.png differ diff --git a/simplified_pos/static/description/assets/icons/puzzle.png b/simplified_pos/static/description/assets/icons/puzzle.png new file mode 100644 index 0000000..65cf854 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/puzzle.png differ diff --git a/simplified_pos/static/description/assets/icons/restaurant-black.png b/simplified_pos/static/description/assets/icons/restaurant-black.png new file mode 100644 index 0000000..4a35eb9 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/restaurant-black.png differ diff --git a/simplified_pos/static/description/assets/icons/service-black.png b/simplified_pos/static/description/assets/icons/service-black.png new file mode 100644 index 0000000..301ab51 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/service-black.png differ diff --git a/simplified_pos/static/description/assets/icons/trading-black.png b/simplified_pos/static/description/assets/icons/trading-black.png new file mode 100644 index 0000000..9398ba2 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/trading-black.png differ diff --git a/simplified_pos/static/description/assets/icons/training.png b/simplified_pos/static/description/assets/icons/training.png new file mode 100644 index 0000000..884ca02 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/training.png differ diff --git a/simplified_pos/static/description/assets/icons/update.png b/simplified_pos/static/description/assets/icons/update.png new file mode 100644 index 0000000..ecbc5a0 Binary files /dev/null and b/simplified_pos/static/description/assets/icons/update.png differ diff --git a/simplified_pos/static/description/assets/icons/user.png b/simplified_pos/static/description/assets/icons/user.png new file mode 100644 index 0000000..6ffb23d Binary files /dev/null and b/simplified_pos/static/description/assets/icons/user.png differ diff --git a/simplified_pos/static/description/assets/icons/wrench.png b/simplified_pos/static/description/assets/icons/wrench.png new file mode 100644 index 0000000..6c04dea Binary files /dev/null and b/simplified_pos/static/description/assets/icons/wrench.png differ diff --git a/simplified_pos/static/description/assets/misc/categories.png b/simplified_pos/static/description/assets/misc/categories.png new file mode 100644 index 0000000..bedf1e0 Binary files /dev/null and b/simplified_pos/static/description/assets/misc/categories.png differ diff --git a/simplified_pos/static/description/assets/misc/check-box.png b/simplified_pos/static/description/assets/misc/check-box.png new file mode 100644 index 0000000..42caf24 Binary files /dev/null and b/simplified_pos/static/description/assets/misc/check-box.png differ diff --git a/simplified_pos/static/description/assets/misc/compass.png b/simplified_pos/static/description/assets/misc/compass.png new file mode 100644 index 0000000..d5fed8f Binary files /dev/null and b/simplified_pos/static/description/assets/misc/compass.png differ diff --git a/simplified_pos/static/description/assets/misc/corporate.png b/simplified_pos/static/description/assets/misc/corporate.png new file mode 100644 index 0000000..2eb13ed Binary files /dev/null and b/simplified_pos/static/description/assets/misc/corporate.png differ diff --git a/simplified_pos/static/description/assets/misc/customer-support.png b/simplified_pos/static/description/assets/misc/customer-support.png new file mode 100644 index 0000000..79efc72 Binary files /dev/null and b/simplified_pos/static/description/assets/misc/customer-support.png differ diff --git a/simplified_pos/static/description/assets/misc/cybrosys-logo.png b/simplified_pos/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 0000000..cc3cc0c Binary files /dev/null and b/simplified_pos/static/description/assets/misc/cybrosys-logo.png differ diff --git a/simplified_pos/static/description/assets/misc/features.png b/simplified_pos/static/description/assets/misc/features.png new file mode 100644 index 0000000..b41769f Binary files /dev/null and b/simplified_pos/static/description/assets/misc/features.png differ diff --git a/simplified_pos/static/description/assets/misc/logo.png b/simplified_pos/static/description/assets/misc/logo.png new file mode 100644 index 0000000..478462d Binary files /dev/null and b/simplified_pos/static/description/assets/misc/logo.png differ diff --git a/simplified_pos/static/description/assets/misc/pictures.png b/simplified_pos/static/description/assets/misc/pictures.png new file mode 100644 index 0000000..56d255f Binary files /dev/null and b/simplified_pos/static/description/assets/misc/pictures.png differ diff --git a/simplified_pos/static/description/assets/misc/pie-chart.png b/simplified_pos/static/description/assets/misc/pie-chart.png new file mode 100644 index 0000000..426e052 Binary files /dev/null and b/simplified_pos/static/description/assets/misc/pie-chart.png differ diff --git a/simplified_pos/static/description/assets/misc/right-arrow.png b/simplified_pos/static/description/assets/misc/right-arrow.png new file mode 100644 index 0000000..730984a Binary files /dev/null and b/simplified_pos/static/description/assets/misc/right-arrow.png differ diff --git a/simplified_pos/static/description/assets/misc/star.png b/simplified_pos/static/description/assets/misc/star.png new file mode 100644 index 0000000..2eb9ab2 Binary files /dev/null and b/simplified_pos/static/description/assets/misc/star.png differ diff --git a/simplified_pos/static/description/assets/misc/support.png b/simplified_pos/static/description/assets/misc/support.png new file mode 100644 index 0000000..4f18b8b Binary files /dev/null and b/simplified_pos/static/description/assets/misc/support.png differ diff --git a/simplified_pos/static/description/assets/misc/whatsapp.png b/simplified_pos/static/description/assets/misc/whatsapp.png new file mode 100644 index 0000000..d513a53 Binary files /dev/null and b/simplified_pos/static/description/assets/misc/whatsapp.png differ diff --git a/simplified_pos/static/description/assets/modules/1.gif b/simplified_pos/static/description/assets/modules/1.gif new file mode 100644 index 0000000..db040e0 Binary files /dev/null and b/simplified_pos/static/description/assets/modules/1.gif differ diff --git a/simplified_pos/static/description/assets/modules/2.png b/simplified_pos/static/description/assets/modules/2.png new file mode 100644 index 0000000..3415917 Binary files /dev/null and b/simplified_pos/static/description/assets/modules/2.png differ diff --git a/simplified_pos/static/description/assets/modules/3.png b/simplified_pos/static/description/assets/modules/3.png new file mode 100644 index 0000000..a291197 Binary files /dev/null and b/simplified_pos/static/description/assets/modules/3.png differ diff --git a/simplified_pos/static/description/assets/modules/4.png b/simplified_pos/static/description/assets/modules/4.png new file mode 100644 index 0000000..b55ddc8 Binary files /dev/null and b/simplified_pos/static/description/assets/modules/4.png differ diff --git a/simplified_pos/static/description/assets/modules/5.png b/simplified_pos/static/description/assets/modules/5.png new file mode 100644 index 0000000..25ed3e0 Binary files /dev/null and b/simplified_pos/static/description/assets/modules/5.png differ diff --git a/simplified_pos/static/description/assets/modules/6.png b/simplified_pos/static/description/assets/modules/6.png new file mode 100644 index 0000000..15b1412 Binary files /dev/null and b/simplified_pos/static/description/assets/modules/6.png differ diff --git a/simplified_pos/static/description/assets/screenshots/hero.gif b/simplified_pos/static/description/assets/screenshots/hero.gif new file mode 100644 index 0000000..7297714 Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/hero.gif differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_01.png b/simplified_pos/static/description/assets/screenshots/s_pos_01.png new file mode 100644 index 0000000..555dfac Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_01.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_02.png b/simplified_pos/static/description/assets/screenshots/s_pos_02.png new file mode 100644 index 0000000..d7d3f2a Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_02.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_03.png b/simplified_pos/static/description/assets/screenshots/s_pos_03.png new file mode 100644 index 0000000..e21a2d3 Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_03.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_04.png b/simplified_pos/static/description/assets/screenshots/s_pos_04.png new file mode 100644 index 0000000..ae21876 Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_04.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_05.png b/simplified_pos/static/description/assets/screenshots/s_pos_05.png new file mode 100644 index 0000000..c57abf2 Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_05.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_06.png b/simplified_pos/static/description/assets/screenshots/s_pos_06.png new file mode 100644 index 0000000..c5a4f06 Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_06.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_07.png b/simplified_pos/static/description/assets/screenshots/s_pos_07.png new file mode 100644 index 0000000..ea2625a Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_07.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_08.png b/simplified_pos/static/description/assets/screenshots/s_pos_08.png new file mode 100644 index 0000000..ab39944 Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_08.png differ diff --git a/simplified_pos/static/description/assets/screenshots/s_pos_09.png b/simplified_pos/static/description/assets/screenshots/s_pos_09.png new file mode 100644 index 0000000..1acb82b Binary files /dev/null and b/simplified_pos/static/description/assets/screenshots/s_pos_09.png differ diff --git a/simplified_pos/static/description/banner.jpg b/simplified_pos/static/description/banner.jpg new file mode 100644 index 0000000..9ce3e0c Binary files /dev/null and b/simplified_pos/static/description/banner.jpg differ diff --git a/simplified_pos/static/description/icon.png b/simplified_pos/static/description/icon.png new file mode 100644 index 0000000..c835366 Binary files /dev/null and b/simplified_pos/static/description/icon.png differ diff --git a/simplified_pos/static/description/index.html b/simplified_pos/static/description/index.html new file mode 100644 index 0000000..6b7ba8e --- /dev/null +++ b/simplified_pos/static/description/index.html @@ -0,0 +1,686 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+ +

+ Simplified Pos

+

+ All aspects of pos on + a single page.

+ + +
+
+
+
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ With the help of this app, you may perform all point-of-sale tasks in a + single frame. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+ + Choosing a product, confirming an order, and making a payment all on the same page. +
+
+ + + + +
+
+ +
+

+ Screenshots +

+
+
+
+
+

+ A POS frame

+

+ This is the new point + of sale frame.

+ +
+ +
+

+ Product Search

+

+ We can search for + products here.

+ +
+ +
+

+ Add Products to Order + line

+

+ When a product is + clicked, it is added to the order lines and the total is + displayed beneath it. We can adjust the amount, + price, and discount using the number pad.

+ +
+ +
+

+ Add Payment + Methods

+

+ We can select the + necessary payment options, which can be shown beneath the + summary.

+ +
+ +
+

+ Choose Customer

+

+ By pressing the search + button, we may choose a customer.

+ +
+ +
+

+ Click

+

+ Click this to validate + the order.

+ +
+ +
+

+ Click

+

+ Click confirm to + confirm order else click cancel.

+ +
+ +
+

+ Click

+

+ Click print to print + the order.

+ +
+ +
+

+ Click New order

+

+ To access the new + order, click New Order.

+ +
+
+
+ + +
+
+ +
+

+ Suggested + Products +

+
+
+
+ +
+
+ + + + + +
+
+ +
+

+ Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

+ Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/simplified_pos/static/src/js/ConfirmationPopup.js b/simplified_pos/static/src/js/ConfirmationPopup.js new file mode 100644 index 0000000..cdd7169 --- /dev/null +++ b/simplified_pos/static/src/js/ConfirmationPopup.js @@ -0,0 +1,44 @@ +odoo.define('point_of_sale.ConfirmationPopup', function (require) { + 'use strict'; + const { _lt } = require('@web/core/l10n/translation'); + const PaymentScreen = require('point_of_sale.PaymentScreen'); + const Registries = require('point_of_sale.Registries'); + const { useBus } = require('@web/core/utils/hooks'); + + class ConfirmationPopup extends PaymentScreen { + /*This is to add the workings inside confirmationPopup.*/ + setup() { + super.setup(); + if (this.props.confirmKey) { + useBus(this.env.posbus, `confirm-popup-${this.props.id}`, this.confirm); + } + } + async confirm(ev) { + /*Once confirm is clicked, the confirm function is activated, + and a PrintPopup is displayed, confirming the order.*/ + this.showPopup("PrintPopup", { + title: _lt('Print order'), + confirmText: _lt('Print'), + cancelText: this.env._t('Cancel'), + }); + this.validateOrder(false) + this.env.posbus.trigger('close-popup', { + popupId: this.props.id, + response: { confirmed: true, payload: await this.getPayload() }, + }); + } + async getPayload() { + return null; + } + async cancel(ev) { + /*Orders are cancelled through the cancel function.*/ + window.location.reload(); + } + get nextScreen() { + return !this.error ? 'ProductScreen' : 'ProductScreen'; + } + } + ConfirmationPopup.template = 'ConfirmationPopup'; + Registries.Component.add(ConfirmationPopup); + return ConfirmationPopup; +}); \ No newline at end of file diff --git a/simplified_pos/static/src/js/PrintPopup.js b/simplified_pos/static/src/js/PrintPopup.js new file mode 100644 index 0000000..516d554 --- /dev/null +++ b/simplified_pos/static/src/js/PrintPopup.js @@ -0,0 +1,51 @@ +odoo.define('point_of_sale.PrintPopup', function (require) { + 'use strict'; + + const AbstractAwaitablePopup = require('point_of_sale.AbstractAwaitablePopup'); + const Registries = require('point_of_sale.Registries'); + + class PrintPopup extends AbstractAwaitablePopup { + setup() { + super.setup(); + } + async printReceipt() { + /*create a new window to hold the content to be printed*/ + var printWindow = window.open('', 'PrintWindow', 'height=600,width=400'); + /* get the HTML content of the popup, excluding the buttons*/ + var content = this.el.innerHTML; + content = content.replace(/]*>[\s\S]*<\/footer>/gi, ''); + content = content.replace(/]*>[\s\S]*<\/header>/gi, ''); + /* set the content of the new window to the modified HTML*/ + printWindow.document.write(content); + /* print the content and close the window*/ + printWindow.print(); + window.location.reload(); + } + async cancel() { + /*Orders are cancelled through the cancel function.*/ + window.location.reload(); + } + get orderlines() { + /*Selected order lines are passed to UI.*/ + var orderlines = this.env.pos.selectedOrder.orderlines + var orderlinesList = [] + orderlines.forEach(function (orderlines) { + var totalprice = orderlines.price * orderlines.quantity + orderlinesList.push([orderlines.product.display_name, orderlines.quantity, orderlines.price, totalprice]) + }) + return orderlinesList; + } + get total() { + /*Total is calculated and passed*/ + var total = 0 + var totalvalues = this.env.pos.selectedOrder.paymentlines + totalvalues.forEach(function (totalvalues) { + total = total + totalvalues.amount + }) + return total; + } + } + PrintPopup.template = 'PrintPopup'; + Registries.Component.add(PrintPopup); + return PrintPopup; +}); \ No newline at end of file diff --git a/simplified_pos/static/src/js/ProductScreen.js b/simplified_pos/static/src/js/ProductScreen.js new file mode 100644 index 0000000..bbf891c --- /dev/null +++ b/simplified_pos/static/src/js/ProductScreen.js @@ -0,0 +1,87 @@ +odoo.define('point_of_sale.customer', function (require) { + const ProductScreen = require('point_of_sale.ProductScreen'); + const { useListener } = require("@web/core/utils/hooks"); + const Registries = require('point_of_sale.Registries'); + const { _lt } = require('@web/core/l10n/translation'); + const CustomerButtons = (ProductScreen) => + class extends ProductScreen { + /*Here, the ProductScreen has been extended, and some features have been overridden.*/ + setup() { + super.setup(); + useListener('new-payment-line', this.newPaymentLine); + useListener('confirm-order', this.confirmOrder); + useListener('select-line', this._selectLine); + } + customerdetails() { + this.onClickPartner(); + } + confirmOrder() { + /* When performing validation, this function checks the + requirements and displays an error message if any are reduced.*/ + var paymentline = this.currentOrder.paymentlines.length + var partner = this.currentOrder.partner + var orderlines = this.currentOrder.orderlines.length + if (orderlines == 0) { + this.showPopup('ErrorPopup', { + title: this.env._t('Error'), + body: this.env._t('Cart is empty.'), + }); + } + else if (partner == null) { + this.showPopup('ErrorPopup', { + title: this.env._t('Error'), + body: this.env._t('Select a Customer.'), + }); + } + else if (paymentline == 0) { + this.showPopup('ErrorPopup', { + title: this.env._t('Error'), + body: this.env._t('Select a Payment Method'), + }); + } + else { + this.showPopup("ConfirmationPopup", { + title: _lt('Confirmation'), + confirmText: _lt('Confirm'), + cancelText: this.env._t('Cancel'), + }); + } + } + orderDone() { + this.env.pos.removeOrder(this.currentOrder); + this.env.pos.add_new_order(); + const { name, props } = this.nextScreen; + this.showScreen(name, props); + if (this.env.pos.config.iface_customer_facing_display) { + this.env.pos.send_current_order_to_customer_facing_display(); + } + } + newPaymentLine({ detail: paymentMethod }) { + let result = this.currentOrder.add_paymentline(paymentMethod); + if (result) { + return true; + } + else { + return false; + } + } + get paymentLines() { + return this.env.pos.get_order().get_paymentlines(); + } + get_partner() { + return this.partner; + } + set_partner(partner) { + this.partner = this.env.pos.selectedPartner[4]; + } + get nextScreen() { + return { name: 'ProductScreen' }; + } + _selectLine(event) { + this.env.pos.selectedOrder.select_orderline(event.detail.orderline); + } + + } + Registries.Component.extend(ProductScreen, CustomerButtons); + return CustomerButtons; +}); \ No newline at end of file diff --git a/simplified_pos/static/src/js/ProductScreenPaymentLine.js b/simplified_pos/static/src/js/ProductScreenPaymentLine.js new file mode 100644 index 0000000..8520fbf --- /dev/null +++ b/simplified_pos/static/src/js/ProductScreenPaymentLine.js @@ -0,0 +1,35 @@ +odoo.define('point_of_sale.ProductScreenPaymentLine', function (require) { + 'use strict'; + const PaymentScreenPaymentLines = require('point_of_sale.PaymentScreenPaymentLines'); + const Registries = require('point_of_sale.Registries'); + const NumberBuffer = require('point_of_sale.NumberBuffer'); + const { useListener } = require("@web/core/utils/hooks"); + const ProductScreenPaymentLine = (PaymentScreenPaymentLines) => + class extends PaymentScreenPaymentLines { + /*Here PaymentScreenPaymentLines is extended.*/ + setup() { + super.setup(); + useListener('delete-payment', this.deletePayment); + useListener('select-payment-line', this.selectPaymentLine); + } + selectPaymentLine(event) { + /*This helps to select payment line in summary.*/ + const { cid } = event.detail; + const line = this.env.pos.selectedOrder.paymentlines.find((line) => line.cid === cid); + this.env.pos.selectedOrder.select_paymentline(line); + NumberBuffer.reset(); + this.render(true); + } + deletePayment(event) { + /*This is to delete payment lines from summary.*/ + const { cid } = event.detail; + const paymentline = this.env.pos.selectedOrder.paymentlines.find((line) => line.cid === cid); + if (paymentline) { + this.env.pos.selectedOrder.remove_paymentline(paymentline); + this.render(true); + } + } + }; + Registries.Component.extend(PaymentScreenPaymentLines, ProductScreenPaymentLine); + return ProductScreenPaymentLine; +}); \ No newline at end of file diff --git a/simplified_pos/static/src/js/ProductWidgetSimple.js b/simplified_pos/static/src/js/ProductWidgetSimple.js new file mode 100644 index 0000000..df79433 --- /dev/null +++ b/simplified_pos/static/src/js/ProductWidgetSimple.js @@ -0,0 +1,24 @@ +odoo.define('point_of_sale.ProductsWidgetSimple', function (require) { + 'use strict'; + const Registries = require('point_of_sale.Registries'); + const ProductsWidget = require('point_of_sale.ProductsWidget'); + const ProductsWidgetSimple = (ProductsWidget) => + class extends ProductsWidget { + setup() { + super.setup(); + } + get productsToDisplay() { + /* This function is override to remove products showing before hand.*/ + let list = []; + if (this.searchWord !== '') { + list = this.env.pos.db.search_product_in_category( + this.selectedCategoryId, + this.searchWord + ); + } + return list.sort(function (a, b) { return a.display_name.localeCompare(b.display_name) }); + } + }; + Registries.Component.extend(ProductsWidget, ProductsWidgetSimple); + return ProductsWidgetSimple; +}); \ No newline at end of file diff --git a/simplified_pos/static/src/scss/pos.scss b/simplified_pos/static/src/scss/pos.scss new file mode 100644 index 0000000..35305e6 --- /dev/null +++ b/simplified_pos/static/src/scss/pos.scss @@ -0,0 +1,209 @@ +.pos .leftpane { + background: $gray-200; + float:left; + height: 98%; + display: flex; + flex-direction: column; + flex-grow: 1; + width:30%; + border: solid 5px teal;; + &::-webkit-scrollbar { + width: 0; + } +} +.pos .subwindow .subwindow-container-fix { + height: 100%; + position: relative; + overflow-y: scroll;; + &::-webkit-scrollbar { + width: 0; + } +} +.pos .products-widget { + display: flex; + flex-direction: column; + flex-grow: 1; + height:100%; + overflow: hidden;; + &::-webkit-scrollbar { + width: 0; + } +} +.pos .order .orderlines { + &::-webkit-scrollbar { + width: 0; + } +} +.pos-topheader { + background: teal !important; +} +.payment-status-container { + margin-top: 70px !important; +} +.paymentlines-container { + height: 29% !important; +} +.nextorder{ + margin-bottom:8px !important; + width:29% !important; +} +.pos .product-list-container .product-list-empty p { + margin: 10px; + text-align: center; + color: teal; + font-size: 14px; +} +.pos .button.validation .pay-circle { + background: white; + color: teal; +} +.pos .numpad { + display: grid; + grid-template-columns: repeat(4, 1fr); + text-align: center; + flex-grow: 1; + width: 100%; + min-width: 216px; +} +.pos .numpad button { + border-color:teal; + color:teal; + border-top: 1px solid; + border-bottom: 0px; +} +.pos .mode-button.selected-mode { + color: teal; + background: white; + border-color: teal; +} +.pos .actionpad { + padding: 0; + text-align: center; + vertical-align: top; + border: none; + border-right: 1px solid $gray-300; + flex-grow: 1; + width: 50%; +} +.pos .right{ + float:right; + background:white; + width:30%; + height: 98.9%; + border: solid 5px teal; + box-sizing: border-box; + margin-top: 2px; + margin-bottom: 8px; +} +.pos .customer-button{ + width: 65%; + margin-bottom: 110px; + border: 2px solid teal !important; + color: teal !important; +} +.pos .head{ + color: #017e84; + font-size: 12px; + font-weight: bold; +} +.pos .center{ + background:white; + height: 100%; +} +.pos ._o_customer{ + text-align: justify; + margin-left: 30px; + margin-right: 30px; +} +.pos .paymentlines-container { + padding: 16px; + padding-top: 0; + border: solid 5px teal; + min-height: 154px; + text-align:center; + padding: 50px 30px 0px 18px; + font-size: 30px; + color: #43996E; +} +.pos p.title-category { + margin: 0; + padding: map-get($spacers, 1) map-get($spacers, 3); + background: $gray-300; + color: teal; + text-transform: uppercase; + font-weight: bold; + font-size: 15px; + order: 1; +} +.pos .payment-status-total-due { + font-size: 17px; + padding-top: 12px; + padding-bottom: 12px; + color: $gray-500; + padding-left: 100px; +} +.pos .payment-status-container { + display: flex; + justify-content: center; + font-size: 25px; + padding-top: 15px; +} +.pos .button.validation { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + height: calc(var(--btn-height-size) * 2.3); + border: none; + background: $primary; + color: #fff; + font-size: 14px; + font-weight: bold; + transition: all 150ms linear; +} +.pos .amount-paymentmethod{ + padding-left: 40%; +} +.pos .delete-button { + padding-left: 30%; +} +.pos .form-container{ + max-width: 450px; + padding: 30px; + background-color: white; +} +.pos .orderlinesactionpad-receipt{ + font-size : 15px; + text-align:left; + margin-left:35px; +} +.pos .button.validation{ + background:#39B8B8 !important; + margin-bottom: 13px !important; +} +.highlight { + width: 29.45% !important; +} +.next { + border-bottom: solid 5px teal !important; +} +.paymentmethods-container { + overflow: scroll; + height: 49.125%; + &::-webkit-scrollbar { + width: 0; + } +} +.pos .nextorder { + position: absolute; + width: 28.3%; + bottom: 0; +} +.pos .search-bar-container.sb-product { + max-width: 100%; + width:100%; + -webkit-box-pack: start; + justify-content: flex-start; + height: 100%; + min-height: 48px; +} \ No newline at end of file diff --git a/simplified_pos/static/src/xml/ActionpadWidget.xml b/simplified_pos/static/src/xml/ActionpadWidget.xml new file mode 100644 index 0000000..8ea0132 --- /dev/null +++ b/simplified_pos/static/src/xml/ActionpadWidget.xml @@ -0,0 +1,21 @@ + + + + + + + + + \ No newline at end of file diff --git a/simplified_pos/static/src/xml/ConfirmationPopup.xml b/simplified_pos/static/src/xml/ConfirmationPopup.xml new file mode 100644 index 0000000..86dd7b9 --- /dev/null +++ b/simplified_pos/static/src/xml/ConfirmationPopup.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/simplified_pos/static/src/xml/OrderWidget.xml b/simplified_pos/static/src/xml/OrderWidget.xml new file mode 100644 index 0000000..d2da2d4 --- /dev/null +++ b/simplified_pos/static/src/xml/OrderWidget.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/simplified_pos/static/src/xml/PaymentScreenPaymentLine.xml b/simplified_pos/static/src/xml/PaymentScreenPaymentLine.xml new file mode 100644 index 0000000..b7cd741 --- /dev/null +++ b/simplified_pos/static/src/xml/PaymentScreenPaymentLine.xml @@ -0,0 +1,14 @@ + + + + + +
+ +
+
+
+
\ No newline at end of file diff --git a/simplified_pos/static/src/xml/PrintPopup.xml b/simplified_pos/static/src/xml/PrintPopup.xml new file mode 100644 index 0000000..c1bd5a8 --- /dev/null +++ b/simplified_pos/static/src/xml/PrintPopup.xml @@ -0,0 +1,89 @@ + + + + + + + \ No newline at end of file diff --git a/simplified_pos/static/src/xml/ProductScreen.xml b/simplified_pos/static/src/xml/ProductScreen.xml new file mode 100644 index 0000000..080c1b2 --- /dev/null +++ b/simplified_pos/static/src/xml/ProductScreen.xml @@ -0,0 +1,80 @@ + + + + + +
+ + +
+
+

CUSTOMER

+
+
+ +
+
+
+ +
+
+
+ +
+ New Order +
+
+
+
+ +
+
+
+

Payment method

+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+ +

Name:

+ +

Address:

+ +

Email:

+ +

Phone:

+ + +
+
+
\ No newline at end of file diff --git a/simplified_pos/static/src/xml/ProductWidgetControlPanel.xml b/simplified_pos/static/src/xml/ProductWidgetControlPanel.xml new file mode 100644 index 0000000..a946021 --- /dev/null +++ b/simplified_pos/static/src/xml/ProductWidgetControlPanel.xml @@ -0,0 +1,28 @@ + + + + + +
+
+ + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/simplified_pos/static/src/xml/chrome.xml b/simplified_pos/static/src/xml/chrome.xml new file mode 100644 index 0000000..dac78e6 --- /dev/null +++ b/simplified_pos/static/src/xml/chrome.xml @@ -0,0 +1,13 @@ + + + + + +
+ + +
+
+
+
\ No newline at end of file