|
| 1 | +import logging |
| 2 | + |
| 3 | +from odoo.addons.website_sale.controllers.main import WebsiteSale |
| 4 | +from odoo.tools.translate import _ |
| 5 | + |
| 6 | +_logger = logging.getLogger(__name__) |
| 7 | + |
| 8 | + |
| 9 | +class WebsiteSaleFirstLastname(WebsiteSale): |
| 10 | + def _validate_address_values( |
| 11 | + self, |
| 12 | + address_values, |
| 13 | + partner_sudo, |
| 14 | + address_type, |
| 15 | + use_delivery_as_billing, |
| 16 | + required_fields, |
| 17 | + is_main_address, |
| 18 | + **kwargs, |
| 19 | + ): |
| 20 | + """Raise validation save time""" |
| 21 | + invalid_fields, missing_fields, error_messages = super()._validate_address_values( |
| 22 | + address_values, |
| 23 | + partner_sudo, |
| 24 | + address_type, |
| 25 | + use_delivery_as_billing, |
| 26 | + required_fields, |
| 27 | + is_main_address, |
| 28 | + **kwargs |
| 29 | + ) |
| 30 | + # Change first or last name |
| 31 | + if partner_sudo and not partner_sudo._can_edit_name(): |
| 32 | + full_name = partner_sudo.name or "" |
| 33 | + old_first, old_last = (full_name.split(" ", 1) + [""])[:2] |
| 34 | + |
| 35 | + new_first = address_values.get("name", "").split(" ", 1)[0] |
| 36 | + new_last = address_values.get("last_name", "") |
| 37 | + |
| 38 | + first_name_changed = new_first != old_first |
| 39 | + last_name_changed = new_last != old_last |
| 40 | + |
| 41 | + # Case 1: both changed |
| 42 | + if first_name_changed and last_name_changed: |
| 43 | + invalid_fields.update("name") |
| 44 | + invalid_fields.add("last_name") |
| 45 | + # Case 2: only first name changed |
| 46 | + elif first_name_changed and not last_name_changed: |
| 47 | + invalid_fields.discard("last_name") |
| 48 | + invalid_fields.add("name") |
| 49 | + # Case 3: only last name changed |
| 50 | + elif last_name_changed and not first_name_changed: |
| 51 | + invalid_fields.discard("name") |
| 52 | + invalid_fields.add("last_name") |
| 53 | + |
| 54 | + return invalid_fields, missing_fields, error_messages |
| 55 | + |
| 56 | + def _parse_form_data(self, form_data): |
| 57 | + """Call the method when save the address""" |
| 58 | + address_values, extra_form_data = super()._parse_form_data(form_data) |
| 59 | + # Added the first and last name in full name |
| 60 | + last_name = extra_form_data.get("last_name") |
| 61 | + if last_name and address_values.get("name"): |
| 62 | + extra_form_data["first_name"] = address_values.get("name") |
| 63 | + address_values["name"] = address_values.get("name") + " " + last_name |
| 64 | + elif last_name: |
| 65 | + address_values["name"] = last_name |
| 66 | + # Set company type |
| 67 | + company_type = "person" |
| 68 | + if company_type: |
| 69 | + address_values["company_type"] = company_type |
| 70 | + if last_name: |
| 71 | + address_values["last_name"] = last_name |
| 72 | + return address_values, extra_form_data |
0 commit comments