29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
"""Customer identity and the payer recorded on each receipt are independent."""
|
|
from django.core.exceptions import ValidationError
|
|
from apps.core.persian_text import normalize_persian_text
|
|
|
|
|
|
def customer_name(customer):
|
|
profile = getattr(customer, 'customer_profile', None)
|
|
name = f'{profile.first_name} {profile.last_name}'.strip() if profile else ''
|
|
return normalize_persian_text(name or customer.get_full_name())
|
|
|
|
|
|
def depositor_name(value):
|
|
name = normalize_persian_text(value)
|
|
if not name.replace('\u200c', '').replace('\u200b', '').strip():
|
|
raise ValidationError('نام واریزکننده را وارد کنید.')
|
|
if len(name) > 150:
|
|
raise ValidationError('نام واریزکننده باید حداکثر ۱۵۰ کاراکتر باشد.')
|
|
return name
|
|
|
|
|
|
def receipt_identity(customer, payer):
|
|
name = customer_name(customer)
|
|
payer = normalize_persian_text(payer)
|
|
if not name:
|
|
return payer or 'نام ثبت نشده'
|
|
if not payer or name == payer:
|
|
return name
|
|
return f'{name} (واریزکننده: {payer})'
|