Skip to Content
Меню
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Этот вопрос был отмечен
1 Ответить
5270 Представления

Hi, I want to create a custom module and I need to remove the mandatory fields on the checkout address page. I just want to use [name, email]. How can I remove the mandatory ["street", "city", "country_id"]?


def _get_mandatory_fields_billing(self, country_id=False):
req = ["name", "email", "street", "city", "country_id"]
if country_id:
country = request.env['res.country'].browse(country_id)
if country.state_required:
req += ['state_id']
if country.zip_required:
req += ['zip']
return req

def _get_mandatory_fields_shipping(self, country_id=False):
req = ["name", "street", "city", "country_id"]
if country_id:
country = request.env['res.country'].browse(country_id)
if country.state_required:
req += ['state_id']
if country.zip_required:
req += ['zip']
return req
Аватар
Отменить
Автор

It worked! Thank you so much :D

Лучший ответ

You can override both methods in website_sale controller as below:

from odoo.addons.website_sale.controllers.main import WebsiteSale


class WebsiteSale(WebsiteSale):

def _get_mandatory_fields_billing(self, country_id=False):
req = ["name", "email"]
return req

def _get_mandatory_fields_shipping(self, country_id=False):
req = ["name", "email"]
return req


Аватар
Отменить

This does not seem to work on Odoo 16. Although it does add additional required fields to the lists, it doesn't seem to over write it

[checkout_form_validate](https://github.com/odoo/odoo/blob/16.0/addons/website_sale/controllers/main.py#L974) seems to add additional ones, but it still seems that the previously required fields, like phone number, are still in the array.

Related Posts Ответы Просмотры Активность
0
мар. 25
449
1
авг. 24
1205
4
янв. 25
1532
2
окт. 24
697
0
июн. 24
668