From 12eb33eea11f1e108fd0b851b376f6bb19105f83 Mon Sep 17 00:00:00 2001 From: Franco Leyes Date: Thu, 19 Jun 2025 16:11:56 +0000 Subject: [PATCH] [IMP] academic_sale_subscription: add payment_portal controller, and enhance order creation with subscription messaging --- academic_sale_subscription/__manifest__.py | 2 +- .../controllers/__init__.py | 1 + .../controllers/payment_portal.py | 15 +++++++++++++++ academic_sale_subscription/models/sale_order.py | 14 ++++++++------ 4 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 academic_sale_subscription/controllers/payment_portal.py diff --git a/academic_sale_subscription/__manifest__.py b/academic_sale_subscription/__manifest__.py index 322fed38..dced5bf1 100644 --- a/academic_sale_subscription/__manifest__.py +++ b/academic_sale_subscription/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Academic Sale Subscription", - "version": "18.0.1.5.0", + "version": "18.0.1.6.0", "sequence": 14, "summary": "", "author": "ADHOC SA", diff --git a/academic_sale_subscription/controllers/__init__.py b/academic_sale_subscription/controllers/__init__.py index e05b02b3..0a65852f 100644 --- a/academic_sale_subscription/controllers/__init__.py +++ b/academic_sale_subscription/controllers/__init__.py @@ -1,2 +1,3 @@ from . import portal_account from . import customer_portal +from . import payment_portal diff --git a/academic_sale_subscription/controllers/payment_portal.py b/academic_sale_subscription/controllers/payment_portal.py new file mode 100644 index 00000000..da905438 --- /dev/null +++ b/academic_sale_subscription/controllers/payment_portal.py @@ -0,0 +1,15 @@ +from odoo.addons.payment.controllers import portal as payment_portal + + +class PaymentPortal(payment_portal.PaymentPortal): + def _get_subscription_domain(self, partner): + res = super()._get_subscription_domain(partner) + for domain_tuple in res: + if len(domain_tuple) == 3 and domain_tuple[0] == "subscription_state" and domain_tuple[1] == "in": + states = list(domain_tuple[2]) + if "1_draft" not in states: + states.append("1_draft") + index = res.index(domain_tuple) + res[index] = ("subscription_state", "in", states) + break + return res diff --git a/academic_sale_subscription/models/sale_order.py b/academic_sale_subscription/models/sale_order.py index 1267206b..d1793122 100644 --- a/academic_sale_subscription/models/sale_order.py +++ b/academic_sale_subscription/models/sale_order.py @@ -47,16 +47,18 @@ def _prepare_invoice(self): res["student_id"] = self.partner_id.id return res - def action_confirm(self): - for rec in self.filtered("is_academic_sale"): - rec.message_subscribe( + @api.model_create_multi + def create(self, vals_list): + orders = super().create(vals_list) + for order in orders.filtered("is_academic_sale"): + order.message_subscribe( [ payment_responsible.id - for payment_responsible in rec.partner_invoice_id | rec.partner_invoice_ids - if payment_responsible not in rec.sudo().message_partner_ids + for payment_responsible in order.partner_invoice_id | order.partner_invoice_ids + if payment_responsible not in order.sudo().message_partner_ids ] ) - return super().action_confirm() + return orders def _message_get_default_recipients(self): """Por defecto las plantillas mandan a partner_id pero para nosotros el partners es el estudiante.