diff --git a/pos_receipt_ui_customizer/README.md b/pos_receipt_ui_customizer/README.md new file mode 100644 index 000000000..89a113574 --- /dev/null +++ b/pos_receipt_ui_customizer/README.md @@ -0,0 +1,152 @@ +# POS Receipt UI Customizer for Odoo 18 + +[![Odoo](https://img.shields.io/badge/Odoo-%23A24689.svg?style=for-the-badge&logo=Odoo&logoColor=white)](https://www.odoo.com) +[![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) + +## Overview + +Option to customise POS Receipts through UI + +## Features + +- ๐Ÿงพ**Adding of Receipt Design.** +- ๐ŸŽ›๏ธ๏ธ**Choosing for Current Receipt Design.** +- ๐ŸŒ**Choosing of Receipt in Frontend.** +- โœ๏ธ**Editing of Receipt Design.** + + +## Screenshots + +Here are some glimpses of POS Receipt UI Customizer: + +### Default Receipt of POS. + +
+ + + Feature 1 + + +
+ +### Receipt Designs + +
+ + + Feature 1 + + +
+
+ + + Feature 1 + + +
+ +### Choose receipt design for POS. +
+ + + Feature 1 + + +
+
+ + + Feature 1 + + +
+ +### Edit receipt designs for POS. +
+ + + Feature 1 + + +
+
+ + + Feature 1 + + +
+ +### Chosen receipt in the frontend + +
+ + + Feature 1 + + +
+
+ + + Feature 1 + + +
+ +## Prerequisites + +Before you begin, ensure you have the following installed: + +- An active Odoo Community/Enterprise Edition instance (local or hosted) + +## Configuration + +* No additional configurations needed. + +## Contributing + +We welcome contributions! To get started: + +1. Fork the repository. + +2. Create a new branch: + ``` + git checkout -b feature/your-feature-name + ``` +3. Make changes and commit: + ``` + git commit -m "Add your message here" + ``` +4. Push your changes: + ``` + git push origin feature/your-feature-name + ``` +5. Create a Pull Request on GitHub. + +--- + +- Submit a pull request with a clear description of your changes. + +## License + +This project is licensed under the AGPL-3. Feel free to use, modify, and distribute it as needed. + +Company +------- +* `Cybrosys Techno Solutions ` + +## Contact + +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + + +Maintainer +========== +![Cybrosys Logo](https://www.cybrosys.com/images/logo.png) +https://cybrosys.com + +This module is maintained by Cybrosys Technologies. +For support and more information, please visit https://www.cybrosys.com \ No newline at end of file diff --git a/pos_receipt_ui_customizer/__init__.py b/pos_receipt_ui_customizer/__init__.py new file mode 100644 index 000000000..624aa9ceb --- /dev/null +++ b/pos_receipt_ui_customizer/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Neeraj JR () +# +# 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/pos_receipt_ui_customizer/__manifest__.py b/pos_receipt_ui_customizer/__manifest__.py new file mode 100644 index 000000000..4e31a38d6 --- /dev/null +++ b/pos_receipt_ui_customizer/__manifest__.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Neeraj JR () +# +# 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 UI Customizer', + 'version': '18.0.1.0.0', + 'category': 'Point of Sale', + 'live_test_url': 'https://www.youtube.com/watch?v=sHQUam5F5Qs', + 'summary': "POS Receipt, Receipt Design, POS Receipt Template, Design " + "Report, Custom Receipt, POS Report, Customise Receipt, Odoo18, " + "Odoo Apps", + 'description': "Option to select the customised Receipts for each POS. So, " + "we can easily updated the Receipt Design for better styles", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'point_of_sale', 'web'], + 'data': [ + 'security/ir.model.access.csv', + 'data/pos_receipt_design1_data.xml', + 'data/pos_receipt_design2_data.xml', + 'data/pos_receipt_design3_data.xml', + 'views/pos_receipt_views.xml', + 'views/pos_config_views.xml', + 'views/res_config_settings_views.xml', + ], + 'assets': { + 'point_of_sale._assets_pos': [ + 'pos_receipt_ui_customizer/static/src/js/receipt_design.js', + 'pos_receipt_ui_customizer/static/src/xml/order_receipt.xml', + ], + 'web.assets_backend': [ + 'pos_receipt_ui_customizer/static/src/js/layout_customisation.js', + 'pos_receipt_ui_customizer/static/src/xml/action.xml', + 'pos_receipt_ui_customizer/static/src/css/style.css', + 'https://cdn.jsdelivr.net/npm/medium-editor@5.23.3/dist/js/medium-editor.min.js', + 'https://cdn.jsdelivr.net/npm/medium-editor@5.23.3/dist/css/medium-editor.min.css', + 'https://cdn.jsdelivr.net/npm/medium-editor@5.23.3/dist/css/themes/default.min.css', + ], + }, + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False +} diff --git a/pos_receipt_ui_customizer/data/pos_receipt_design1_data.xml b/pos_receipt_ui_customizer/data/pos_receipt_design1_data.xml new file mode 100644 index 000000000..4eec696c7 --- /dev/null +++ b/pos_receipt_ui_customizer/data/pos_receipt_design1_data.xml @@ -0,0 +1,105 @@ + + + + Design 1 + +
+
+ + +
+
+
+
+
+
+ Name : + [[ company.name ]] +
+
+ Phone : + [[ company.phone ]] +
+
+ Email : + [[ company.email ]] +
+
+ Website : + [[ company.website ]] +
+
+
+


+
+
+
+ +
+ + + + + + + + + + + + + +
ProductQtyAmount
+ + +
+ orderline.name +
+
+
+ + +
+ orderline.qty +
+
+
+ + +
+ orderline.price +
+
+
+
+
+
+ +
+ Subtotal : + [[ receipt.total_without_tax ]] +
+
+
+ TOTAL : + [[ receipt.amount_total ]] +
+ +

+
+
+ Thank You... Please Visit Again ... +
+ ]]>
+
+ +
\ No newline at end of file diff --git a/pos_receipt_ui_customizer/data/pos_receipt_design2_data.xml b/pos_receipt_ui_customizer/data/pos_receipt_design2_data.xml new file mode 100644 index 000000000..6cb7db840 --- /dev/null +++ b/pos_receipt_ui_customizer/data/pos_receipt_design2_data.xml @@ -0,0 +1,83 @@ + + + + Design 2 + + + +
+ + + +
+ [[ company.name ]] +
+
+
Phone: [[ company.phone ]]
+
Email: [[ company.email ]]
+
Website: [[ company.website ]]
+
+
+ + +
+
+ Order Details +
+ + + + + + + + + + + + + + + +
ProductQtyAmount
+ + + + + +
+
+ + +
+
+ Subtotal + [[ receipt.total_without_tax ]] +
+ +
+ Total + [[ receipt.amount_total ]] +
+
+ + +
+
+
+
+ + +
+ + +
+ Thank you for shopping with us! +
+ ]]>
+
+ +
diff --git a/pos_receipt_ui_customizer/data/pos_receipt_design3_data.xml b/pos_receipt_ui_customizer/data/pos_receipt_design3_data.xml new file mode 100644 index 000000000..bd09211ff --- /dev/null +++ b/pos_receipt_ui_customizer/data/pos_receipt_design3_data.xml @@ -0,0 +1,97 @@ + + + + Design 3 + + + +
+ + + + +
+ [[ company.name ]] +
+ + +
+ [[ company.phone ]] +
+
+ [[ company.email ]] +
+
+ [[ company.website ]] +
+
+ + +
+
+ Order Details +
+ + + + + + + + + + + + + + + + + + + + + + +
ItemQtyPrice
+ + + + + +
+
+ + +
+
+ Subtotal + [[ receipt.total_without_tax ]] +
+ +
+ +
+ TOTAL + [[ receipt.amount_total ]] +
+
+ + +
+
+ + +
+
Thank You
+
We appreciate your business
+
+ + + ]]>
+
+
diff --git a/pos_receipt_ui_customizer/doc/RELEASE_NOTES.md b/pos_receipt_ui_customizer/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..5da17542a --- /dev/null +++ b/pos_receipt_ui_customizer/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 10.11.2025 +#### Version 18.0.1.0.0 +##### ADD +- Initial Commit for POS Receipt UI Customizer + diff --git a/pos_receipt_ui_customizer/models/__init__.py b/pos_receipt_ui_customizer/models/__init__.py new file mode 100644 index 000000000..c23d89efb --- /dev/null +++ b/pos_receipt_ui_customizer/models/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Neeraj JR () +# +# 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 \ No newline at end of file diff --git a/pos_receipt_ui_customizer/models/pos_config.py b/pos_receipt_ui_customizer/models/pos_config.py new file mode 100644 index 000000000..d2c2894b7 --- /dev/null +++ b/pos_receipt_ui_customizer/models/pos_config.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Neeraj JR () +# +# 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): + """ + This is an Odoo model for Point of Sale (POS). + It inherits the 'pos.config' model to add new fields. + """ + _inherit = 'pos.config' + + receipt_design_id = fields.Many2one('pos.receipt', string='Receipt Design', + help='Choose any receipt design') + design_receipt = fields.Text(related='receipt_design_id.design_receipt', + string='Receipt XML') + logo = fields.Binary(related='receipt_design_id.logo', string='Logo', + readonly=False) + is_custom_receipt = fields.Boolean(string='Is Custom Receipt', + help='Indicates the receipt design is ' + 'custom or not') + design_receipt_font_style = fields.Char( + related='receipt_design_id.design_receipt_font_style', + string='Receipt Font Style' + ) \ No newline at end of file diff --git a/pos_receipt_ui_customizer/models/pos_receipt.py b/pos_receipt_ui_customizer/models/pos_receipt.py new file mode 100644 index 000000000..2803690c0 --- /dev/null +++ b/pos_receipt_ui_customizer/models/pos_receipt.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Neeraj JR () +# +# 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): + """ + This is an Odoo model for Point of Sale (POS). + It creates a new model of pos.receipt for providing different types of + receipt design. + """ + _name = 'pos.receipt' + _description = 'POS Receipts' + + name = fields.Char(string='Name', help='Name of the pos receipt') + design_receipt = fields.Text(string='Receipt XML', + help='Add your customised receipts for pos') + design_receipt_font_style = fields.Char(string="Font Style", default="Arial") + company_id = fields.Many2one('res.company', string='Company', readonly=True, index=True, required=True, + default=lambda self: self.env.company) + logo = fields.Binary(string='Logo', default=lambda self: self.env.company.logo) \ No newline at end of file diff --git a/pos_receipt_ui_customizer/models/res_config_settings.py b/pos_receipt_ui_customizer/models/res_config_settings.py new file mode 100644 index 000000000..8ed022376 --- /dev/null +++ b/pos_receipt_ui_customizer/models/res_config_settings.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Neeraj JR () +# +# 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 ResConfigSettings(models.TransientModel): + """ + Adds POS options for enabling custom receipts and selecting a receipt design. + """ + _inherit = 'res.config.settings' + + is_custom_receipt = fields.Boolean(string='Is Custom Receipt', related='pos_config_id.is_custom_receipt', + readonly=False, + help='Indicates the receipt design is ' + 'custom or not') + receipt_design_id = fields.Many2one('pos.receipt', string='Receipt Design', + related='pos_config_id.receipt_design_id', + readonly=False, help='Choose any receipt design') \ No newline at end of file diff --git a/pos_receipt_ui_customizer/security/ir.model.access.csv b/pos_receipt_ui_customizer/security/ir.model.access.csv new file mode 100644 index 000000000..9ebdf4572 --- /dev/null +++ b/pos_receipt_ui_customizer/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_pos_receipt_user,access.pos.receipt.user,model_pos_receipt,base.group_user,1,1,1,1 diff --git a/pos_receipt_ui_customizer/static/description/assets/cybro-icon.png b/pos_receipt_ui_customizer/static/description/assets/cybro-icon.png new file mode 100644 index 000000000..06e73e11d Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/cybro-icon.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/cybro-odoo.png b/pos_receipt_ui_customizer/static/description/assets/cybro-odoo.png new file mode 100644 index 000000000..ed02e07a4 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/cybro-odoo.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/gif.gif b/pos_receipt_ui_customizer/static/description/assets/gif.gif new file mode 100644 index 000000000..e5ee07357 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/gif.gif differ diff --git a/pos_receipt_ui_customizer/static/description/assets/h2.png b/pos_receipt_ui_customizer/static/description/assets/h2.png new file mode 100644 index 000000000..0bfc4707d Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/h2.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/arrows-repeat.svg b/pos_receipt_ui_customizer/static/description/assets/icons/arrows-repeat.svg new file mode 100644 index 000000000..1d7efabc5 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/arrows-repeat.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-1.png b/pos_receipt_ui_customizer/static/description/assets/icons/banner-1.png new file mode 100644 index 000000000..c180db172 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/banner-1.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-2.svg b/pos_receipt_ui_customizer/static/description/assets/icons/banner-2.svg new file mode 100644 index 000000000..e606d97d9 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/banner-2.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-bg.png b/pos_receipt_ui_customizer/static/description/assets/icons/banner-bg.png new file mode 100644 index 000000000..a8238d3c0 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/banner-bg.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-bg.svg b/pos_receipt_ui_customizer/static/description/assets/icons/banner-bg.svg new file mode 100644 index 000000000..b1378103e --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/banner-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-call.svg b/pos_receipt_ui_customizer/static/description/assets/icons/banner-call.svg new file mode 100644 index 000000000..96c687e81 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/banner-call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-mail.svg b/pos_receipt_ui_customizer/static/description/assets/icons/banner-mail.svg new file mode 100644 index 000000000..cbf0d158d --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/banner-mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-pattern.svg b/pos_receipt_ui_customizer/static/description/assets/icons/banner-pattern.svg new file mode 100644 index 000000000..9c1c7e101 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/banner-pattern.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/banner-promo.svg b/pos_receipt_ui_customizer/static/description/assets/icons/banner-promo.svg new file mode 100644 index 000000000..d52791b11 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/banner-promo.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/blog-icon.png b/pos_receipt_ui_customizer/static/description/assets/icons/blog-icon.png new file mode 100644 index 000000000..ba4c7c366 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/blog-icon.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/brand-pair.svg b/pos_receipt_ui_customizer/static/description/assets/icons/brand-pair.svg new file mode 100644 index 000000000..d8db7fc1e --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/brand-pair.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/check.png b/pos_receipt_ui_customizer/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/check.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/chevron.png b/pos_receipt_ui_customizer/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/chevron.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/close-icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/close-icon.svg new file mode 100644 index 000000000..df8cce37a --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/close-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/cogs.png b/pos_receipt_ui_customizer/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/cogs.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/collabarate-icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/collabarate-icon.svg new file mode 100644 index 000000000..dd4e10518 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/collabarate-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/consultation.png b/pos_receipt_ui_customizer/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/consultation.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/copylink.svg b/pos_receipt_ui_customizer/static/description/assets/icons/copylink.svg new file mode 100644 index 000000000..3b67f60e0 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/copylink.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/cybro-logo.png b/pos_receipt_ui_customizer/static/description/assets/icons/cybro-logo.png new file mode 100644 index 000000000..ff4b78220 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/cybro-logo.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/down.svg b/pos_receipt_ui_customizer/static/description/assets/icons/down.svg new file mode 100644 index 000000000..f21c36271 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/ecom-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/ecom-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/education-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/education-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/faq.png b/pos_receipt_ui_customizer/static/description/assets/icons/faq.png new file mode 100644 index 000000000..4250b5b81 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/faq.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/feature-icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/feature-icon.svg new file mode 100644 index 000000000..fa0ea6850 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/feature-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/feature.png b/pos_receipt_ui_customizer/static/description/assets/icons/feature.png new file mode 100644 index 000000000..ac7a785c0 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/feature.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/gear.svg b/pos_receipt_ui_customizer/static/description/assets/icons/gear.svg new file mode 100644 index 000000000..0cc66b6ea --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/gear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/hero.gif b/pos_receipt_ui_customizer/static/description/assets/icons/hero.gif new file mode 100644 index 000000000..380654dfe Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/hero.gif differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/hire-odoo.svg b/pos_receipt_ui_customizer/static/description/assets/icons/hire-odoo.svg new file mode 100644 index 000000000..e1ac089b0 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/hire-odoo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/hotel-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/hotel-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/license.png b/pos_receipt_ui_customizer/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/license.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/life-ring-icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/life-ring-icon.svg new file mode 100644 index 000000000..3ae6e1d89 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/life-ring-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/lifebuoy.png b/pos_receipt_ui_customizer/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/lifebuoy.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/mail.svg b/pos_receipt_ui_customizer/static/description/assets/icons/mail.svg new file mode 100644 index 000000000..1eedde695 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/manufacturing-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/manufacturing-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/notes.png b/pos_receipt_ui_customizer/static/description/assets/icons/notes.png new file mode 100644 index 000000000..ee5e95404 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/notes.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/notification icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/notification icon.svg new file mode 100644 index 000000000..053189973 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/notification icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/odoo-consultancy.svg b/pos_receipt_ui_customizer/static/description/assets/icons/odoo-consultancy.svg new file mode 100644 index 000000000..e05f65bde --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/odoo-consultancy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/odoo-licencing.svg b/pos_receipt_ui_customizer/static/description/assets/icons/odoo-licencing.svg new file mode 100644 index 000000000..2606c88b0 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/odoo-licencing.svg @@ -0,0 +1,3 @@ + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/odoo-logo.png b/pos_receipt_ui_customizer/static/description/assets/icons/odoo-logo.png new file mode 100644 index 000000000..0e4d0eb5a Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/odoo-logo.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/patter.svg b/pos_receipt_ui_customizer/static/description/assets/icons/patter.svg new file mode 100644 index 000000000..25c9c0a8f --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/patter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/pattern1.png b/pos_receipt_ui_customizer/static/description/assets/icons/pattern1.png new file mode 100644 index 000000000..09ab0fb2d Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/pattern1.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/pos-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/pos-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/puzzle-piece-icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/puzzle-piece-icon.svg new file mode 100644 index 000000000..3e9ad9373 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/puzzle-piece-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/puzzle.png b/pos_receipt_ui_customizer/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/puzzle.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/replace-icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/replace-icon.svg new file mode 100644 index 000000000..d0e3a7af1 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/replace-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/restaurant-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/restaurant-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/screenshot-main.png b/pos_receipt_ui_customizer/static/description/assets/icons/screenshot-main.png new file mode 100644 index 000000000..575f8e676 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/screenshot-main.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/screenshot.png b/pos_receipt_ui_customizer/static/description/assets/icons/screenshot.png new file mode 100644 index 000000000..cef272529 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/screenshot.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/service-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/service-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/skype-fill.svg b/pos_receipt_ui_customizer/static/description/assets/icons/skype-fill.svg new file mode 100644 index 000000000..c17423639 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/skype-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/skype.png b/pos_receipt_ui_customizer/static/description/assets/icons/skype.png new file mode 100644 index 000000000..51b409fb3 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/skype.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/skype.svg b/pos_receipt_ui_customizer/static/description/assets/icons/skype.svg new file mode 100644 index 000000000..df3dad39b --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/skype.svg @@ -0,0 +1,3 @@ + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/star-1.svg b/pos_receipt_ui_customizer/static/description/assets/icons/star-1.svg new file mode 100644 index 000000000..7e55ab162 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/star-1.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/star-2.svg b/pos_receipt_ui_customizer/static/description/assets/icons/star-2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/star-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/support.png b/pos_receipt_ui_customizer/static/description/assets/icons/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/support.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/test-1 - Copy.png b/pos_receipt_ui_customizer/static/description/assets/icons/test-1 - Copy.png new file mode 100644 index 000000000..f6a902663 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/test-1 - Copy.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/test-1.png b/pos_receipt_ui_customizer/static/description/assets/icons/test-1.png new file mode 100644 index 000000000..0908add2b Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/test-1.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/test-2.png b/pos_receipt_ui_customizer/static/description/assets/icons/test-2.png new file mode 100644 index 000000000..4671fe91e Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/test-2.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/trading-black.png b/pos_receipt_ui_customizer/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/trading-black.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/training.png b/pos_receipt_ui_customizer/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/training.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/translate.svg b/pos_receipt_ui_customizer/static/description/assets/icons/translate.svg new file mode 100644 index 000000000..af9c8a1aa --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/translate.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/update.png b/pos_receipt_ui_customizer/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/update.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/user.png b/pos_receipt_ui_customizer/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/user.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/video.png b/pos_receipt_ui_customizer/static/description/assets/icons/video.png new file mode 100644 index 000000000..576705b17 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/video.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/whatsapp.png b/pos_receipt_ui_customizer/static/description/assets/icons/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/whatsapp.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/whatsapp.svg b/pos_receipt_ui_customizer/static/description/assets/icons/whatsapp.svg new file mode 100644 index 000000000..bba9ca395 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/whatsapp.svg @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/wrench-icon.svg b/pos_receipt_ui_customizer/static/description/assets/icons/wrench-icon.svg new file mode 100644 index 000000000..174b5a465 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/assets/icons/wrench-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/wrench.png b/pos_receipt_ui_customizer/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/wrench.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/icons/youtube-icon.png b/pos_receipt_ui_customizer/static/description/assets/icons/youtube-icon.png new file mode 100644 index 000000000..f206560dc Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/icons/youtube-icon.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new1.gif b/pos_receipt_ui_customizer/static/description/assets/modules/new1.gif new file mode 100644 index 000000000..f68f39836 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new1.gif differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new1.png b/pos_receipt_ui_customizer/static/description/assets/modules/new1.png new file mode 100644 index 000000000..0cd7e58c2 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new1.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new2.gif b/pos_receipt_ui_customizer/static/description/assets/modules/new2.gif new file mode 100644 index 000000000..74e04312b Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new2.gif differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new2.png b/pos_receipt_ui_customizer/static/description/assets/modules/new2.png new file mode 100644 index 000000000..c0cc9218d Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new2.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new3.png b/pos_receipt_ui_customizer/static/description/assets/modules/new3.png new file mode 100644 index 000000000..a8cc021e5 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new3.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new4.png b/pos_receipt_ui_customizer/static/description/assets/modules/new4.png new file mode 100644 index 000000000..12d8c74fb Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new4.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new5.png b/pos_receipt_ui_customizer/static/description/assets/modules/new5.png new file mode 100644 index 000000000..aa359bd1b Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new5.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/modules/new6.png b/pos_receipt_ui_customizer/static/description/assets/modules/new6.png new file mode 100644 index 000000000..127f51e0b Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/modules/new6.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/1.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..5b607f8ae Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/1.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/2.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..e29fb0cce Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/2.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/3.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..b87db222b Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/3.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/4.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..cfdf3e3b9 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/4.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/5.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..a3c28dde5 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/5.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/6.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..0d97951b8 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/6.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/7.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..1493bb45f Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/7.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/8.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..e91354516 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/8.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/screenshots/9.png b/pos_receipt_ui_customizer/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..5c72846dc Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/screenshots/9.png differ diff --git a/pos_receipt_ui_customizer/static/description/assets/y18.jpg b/pos_receipt_ui_customizer/static/description/assets/y18.jpg new file mode 100644 index 000000000..eea1714f2 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/assets/y18.jpg differ diff --git a/pos_receipt_ui_customizer/static/description/banner.png b/pos_receipt_ui_customizer/static/description/banner.png new file mode 100644 index 000000000..cff44c209 Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/banner.png differ diff --git a/pos_receipt_ui_customizer/static/description/icon.png b/pos_receipt_ui_customizer/static/description/icon.png new file mode 100644 index 000000000..4e149faac Binary files /dev/null and b/pos_receipt_ui_customizer/static/description/icon.png differ diff --git a/pos_receipt_ui_customizer/static/description/index.html b/pos_receipt_ui_customizer/static/description/index.html new file mode 100644 index 000000000..34f9b2600 --- /dev/null +++ b/pos_receipt_ui_customizer/static/description/index.html @@ -0,0 +1,1345 @@ + + + + + + POS Receipt UI Customizer + + + + + + + + + + +
+
+ + + + +
+
+
+
+
+
+ +
+ Supports: +
+ Community +
+
+ Enterprise +
+
+
+
+
+ Availability: +
+ On Premise +
+
+ Odoo.sh +
+
+ Odoo Online +
+
+
+
+
+
+ +
+ +
+
+
+
+

+ Option to select the customised Receipts for + each POS. +

+

POS Receipt UI Customizer +

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

Key + Highlights

+
+
+
+
+ +
+
+ Adding of Receipt Design. +
+

+

+
+
+
+
+
+ +
+
+ Choosing for Current Receipt Design. +
+

+

+
+
+
+
+
+ +
+
+ Choosing of Receipt in Frontend. +
+

+

+
+
+
+
+
+ +
+
+ Editing of Receipt Design. +
+

+

+
+
+
+
+ +
+
+
+ POS Receipt UI Customizer +

+ Are you ready to make your business more + organized? +
Improve now! +

+ +
+
+ +
+
+
+ + + + +
+
+ +
+
+
+
+ acc_bg +
+ +
+
+
+
+

+ Default Receipt of POS. + +

+
+
+

+ This is the default receipt of + POS. +

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

+ Receipt Designs + + +

+
+
+

+ We can add the receipt designs + from the frontend 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 frontend of the POS. +

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

+ + +

+
+
+

+

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

+ Chosen receipt in the + + frontend +

+
+
+

+ We can see the chosen receipts + for the POS in the frontend of + the POS. +

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

+ + +

+
+
+

+ +

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

+ "Create POS Receipt Designs from + the Backend. +

+
+
+

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

+
+
+
+
+
+
+
+ +
+

+ Choosing of Receipt in + Frontend.

+
+
+

+ Empower users to choose + customized receipt designs on + the go from the POS interface. +

+
+
+
+
+
+
+
+ +
+

+ Enable Custom Receipt Designs + for POS. +

+
+
+

+ User can choose whether the + current POS needs custom receipt + design. +

+
+
+
+
+
+
+
+ +
+

+ Edit POS Receipt Designs from + the Backend +

+
+
+

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

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

+ Yes, each POS + location can have + its own custom + receipt design. When + setting up each POS, + you can choose a + specific receipt + design for that + location +

+
+
+ +
+ +
+

+ Yes, you can edit + receipt designs in + the backend without + interrupting POS + operations. Changes + are applied only + after the design is + saved, allowing + seamless updates and + customizations. +

+
+
+ +
+ +
+

+ Currently, a + real-time preview + feature is not + available, but you + can test the design + by selecting it in + the backend and + printing sample + receipts to see how + they will look in + the POS frontend. +

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

+ Latest Release 18.0.1.0.0 +

+ + 30th October, 2024 + +
+
+
+
+
+ Add +
+
+
+
    +
  • + Initial Commit +
  • + +
+
+
+
+
+
+
+
+
+
+ + + +
+

+ Related Products +

+ +
+ + +
+

+ Our Services

+ +
+ +
+
+ .... +
+
+ +
+ + +
+
+ + + + + + diff --git a/pos_receipt_ui_customizer/static/src/css/style.css b/pos_receipt_ui_customizer/static/src/css/style.css new file mode 100644 index 000000000..ec3bb29fe --- /dev/null +++ b/pos_receipt_ui_customizer/static/src/css/style.css @@ -0,0 +1,98 @@ +/* Layout Structure */ +.o_pos_receipt_layout_client_action { + display: flex; + flex-direction: column; + gap: 1rem; +} +.container-class { + display: flex; + justify-content: center; + gap: 30px; +} +/* Editor Panel */ +.editor_panel { + min-width: 500px; + min-height: 620px; + background-color: white; + border-radius: 8px; + padding: 1rem; + box-shadow: 0 0px 20px rgb(0 0 0 / 6%); +} +.editor_panel_section { + background-color: #fff; + border-radius: 8px; + padding: 1rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +/* Receipt Editing Area */ +.receipt_content { + min-height: 620px; + min-width: 500px; + background-color: #fff; + border-radius: 8px; + padding: 2rem; + box-shadow: 0 0px 20px rgb(0 0 0 / 6%); + font-family: 'Arial', sans-serif; +} +/* While dragging */ +.receipt_content.dragging { + cursor: copy; +} +/* Highlighting the drop area */ +.drop-highlight { + outline: 2px dashed #0d6efd; + outline-offset: 6px; + border-radius: 8px; +} +/* Field List */ +.field-list-container { + max-height: 250px; + overflow-y: auto; + border: 1px solid #dee2e6; + border-radius: 6px; + background-color: #f8f9fa; + padding: 0.5rem; +} +.field-list-container ul { + list-style: none; + margin: 0; + padding: 0; +} +.field-list-container li { + cursor: grab; + transition: background-color 0.2s ease; +} +.field-list-container li:hover { + background-color: #e9ecef; +} +/* Buttons */ +.button-class { + display: flex; + justify-content: center; + gap: 25px; + margin-top: 3rem; + margin-bottom: 3rem; +} +#saveButton, +#resetButton { + padding: 8px 30px; + height: auto; + font-size: 1rem; + width: 100px; +} +/* Placeholder Style */ +.placeholder-span { + border-radius: 8px; + padding: 2px 6px; + font-weight: 400; + transition: transform 0.2s ease; +} +/* Add pop animation when dropped */ +.placeholder-span.added { + animation: pop 0.3s ease; +} +/* Animations */ +@keyframes pop { + 0% { transform: scale(1.2); } + 100% { transform: scale(1); } +} diff --git a/pos_receipt_ui_customizer/static/src/js/layout_customisation.js b/pos_receipt_ui_customizer/static/src/js/layout_customisation.js new file mode 100644 index 000000000..340da0b43 --- /dev/null +++ b/pos_receipt_ui_customizer/static/src/js/layout_customisation.js @@ -0,0 +1,260 @@ +/** @odoo-module **/ +import { registry } from "@web/core/registry"; +import { Component, useState, useRef, onMounted } from "@odoo/owl"; +import { useService } from "@web/core/utils/hooks"; + +class PosReceiptLayoutClientAction extends Component { + static template = "custom_receipt_for_pos.client_layout_customisation_template"; + setup() { + this.orm = useService("orm"); + this.notification = useService("notification"); + this.receiptContentRef = useRef("ReceiptContent"); + this.receipt_id = this.props.action.context.active_id; + console.log(this.receipt_id ) + this.state = useState({ + fontStyle: "Arial", + fields: [], + logo: '', + prev_logo: '', + prev_receipt: '', + receipt: '', + model: '', + }); + + onMounted(async () => { + await this.loadReceipt(); + this.mediumEditor(); + this.preventPartialSelection(); + this.allowSpace(); + }); + } + + async mediumEditor() { + this.editor = new MediumEditor(this.receiptContentRef.el, { + toolbar: { + buttons: ['bold', 'italic', 'underline', 'strikethrough', 'subscript', 'superscript', 'h1', 'h3', 'quote', 'anchor'], + }, + placeholder: false, + targetBlank: true, + disableExtraSpaces: true, + }); + } + + async allowSpace(){ + this.receiptContentRef.el.addEventListener("keydown", (ev) => { + if (ev.key === " " || ev.keyCode === 32) { + const sel = window.getSelection(); + if (!sel.rangeCount) return; + const range = sel.getRangeAt(0); + if ( + range.startContainer.nodeType === Node.TEXT_NODE && + range.startOffset === range.startContainer.length + ) { + ev.preventDefault(); + document.execCommand("insertHTML", false, " "); + } + } + }); + } + + preventPartialSelection() { + document.addEventListener("selectionchange", () => { + const sel = window.getSelection(); + if (!sel.rangeCount) return; + const range = sel.getRangeAt(0); + const startEl = range.startContainer.parentElement; + const endEl = range.endContainer.parentElement; + const placeholder = startEl.closest(".placeholder-span") || endEl.closest(".placeholder-span"); + if (placeholder && sel.toString() !== placeholder.textContent) { + const newRange = document.createRange(); + newRange.selectNodeContents(placeholder); + sel.removeAllRanges(); + sel.addRange(newRange); + } + }); + } + + async loadReceipt(reset=false) { + const [receipt] = await this.orm.searchRead( + "pos.receipt", + [["id", "=", this.receipt_id]], + ["name", "design_receipt", "design_receipt_font_style", "logo"] + ); + + console.log("Loaded receipt:", receipt); + console.log(receipt.name) + if (!receipt) return; + this.state.fontStyle = receipt.design_receipt_font_style || "Arial"; + this.state.logo = receipt.logo + if (!reset && this.receiptContentRef.el?.innerHTML) { + this.state.receipt = this.receiptContentRef.el.innerHTML; + } + else { + this.state.receipt = receipt.design_receipt; + } + let html = this.state.receipt + let logo; + if (reset === false || !this.state.prev_logo) { + logo = this.state.logo; + } else { + logo = this.state.prev_logo; + } + this.state.logo = logo; + html = html.replace(/]*class="receipt-logo"[^>]*>/gi, ""); + html = html.replace(/\s*<\/t>/gi, ""); + html = html.replace(/\s*<\/t>/gi, ""); + if (logo) { + html = html.replace( + /[\s\S]*?<\/t>/, + ` + + + + + ` + + ); + } + this.receiptContentRef.el.innerHTML = html; + } + + triggerImageUpload() { + document.getElementById("imageUpload")?.click(); + } + + async insertImage(ev) { + const file = ev.target.files?.[0]; + if (!file) return; + const reader = new FileReader(); + reader.onload = async () => { + const base64 = reader.result.split(",")[1]; + this.state.receipt = this.receiptContentRef.el.innerHTML; + this.state.prev_logo = this.state.logo; + this.state.prev_receipt = this.state.receipt; + await this.orm.write("pos.receipt", [this.receipt_id], { logo: base64 }); + this.state.logo = base64; + await this.loadReceipt(); + this.notification.add("โœ… Receipt Logo Updated!", { + type: "success", + }); + }; + reader.readAsDataURL(file); + } + + async saveEditedReceipt() { + this.state.receipt = this.receiptContentRef.el.innerHTML + this.state.prev_logo = this.state.logo + this.state.prev_receipt = this.state.receipt + const html = this.state.receipt + await this.orm.write("pos.receipt", [this.receipt_id], { + design_receipt: html, + design_receipt_font_style: this.state.fontStyle, + logo: this.state.logo, + }); + this.notification.add("โœ… Receipt Successfully Updated!", { + type: "success", + }); + } + + async resetEditedReceipt(){ + if (this.state.prev_receipt) { + this.state.receipt = this.state.prev_receipt; + this.receiptContentRef.el.innerHTML = this.state.receipt; + } + await this.loadReceipt(true); + this.notification.add("๐Ÿ”„ Receipt Reset Completed!", { + type: "success", + }); + } + + onFontChange(ev) { + this.state.fontStyle = ev.target.value; + } + + async onModelChange(ev) { + const model = ev.target.value; + this.state.model = model + if (!model) return (this.state.fields = []); + const fields = await this.orm.call(model, "fields_get", [], {}); + this.state.fieldsInfo = fields; + const prefix = model === "pos.order" ? "order" : + model === "res.partner" ? "partner" : model; + this.state.fields = Object.keys(fields).filter(key => !/(_ids?$|\d+$)/.test(key)).map((key) => ({ + technical: `${prefix}.${key}`, + label: odoo.debug + ? `${fields[key].string || key} (${prefix}.${key})` + : fields[key].string || key, + })); + } + + onDragStart(ev) { + const field = `[[${ev.target.dataset.field}]]`; + ev.dataTransfer.setData("text/plain", field); + ev.dataTransfer.effectAllowed = "copy"; + const ghost = document.createElement("div"); + ghost.textContent = field; + ghost.style.padding = "6px 12px"; + ghost.style.fontSize = "12px"; + ghost.style.fontWeight = "400"; + ghost.style.background = "#e8f1ff"; + ghost.style.color = "black"; + ghost.style.borderRadius = "20px"; + ghost.style.boxShadow = "0 2px 6px rgba(0,0,0,0.15)"; + ghost.style.pointerEvents = "none"; + ghost.style.position = "absolute"; + ghost.style.top = "-9999px"; + ghost.style.left = "-9999px"; + document.body.appendChild(ghost); + ev.dataTransfer.setDragImage(ghost, 0, 0); + setTimeout(() => ghost.remove(), 0); + this.receiptContentRef.el.classList.add("dragging"); + this.receiptContentRef.el.classList.add("drop-highlight"); + } + + onDragEnd() { + this.receiptContentRef.el.classList.remove("dragging"); + this.receiptContentRef.el.classList.remove("drop-highlight"); + } + + onDrop(ev) { + ev.preventDefault(); + const editor = this.receiptContentRef.el; + const fieldText = ev.dataTransfer.getData("text/plain"); + if (!fieldText) return; + const span = document.createElement("span"); + span.textContent = fieldText; + span.classList.add("placeholder-span"); + const placeholder = ev.target.closest(".placeholder-span"); + if (placeholder) { + placeholder.insertAdjacentElement("afterend", span); + return; + } + let range = null; + if (document.caretRangeFromPoint) { + range = document.caretRangeFromPoint(ev.clientX, ev.clientY); + } else if (document.caretPositionFromPoint) { + const pos = document.caretPositionFromPoint(ev.clientX, ev.clientY); + if (pos?.offsetNode) { + range = document.createRange(); + range.setStart(pos.offsetNode, pos.offset); + range.collapse(true); + } + } + if (range) { + range.insertNode(span); + } + else { + let targetArea = editor.querySelector(".drop-area") + if (targetArea) { + targetArea.appendChild(span); + } + } + this.receiptContentRef.el.classList.remove("dragging"); + this.receiptContentRef.el.classList.remove("drop-highlight"); + span.classList.add("added"); + setTimeout(() => span.classList.remove("added"), 400); + } +} +registry.category("actions").add("pos_receipt_layout_client_action", PosReceiptLayoutClientAction); \ No newline at end of file diff --git a/pos_receipt_ui_customizer/static/src/js/receipt_design.js b/pos_receipt_ui_customizer/static/src/js/receipt_design.js new file mode 100644 index 000000000..86155c32c --- /dev/null +++ b/pos_receipt_ui_customizer/static/src/js/receipt_design.js @@ -0,0 +1,86 @@ +/** @odoo-module **/ +import { OrderReceipt } from "@point_of_sale/app/screens/receipt_screen/receipt/order_receipt"; +import { patch } from "@web/core/utils/patch"; +import { useService } from "@web/core/utils/hooks"; +import { useState, Component, xml } from "@odoo/owl"; + +patch(OrderReceipt.prototype, { + setup() { + super.setup(); + this.pos = useService("pos"); + this.notification = useService("notification"); + this.state = useState({ template: true }); + }, + + sanitizeReceiptXml(xmlString) { + const parser = new DOMParser(); + const parsed = parser.parseFromString(xmlString, "text/html"); + let html = parsed.body.innerHTML + .replace(//gi, "
") + .replace(//gi, "
") + .replace(/ |\u00A0/g, " ") + .replace(/]*)>/gi, "") + .replace(/&(?!amp;|lt;|gt;|quot;|apos;|#\d+;)/g, "&") + .trim(); + const font = this.pos.config.design_receipt_font_style || "Arial"; + html = html.replace(/]*class="pos-receipt"[^>]*)>/i, + (m, attrs) => + `
` + ); + const order = this.pos.get_order(); + const receipt = order.export_for_printing(); + const partner = order.get_partner(); + const company = this.pos.company + html = html + .replaceAll('[[ receipt.total_without_tax ]]', + this.env.utils.formatCurrency(receipt.total_without_tax || 0)) + .replaceAll('[[ receipt.amount_total ]]', + this.env.utils.formatCurrency(receipt.amount_total || 0)) + const replaced = html.replace( + /\[\[\s*([\w.\s]+)\s*\]\]/g, + (match, fieldPath) => { + const path = fieldPath.trim().replace(/\s+/g, ""); + let value = ""; + const split_path = path.split("."); + const model = split_path[0]; + const field = split_path.slice(1); + if (path.startsWith("order.")) { + value = order?.[path.slice(6)]; + } + else if (path.startsWith("partner.")) { + value = partner?.[path.slice(8)]; + } + else if (path.startsWith("company.")) { + value = company?.[path.slice(8)]; + } + return value ? value : ""; + } + ); + return replaced; + }, + + get templateProps() { + const order = this.pos.get_order(); + const receipt = order.export_for_printing(); + return { + data: this.props.data, + order, + receipt, + orderlines: this.props.data.orderlines, + paymentlines: receipt.paymentlines, + }; + }, + + get templateComponent() { + const design = this.pos.config?.design_receipt || ""; + const xmlString = this.sanitizeReceiptXml(design); + return class extends Component { + static template = xml`${xmlString}`; + }; + }, + + get isFalse() { + return !this.pos.config.is_custom_receipt; + }, +}); + diff --git a/pos_receipt_ui_customizer/static/src/xml/action.xml b/pos_receipt_ui_customizer/static/src/xml/action.xml new file mode 100644 index 000000000..676b9fcad --- /dev/null +++ b/pos_receipt_ui_customizer/static/src/xml/action.xml @@ -0,0 +1,72 @@ + + + +
+
+
+ +
+ +
+
+ + Select Font Style +
+ +
+ +
+
+ + Change Your Logo +
+ + +
+ +
+
+ + Drag and Drop Fields +
+ + +
+
    +
  • + +
  • +
+
+
+
+
+ +
+
+ +
+ + +
+
+
+ + diff --git a/pos_receipt_ui_customizer/static/src/xml/order_receipt.xml b/pos_receipt_ui_customizer/static/src/xml/order_receipt.xml new file mode 100644 index 000000000..ea411eead --- /dev/null +++ b/pos_receipt_ui_customizer/static/src/xml/order_receipt.xml @@ -0,0 +1,172 @@ + + + + + +
+ + + + + +
  • + + +
  • +
    +
    + + +
    +
    --------------------------------
    + +
    + + + +
    +
    + + + + + + + + on + + + + +
    +
    +
    +
    --------------------------------
    +
    + + +
    + +
    + + +
    +
    + To Pay + + + +
    +
    + +
    + + +
    +
    + + +
    + + +
    + + +
    +
    +