51 lines
1.9 KiB
Python
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
|