From 38f8716c48818abf695b35a87e57d0cccf3b30d2 Mon Sep 17 00:00:00 2001 From: arat-odoo Date: Tue, 8 Jul 2025 19:03:39 +0530 Subject: [PATCH 1/4] [ADD] pos_receipt: added res.config.settings in pos module In res.config.settings add the configure layout button in pos module. --- pos_receipt/__init__.py | 1 + pos_receipt/__manifest__.py | 7 +++++++ pos_receipt/models/__init__.py | 1 + pos_receipt/models/pos_config.py | 5 +++++ pos_receipt/models/res_config_settings.py | 14 ++++++++++++++ pos_receipt/views/pos_reciept_views.xml | 22 ++++++++++++++++++++++ 6 files changed, 50 insertions(+) create mode 100644 pos_receipt/__init__.py create mode 100644 pos_receipt/__manifest__.py create mode 100644 pos_receipt/models/__init__.py create mode 100644 pos_receipt/models/pos_config.py create mode 100644 pos_receipt/models/res_config_settings.py create mode 100644 pos_receipt/views/pos_reciept_views.xml diff --git a/pos_receipt/__init__.py b/pos_receipt/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/pos_receipt/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/pos_receipt/__manifest__.py b/pos_receipt/__manifest__.py new file mode 100644 index 00000000000..73c386ea964 --- /dev/null +++ b/pos_receipt/__manifest__.py @@ -0,0 +1,7 @@ +{ + "name": "POS Receipt", + "version": "1.0", + "depends": ["point_of_sale"], + "data": ["views/pos_reciept_views.xml"], + "license": "LGPL-3", +} diff --git a/pos_receipt/models/__init__.py b/pos_receipt/models/__init__.py new file mode 100644 index 00000000000..0deb68c4680 --- /dev/null +++ b/pos_receipt/models/__init__.py @@ -0,0 +1 @@ +from . import res_config_settings diff --git a/pos_receipt/models/pos_config.py b/pos_receipt/models/pos_config.py new file mode 100644 index 00000000000..6cb3fb6fdea --- /dev/null +++ b/pos_receipt/models/pos_config.py @@ -0,0 +1,5 @@ +from odoo import models + + +class PosConfig(models.Model): + _inherit = "pos.config" diff --git a/pos_receipt/models/res_config_settings.py b/pos_receipt/models/res_config_settings.py new file mode 100644 index 00000000000..9d8f92002fb --- /dev/null +++ b/pos_receipt/models/res_config_settings.py @@ -0,0 +1,14 @@ +from odoo import models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + def open_pos_receipt_config_wizard(self): + return { + "type": "ir.actions.act_window", + "name": "Configure Receipt", + "res_model": "pos.config", + "view_mode": "form", + "target": "new", + } diff --git a/pos_receipt/views/pos_reciept_views.xml b/pos_receipt/views/pos_reciept_views.xml new file mode 100644 index 00000000000..713a293c9e1 --- /dev/null +++ b/pos_receipt/views/pos_reciept_views.xml @@ -0,0 +1,22 @@ + + + + res.config.settings.view.inherit.form + res.config.settings + + + + + + + + + + + From deff7a8a1042827bed997eef489a38432de9c9c5 Mon Sep 17 00:00:00 2001 From: arat-odoo Date: Wed, 9 Jul 2025 18:43:40 +0530 Subject: [PATCH 2/4] [IMP] pos_receipt: add configurable pos receipt layouts and wizard Created a different receipt layout in pos config. and add a template for each layout style and link receipt layout settings to pos config and res.config.settings. Also updated security access for the new wizard model. --- pos_receipt/__init__.py | 1 + pos_receipt/__manifest__.py | 9 +- pos_receipt/models/__init__.py | 1 + pos_receipt/models/pos_config.py | 14 ++- pos_receipt/models/res_config_settings.py | 11 ++- pos_receipt/security/ir.model.access.csv | 2 + pos_receipt/views/custom_boxes_layout.xml | 77 ++++++++++++++++ pos_receipt/views/custom_light_layout.xml | 62 +++++++++++++ pos_receipt/views/custom_lined_layout.xml | 106 ++++++++++++++++++++++ pos_receipt/views/pos_reciept_views.xml | 3 +- pos_receipt/wizard/__init__.py | 1 + pos_receipt/wizard/pos_receipt_layout.py | 34 +++++++ pos_receipt/wizard/pos_receipt_layout.xml | 29 ++++++ 13 files changed, 344 insertions(+), 6 deletions(-) create mode 100644 pos_receipt/security/ir.model.access.csv create mode 100644 pos_receipt/views/custom_boxes_layout.xml create mode 100644 pos_receipt/views/custom_light_layout.xml create mode 100644 pos_receipt/views/custom_lined_layout.xml create mode 100644 pos_receipt/wizard/__init__.py create mode 100644 pos_receipt/wizard/pos_receipt_layout.py create mode 100644 pos_receipt/wizard/pos_receipt_layout.xml diff --git a/pos_receipt/__init__.py b/pos_receipt/__init__.py index 0650744f6bc..9b4296142f4 100644 --- a/pos_receipt/__init__.py +++ b/pos_receipt/__init__.py @@ -1 +1,2 @@ from . import models +from . import wizard diff --git a/pos_receipt/__manifest__.py b/pos_receipt/__manifest__.py index 73c386ea964..b19a4161bec 100644 --- a/pos_receipt/__manifest__.py +++ b/pos_receipt/__manifest__.py @@ -2,6 +2,13 @@ "name": "POS Receipt", "version": "1.0", "depends": ["point_of_sale"], - "data": ["views/pos_reciept_views.xml"], + "data": [ + "security/ir.model.access.csv", + "views/custom_lined_layout.xml", + "views/custom_boxes_layout.xml", + "views/custom_light_layout.xml", + "views/receipt_content.xml", + "views/pos_reciept_views.xml", + ], "license": "LGPL-3", } diff --git a/pos_receipt/models/__init__.py b/pos_receipt/models/__init__.py index 0deb68c4680..2b92809a3b4 100644 --- a/pos_receipt/models/__init__.py +++ b/pos_receipt/models/__init__.py @@ -1 +1,2 @@ +from . import pos_config from . import res_config_settings diff --git a/pos_receipt/models/pos_config.py b/pos_receipt/models/pos_config.py index 6cb3fb6fdea..2f0ebb9a968 100644 --- a/pos_receipt/models/pos_config.py +++ b/pos_receipt/models/pos_config.py @@ -1,5 +1,17 @@ -from odoo import models +from odoo import models, fields class PosConfig(models.Model): _inherit = "pos.config" + + receipt_layout = fields.Selection( + [("light", "Light"), ("boxes", "Boxes"), ("lined", "Lined")], + string="Receipt Layout", + default="light", + ) + receipt_logo = fields.Binary( + string="Receipt Logo", + related="company_id.logo", + readonly=False, + help="A logo that will be printed in the receipt.", + ) diff --git a/pos_receipt/models/res_config_settings.py b/pos_receipt/models/res_config_settings.py index 9d8f92002fb..ff6abcdc7c7 100644 --- a/pos_receipt/models/res_config_settings.py +++ b/pos_receipt/models/res_config_settings.py @@ -1,14 +1,21 @@ -from odoo import models +from odoo import models, fields class ResConfigSettings(models.TransientModel): _inherit = "res.config.settings" + receipt_layout = fields.Selection( + related="pos_config_id.receipt_layout", readonly=False + ) + def open_pos_receipt_config_wizard(self): return { "type": "ir.actions.act_window", "name": "Configure Receipt", - "res_model": "pos.config", + "res_model": "pos.receipt.layout", "view_mode": "form", "target": "new", + "context": { + "active_pos_config_id": self.pos_config_id.id, + }, } diff --git a/pos_receipt/security/ir.model.access.csv b/pos_receipt/security/ir.model.access.csv new file mode 100644 index 00000000000..a5bb18f1c09 --- /dev/null +++ b/pos_receipt/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_layout,access_receipt_layout,model_pos_receipt_layout,base.group_user,1,1,1,1 diff --git a/pos_receipt/views/custom_boxes_layout.xml b/pos_receipt/views/custom_boxes_layout.xml new file mode 100644 index 00000000000..8f2c51d5984 --- /dev/null +++ b/pos_receipt/views/custom_boxes_layout.xml @@ -0,0 +1,77 @@ + + + + diff --git a/pos_receipt/views/custom_light_layout.xml b/pos_receipt/views/custom_light_layout.xml new file mode 100644 index 00000000000..5e76129f8ad --- /dev/null +++ b/pos_receipt/views/custom_light_layout.xml @@ -0,0 +1,62 @@ + + + + \ No newline at end of file diff --git a/pos_receipt/views/custom_lined_layout.xml b/pos_receipt/views/custom_lined_layout.xml new file mode 100644 index 00000000000..5c5159908d1 --- /dev/null +++ b/pos_receipt/views/custom_lined_layout.xml @@ -0,0 +1,106 @@ + + + + \ No newline at end of file diff --git a/pos_receipt/views/pos_reciept_views.xml b/pos_receipt/views/pos_reciept_views.xml index 713a293c9e1..0188dcd5d57 100644 --- a/pos_receipt/views/pos_reciept_views.xml +++ b/pos_receipt/views/pos_reciept_views.xml @@ -8,7 +8,7 @@ + help="Choose the layout of your receipt">