diff --git a/pos_close_approval/__manifest__.py b/pos_close_approval/__manifest__.py index c72496151..c4d889832 100644 --- a/pos_close_approval/__manifest__.py +++ b/pos_close_approval/__manifest__.py @@ -15,8 +15,10 @@ "depends": ["pos_session_pay_invoice"], "post_load": "post_load_hook", "data": [ + "wizards/change_payment_method_wizard.xml", "wizards/pos_cash_box.xml", "views/res_config_settings.xml", + "views/pos_payment.xml", "security/ir.model.access.csv", "wizards/bank_statement_account.xml", "views/pos_session_views.xml", diff --git a/pos_close_approval/security/ir.model.access.csv b/pos_close_approval/security/ir.model.access.csv index 7ce6ee79b..d3a567644 100644 --- a/pos_close_approval/security/ir.model.access.csv +++ b/pos_close_approval/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_account_bank_statement_line_account,access_account_bank_statement_line_account,model_account_bank_statement_line_account,point_of_sale.group_pos_manager,1,1,1,0 access_pos_cash_box,access_pos_cash_box,model_pos_cash_box,point_of_sale.group_pos_manager,1,1,1,0 +pos_close_approval.access_change_payment_method_wizard,access_change_payment_method_wizard,model_change_payment_method_wizard,point_of_sale.group_pos_manager,1,1,1,0 diff --git a/pos_close_approval/views/pos_payment.xml b/pos_close_approval/views/pos_payment.xml new file mode 100644 index 000000000..ab429cb01 --- /dev/null +++ b/pos_close_approval/views/pos_payment.xml @@ -0,0 +1,23 @@ + + + + + pos.payment.form (in pos_close_approval) + pos.payment + + + +
+
+
+
+
+
diff --git a/pos_close_approval/wizards/__init__.py b/pos_close_approval/wizards/__init__.py index 9228b017f..edd8c91e8 100644 --- a/pos_close_approval/wizards/__init__.py +++ b/pos_close_approval/wizards/__init__.py @@ -1,2 +1,3 @@ from . import pos_cash_box from . import bank_statement_account +from . import change_payment_method_wizard diff --git a/pos_close_approval/wizards/change_payment_method_wizard.py b/pos_close_approval/wizards/change_payment_method_wizard.py new file mode 100644 index 000000000..6c60d9cd4 --- /dev/null +++ b/pos_close_approval/wizards/change_payment_method_wizard.py @@ -0,0 +1,46 @@ +# Copyright 2025 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class ChangePaymentMethodWizard(models.TransientModel): + + _name = "change.payment.method.wizard" + _description = "Wizard para cambiar método de pago" + + payment_id = fields.Many2one("pos.payment", required=True, readonly=True) + old_payment_method_id = fields.Many2one( + "pos.payment.method", + string="Método de pago antiguo", + required=True, + readonly=True, + ) + new_payment_method_id = fields.Many2one( + "pos.payment.method", string="Nuevo método de pago", required=True + ) + + @api.model + def default_get(self, fields): + res = super().default_get(fields) + active_id = self.env.context.get("active_id") + if active_id: + payment = self.env["pos.payment"].browse(active_id) + res.update( + { + "payment_id": payment.id, + "old_payment_method_id": payment.payment_method_id.id, + } + ) + return res + + def confirm_change(self): + self.ensure_one() + payment = self.payment_id + session = payment.pos_order_id.session_id + if session.state == "closed": + raise UserError( + _("The session is closed, the payment method cannot be changed.") + ) + payment.payment_method_id = self.new_payment_method_id diff --git a/pos_close_approval/wizards/change_payment_method_wizard.xml b/pos_close_approval/wizards/change_payment_method_wizard.xml new file mode 100644 index 000000000..1713bbd9d --- /dev/null +++ b/pos_close_approval/wizards/change_payment_method_wizard.xml @@ -0,0 +1,41 @@ + + + + + + change.payment.method.wizard.form (in pos_close_approval) + change.payment.method.wizard + +
+ + + + + + +
+
+
+
+
+ + + Change Payment Method Wizard + change.payment.method.wizard + form + {} + new + + + +