You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.0 KiB
125 lines
4.0 KiB
from odoo import http
|
|
from odoo.http import request
|
|
from odoo.tools.translate import _
|
|
|
|
|
|
class WebsiteLoanIssueSubscription(http.Controller):
|
|
@http.route(
|
|
["/subscription/get_loan_issue"],
|
|
type="json",
|
|
auth="user",
|
|
methods=["POST"],
|
|
website=True,
|
|
)
|
|
def get_loan_issue(self, loan_issue_id, **kw):
|
|
loan_issue_obj = request.env["loan.issue"]
|
|
partner = request.env.user.partner_id
|
|
if loan_issue_id:
|
|
loan_issue = loan_issue_obj.sudo().browse(int(loan_issue_id))
|
|
max_amount = loan_issue.get_max_amount(partner)
|
|
return {
|
|
loan_issue.id: {
|
|
"max_amount": max_amount,
|
|
"face_value": loan_issue.face_value,
|
|
}
|
|
}
|
|
else:
|
|
return False
|
|
|
|
def missing_mandatory_info(self):
|
|
partner = request.env.user.partner_id
|
|
if (
|
|
not partner.bank_ids
|
|
or not partner.birthdate_date
|
|
or not partner.street
|
|
or not partner.city
|
|
or not partner.zip
|
|
or not partner.country_id
|
|
or not partner.gender
|
|
or not partner.phone
|
|
):
|
|
return False
|
|
if partner.is_company:
|
|
if (
|
|
not partner.company_name
|
|
or not partner.vat
|
|
):
|
|
return False
|
|
return True
|
|
|
|
@http.route(
|
|
["/subscription/loan_issue_form"],
|
|
type="http",
|
|
auth="user",
|
|
website=True,
|
|
)
|
|
def display_loan_issue_subscription_page(self, **kwargs):
|
|
values = {}
|
|
if not self.missing_mandatory_info():
|
|
return request.redirect("/my/account")
|
|
is_company = request.env.user.partner_id.is_company
|
|
|
|
values = self.fill_values(values, is_company)
|
|
values.update(kwargs=kwargs.items())
|
|
return request.render(
|
|
"easy_my_coop_loan_website.loanissuesubscription", values
|
|
)
|
|
|
|
def get_loan_issues(self, is_company):
|
|
loan_obj = request.env["loan.issue"]
|
|
loan_issues = loan_obj.sudo().get_web_issues(is_company)
|
|
|
|
return loan_issues
|
|
|
|
def fill_values(self, values, is_company):
|
|
company = request.website.company_id
|
|
loan_issues = self.get_loan_issues(is_company)
|
|
|
|
values["loan_issues"] = loan_issues
|
|
values["company"] = company
|
|
|
|
if not values.get("loan_issue_id"):
|
|
for loan_issue in loan_issues:
|
|
if loan_issue.default_issue is True:
|
|
values["loan_issue_id"] = loan_issue.id
|
|
break
|
|
if not values.get("loan_issue_id", False) and loan_issues:
|
|
values["loan_issue_id"] = loan_issues[0].id
|
|
|
|
return values
|
|
|
|
def validation(self, loan_issue, kwargs):
|
|
sub_amount = kwargs.get("subscription_amount")
|
|
redirect = "easy_my_coop_loan_website.loanissuesubscription"
|
|
|
|
values = {}
|
|
if not loan_issue:
|
|
values["error_msg"] = _("The selected loan issue is not found")
|
|
return request.render(redirect, values)
|
|
if sub_amount:
|
|
values["error_msg"] = _("The amount shoud be of monetary type")
|
|
return request.render(redirect, values)
|
|
return True
|
|
|
|
@http.route(
|
|
["/subscription/subscribe_loan_issue"],
|
|
type="http",
|
|
auth="user",
|
|
website=True,
|
|
)
|
|
def loan_issue_subscription(self, **kwargs):
|
|
loan_obj = request.env["loan.issue"]
|
|
loan_obj_line = request.env["loan.issue.line"]
|
|
|
|
loan_issue = loan_obj.sudo().browse(kwargs.get("loan_issue_id"))
|
|
partner = request.env.user.partner_id
|
|
|
|
if self.validation(loan_issue, kwargs):
|
|
values = {
|
|
"loan_issue_id": loan_issue.id,
|
|
"partner_id": partner.id,
|
|
"amount": kwargs["subscription_amount"],
|
|
"state": "subscribed",
|
|
}
|
|
loan_obj_line.sudo().create(values)
|
|
return request.render("easy_my_coop_website.cooperator_thanks", values)
|