[FIX] website_sale_payment_terms: calculate amounts based on term lines

add unit tests
refactor JS widget
H5924
This commit is contained in:
Cedric Collins
2021-10-22 20:14:00 -05:00
parent 4320de51e9
commit 2372eeff83
7 changed files with 124 additions and 44 deletions

View File

@@ -1,8 +1,8 @@
from odoo.http import request, route
from odoo.addons.website_sale.controllers.main import WebsiteSale
from odoo.addons.website_sale_delivery.controllers.main import WebsiteSaleDelivery
class WebsiteSalePaymentTerms(WebsiteSale):
class WebsiteSalePaymentTerms(WebsiteSaleDelivery):
# In case payment_term_id is set by query-string in a link (from website_sale_delivery)
@route(['/shop/payment'], type='http', auth="public", website=True)
@@ -36,11 +36,14 @@ class WebsiteSalePaymentTerms(WebsiteSale):
# Return values after order payment_term_id is updated
def _update_website_payment_term_return(self, order, **post):
if order:
Monetary = request.env['ir.qweb.field.monetary']
currency = order.currency_id
return {
'payment_term_name': order.payment_term_id.name,
'payment_term_id': order.payment_term_id.id,
'note': order.payment_term_id.note,
'require_payment': order.require_payment,
'amount_due_today': order.amount_due_today,
'amount_due_today_html': Monetary.value_to_html(order.amount_due_today, {'display_currency': currency}),
}
return {}
@@ -74,3 +77,11 @@ class WebsiteSalePaymentTerms(WebsiteSale):
if request.website and request.website.sale_reset:
request.website.sale_reset()
return request.redirect('/shop/confirmation')
def _update_website_sale_delivery_return(self, order, **post):
res = super(WebsiteSalePaymentTerms, self)._update_website_sale_delivery_return(order, **post)
Monetary = request.env['ir.qweb.field.monetary']
currency = order.currency_id
if order:
res['amount_due_today'] = Monetary.value_to_html(order.amount_due_today, {'display_currency': currency})
return res