mirror of
https://github.com/bringout/oca-ocb-sale.git
synced 2026-04-26 08:32:02 +02:00
49 lines
2.4 KiB
Python
49 lines
2.4 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import _, api, fields, models
|
|
|
|
|
|
class PaymentLinkWizard(models.TransientModel):
|
|
_inherit = 'payment.link.wizard'
|
|
_description = 'Generate Sales Payment Link'
|
|
|
|
amount_paid = fields.Monetary(string="Already Paid", readonly=True)
|
|
prepayment_amount = fields.Monetary(string="Prepayment Amount", currency_field='currency_id')
|
|
confirmation_message = fields.Char(
|
|
string="Confirmation Message", compute='_compute_confirmation_message'
|
|
)
|
|
|
|
@api.depends('amount')
|
|
def _compute_confirmation_message(self):
|
|
self.confirmation_message = False
|
|
for wizard in self.filtered(lambda w: w.res_model == 'sale.order'):
|
|
sale_order = wizard.env['sale.order'].browse(wizard.res_id)
|
|
if sale_order.state in ('draft', 'sent') and sale_order.require_payment:
|
|
wizard.confirmation_message = _("This payment will confirm the quotation.")
|
|
|
|
@api.depends('res_model', 'res_id')
|
|
def _compute_warning_message(self):
|
|
sale_wizards = self.env['payment.link.wizard']
|
|
for wizard in self.filtered(lambda w: w.res_model == 'sale.order'):
|
|
sale_order = wizard.env['sale.order'].browse(wizard.res_id)
|
|
if sale_order.state in ('draft', 'sent') and wizard.amount < wizard.prepayment_amount:
|
|
wizard.warning_message = _("The amount must be greater than the prepayment amount.")
|
|
sale_wizards |= wizard # Prevent the super call from clearing the warning message.
|
|
if sale_order.is_expired:
|
|
wizard.warning_message = _("The sale order has expired.")
|
|
sale_wizards |= wizard
|
|
super(PaymentLinkWizard, self - sale_wizards)._compute_warning_message()
|
|
|
|
def _prepare_url(self, base_url, related_document):
|
|
""" Override of `payment` to use the portal page URL of sales orders. """
|
|
if self.res_model == 'sale.order':
|
|
return f'{base_url}{related_document.get_portal_url()}'
|
|
else:
|
|
return super()._prepare_url(base_url, related_document)
|
|
|
|
def _prepare_query_params(self, *args):
|
|
""" Override of `payment` to add SO-related values to the query params. """
|
|
if self.res_model == 'sale.order':
|
|
return {'payment_amount': self.amount}
|
|
else:
|
|
return super()._prepare_query_params(*args)
|