[FIX] website_sale : check mandatory fields
If a partner have two delivery address, one full filled, an other with missing fields. During the shopping (the first delivery address is auto selected), if the partner go back in /shop/address to select the second address. Then go to /shop/confirm_order, there no checks. closes odoo/odoo#69901 X-original-commit: f8c8418bdd5b9d27b33fea3c63511297a231aa93 Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
This commit is contained in:
committed by
Jeremy Kersten
parent
5a499ecf11
commit
a39db65c8c
@@ -505,6 +505,15 @@ class WebsiteSale(http.Controller):
|
||||
# Checkout
|
||||
# ------------------------------------------------------
|
||||
|
||||
def checkout_check_address(self, order):
|
||||
billing_fields_required = self._get_mandatory_fields_billing(order.partner_id.country_id.id)
|
||||
if not all(order.partner_id.read(billing_fields_required)[0].values()):
|
||||
return request.redirect('/shop/address?partner_id=%d' % order.partner_id.id)
|
||||
|
||||
shipping_fields_required = self._get_mandatory_fields_shipping(order.partner_shipping_id.country_id.id)
|
||||
if not all(order.partner_shipping_id.read(shipping_fields_required)[0].values()):
|
||||
return request.redirect('/shop/address?partner_id=%d' % order.partner_shipping_id.id)
|
||||
|
||||
def checkout_redirection(self, order):
|
||||
# must have a draft sales order with lines at this point, otherwise reset
|
||||
if not order or order.state != 'draft':
|
||||
@@ -788,13 +797,9 @@ class WebsiteSale(http.Controller):
|
||||
if order.partner_id.id == request.website.user_id.sudo().partner_id.id:
|
||||
return request.redirect('/shop/address')
|
||||
|
||||
billing_fields_required = self._get_mandatory_fields_billing(order.partner_id.country_id.id)
|
||||
if not all(order.partner_id.read(billing_fields_required)[0].values()):
|
||||
return request.redirect('/shop/address?partner_id=%d' % order.partner_id.id)
|
||||
|
||||
shipping_fields_required = self._get_mandatory_fields_shipping(order.partner_shipping_id.country_id.id)
|
||||
if not all(order.partner_shipping_id.read(shipping_fields_required)[0].values()):
|
||||
return request.redirect('/shop/address?partner_id=%d' % order.partner_shipping_id.id)
|
||||
redirection = self.checkout_check_address(order)
|
||||
if redirection:
|
||||
return redirection
|
||||
|
||||
values = self.checkout_values(**post)
|
||||
|
||||
@@ -812,7 +817,7 @@ class WebsiteSale(http.Controller):
|
||||
def confirm_order(self, **post):
|
||||
order = request.website.sale_get_order()
|
||||
|
||||
redirection = self.checkout_redirection(order)
|
||||
redirection = self.checkout_redirection(order) or self.checkout_check_address(order)
|
||||
if redirection:
|
||||
return redirection
|
||||
|
||||
@@ -920,7 +925,7 @@ class WebsiteSale(http.Controller):
|
||||
paying / canceling
|
||||
"""
|
||||
order = request.website.sale_get_order()
|
||||
redirection = self.checkout_redirection(order)
|
||||
redirection = self.checkout_redirection(order) or self.checkout_check_address(order)
|
||||
if redirection:
|
||||
return redirection
|
||||
|
||||
|
||||
Reference in New Issue
Block a user