From 458f1f31e3dae89d202ecd1633aaf07defaa8941 Mon Sep 17 00:00:00 2001 From: houssine Date: Mon, 23 Dec 2019 18:59:51 +0100 Subject: [PATCH] [IMP] add bank account field and allow to change his account number --- .../controllers/main.py | 59 +++++++++++++++---- .../easy_my_coop_website_portal_templates.xml | 10 +++- 2 files changed, 55 insertions(+), 14 deletions(-) diff --git a/easy_my_coop_website_portal/controllers/main.py b/easy_my_coop_website_portal/controllers/main.py index 7530d5a..6bb97d6 100644 --- a/easy_my_coop_website_portal/controllers/main.py +++ b/easy_my_coop_website_portal/controllers/main.py @@ -4,10 +4,10 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import http from odoo.exceptions import AccessError, MissingError from odoo.fields import Date -from odoo.http import request +from odoo.http import request, route +from odoo import _ from odoo.addons.portal.controllers.portal import CustomerPortal from odoo.addons.portal.controllers.portal import pager as portal_pager @@ -15,6 +15,7 @@ from odoo.addons.payment.controllers.portal import PaymentProcessing class CooperatorPortalAccount(CustomerPortal): + CustomerPortal.MANDATORY_BILLING_FIELDS.append("iban") def _prepare_portal_layout_values(self): values = super(CooperatorPortalAccount, @@ -30,27 +31,59 @@ class CooperatorPortalAccount(CustomerPortal): ) invoice_mgr = request.env['account.invoice'] capital_request_count = invoice_mgr.search_count([ - # ('partner_id', 'in', [partner.commercial_partner_id.id]), ('state', 'in', ['open', 'paid', 'cancelled']), # Get only the release capital request ('release_capital_request', '=', True), ]) invoice_count = invoice_mgr.search_count([ - # ('partner_id', 'in', [partner.commercial_partner_id.id]), ('release_capital_request', '=', False) ]) - + iban = '' + if partner.bank_ids: + iban = partner.bank_ids[0].acc_number values.update({ 'coop': coop, 'coop_bank': coop_bank, 'capital_request_count': capital_request_count, - 'invoice_count': invoice_count + 'invoice_count': invoice_count, + 'iban': iban }) return values - @http.route(['/my/invoices', '/my/invoices/page/'], type='http', - auth="user", website=True) + def details_form_validate(self, data): + error, error_message = super(CooperatorPortalAccount, + self).details_form_validate(data) + sub_req_obj = request.env['subscription.request'] + iban = data.get("iban") + valid = sub_req_obj.check_iban(iban) + + if not valid: + error['iban'] = 'error' + error_message.append(_("You iban account number is not valid")) + return error, error_message + + @route(['/my/account'], type='http', auth='user', website=True) + def account(self, redirect=None, **post): + res = super(CooperatorPortalAccount, self).account( + redirect, **post) + if not res.qcontext.get('error'): + partner = request.env.user.partner_id + partner_bank = request.env['res.partner.bank'] + iban = post.get('iban') + if iban: + if partner.bank_ids: + bank_account = partner.bank_ids[0] + bank_account.acc_number = iban + else: + partner_bank.sudo().create({ + 'partner_id': partner.id, + 'acc_number': iban + }) + return res + + @route(['/my/invoices', '/my/invoices/page/'], type='http', + auth="user", website=True) def portal_my_invoices(self, page=1, date_begin=None, date_end=None, sortby=None, **kw): res = super(CooperatorPortalAccount, self).portal_my_invoices( @@ -64,7 +97,7 @@ class CooperatorPortalAccount(CustomerPortal): qcontext['pager']['invoice_count'] = invoice_count return res - @http.route( + @route( ['/my/release_capital_request', '/my/release_capital_request/page/'], type='http', auth="user", website=True) @@ -118,8 +151,8 @@ class CooperatorPortalAccount(CustomerPortal): values ) - @http.route(['/my/invoices/'], - type='http', auth="public", website=True) + @route(['/my/invoices/'], + type='http', auth="public", website=True) def portal_my_invoice_detail(self, invoice_id, access_token=None, report_type=None, download=False, **kw): # override in order to not retrieve release capital request as invoices @@ -144,8 +177,8 @@ class CooperatorPortalAccount(CustomerPortal): PaymentProcessing.remove_payment_transaction(invoice_sudo.transaction_ids) return request.render("account.portal_invoice_page", values) - @http.route(['/my/cooperator_certificate/pdf'], - type='http', auth="user", website=True) + @route(['/my/cooperator_certificate/pdf'], + type='http', auth="user", website=True) def get_cooperator_certificat(self, **kw): """Render the cooperator certificate pdf of the current user""" partner = request.env.user.partner_id diff --git a/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml b/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml index a3c2856..99daad2 100644 --- a/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml +++ b/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml @@ -6,7 +6,15 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). --> - + +