52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
from odoo.addons.sale.controllers.portal import CustomerPortal
|
|
|
|
|
|
class CloverCustomerPortal(CustomerPortal):
|
|
|
|
@http.route()
|
|
def portal_order_page(
|
|
self,
|
|
order_id,
|
|
report_type=None,
|
|
access_token=None,
|
|
message=False,
|
|
download=False,
|
|
payment_amount=None,
|
|
amount_selection=None,
|
|
**kw
|
|
):
|
|
"""Auto-inject payment_amount for confirmed orders with outstanding balance."""
|
|
if payment_amount is None:
|
|
try:
|
|
order_sudo = self._document_check_access(
|
|
'sale.order', order_id, access_token=access_token,
|
|
)
|
|
except Exception:
|
|
order_sudo = None
|
|
|
|
if order_sudo:
|
|
is_rental = getattr(order_sudo, 'is_rental_order', False)
|
|
if (
|
|
order_sudo.state == 'sale'
|
|
and not is_rental
|
|
and order_sudo.amount_total > 0
|
|
and order_sudo.amount_paid < order_sudo.amount_total
|
|
):
|
|
payment_amount = order_sudo.amount_total - order_sudo.amount_paid
|
|
|
|
return super().portal_order_page(
|
|
order_id,
|
|
report_type=report_type,
|
|
access_token=access_token,
|
|
message=message,
|
|
download=download,
|
|
payment_amount=payment_amount,
|
|
amount_selection=amount_selection,
|
|
**kw,
|
|
)
|