odoo18/addons/l10n_tr_nilvera_edispatch/models/res_partner.py

51 lines
1.9 KiB
Python

from odoo import _, fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
l10n_tr_nilvera_edispatch_customs_zip = fields.Char(
string="Customs ZIP",
help="The postal code of the customs office used to ship to the destination country.",
size=5,
)
def _l10n_tr_nilvera_validate_partner_details(self, is_delivery_partner=False):
error_messages = {}
for record in self:
country_code = record.country_id.code
msg = []
required_fields = {
_("Street"): record.street,
_("City"): record.city,
_("State"): record.state_id,
_("Country"): record.country_id,
}
missing_fields = [name for name, value in required_fields.items() if not value]
if country_code == 'TR' and not record.vat:
missing_fields.append(_("TCKN/VKN"))
if country_code == 'TR' and not record.zip:
missing_fields.append(_("ZIP"))
if missing_fields:
msg.append(_("%s is required", ', '.join(missing_fields)))
if country_code != "TR" and (
not record.l10n_tr_nilvera_edispatch_customs_zip
or len(record.l10n_tr_nilvera_edispatch_customs_zip) != 5
):
msg.append(_("Customs ZIP of 5 characters must be present"))
if msg:
# Instead of using name, display_name is used, since name is not required
# if contact is of type "Delivery Address".
error_messages[f"invalid_partner_{record.id}"] = {
'message': _("%(name)s's %(errors)s.", name=record.display_name, errors=', '.join(msg)),
'action_text': _("View %s", record.display_name),
'action': record._get_records_action(name=_("View Partner"))
}
return error_messages