evaluation-customer modeli yaratildi va kerakli fiealdlr qoshildi
This commit is contained in:
167
core/apps/evaluation/models/customer.py
Normal file
167
core/apps/evaluation/models/customer.py
Normal file
@@ -0,0 +1,167 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_core.models import AbstractBaseModel
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
class CustomerTypeChoice(models.TextChoices):
|
||||
LEGAL = "legal", _("Yuridik shaxs")
|
||||
INDIVIDUAL = "individual", _("Jismoniy shaxs")
|
||||
|
||||
|
||||
class CustomerModel(AbstractBaseModel):
|
||||
"""Buyurtmachi — baholashga buyurtma beruvchi (yuridik yoki jismoniy shaxs)"""
|
||||
|
||||
customer_type = models.CharField(
|
||||
verbose_name=_("customer type"),
|
||||
max_length=20,
|
||||
choices=CustomerTypeChoice,
|
||||
)
|
||||
|
||||
# --- Jismoniy shaxs ma'lumotlari ---
|
||||
jshshir = models.CharField(
|
||||
verbose_name=_("JSHSHIR"), max_length=14, blank=True, default=""
|
||||
) # Kiritiladi
|
||||
passport_series = models.CharField(
|
||||
verbose_name=_("passport series"), max_length=10, blank=True, default=""
|
||||
) # Kiritiladi
|
||||
passport_number = models.CharField(
|
||||
verbose_name=_("passport number"), max_length=20, blank=True, default=""
|
||||
) # Kiritiladi
|
||||
first_name = models.CharField(
|
||||
verbose_name=_("first name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API: JSHSHIR orqali to'ladi
|
||||
last_name = models.CharField(
|
||||
verbose_name=_("last name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API: JSHSHIR orqali to'ladi
|
||||
middle_name = models.CharField(
|
||||
verbose_name=_("middle name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API: JSHSHIR orqali to'ladi
|
||||
address = models.TextField(
|
||||
verbose_name=_("address"), blank=True, default=""
|
||||
) # 🌐 API: JSHSHIR orqali to'ladi
|
||||
passport_issued_date = models.DateField(
|
||||
verbose_name=_("passport issued date"), null=True, blank=True
|
||||
) # 🌐 API
|
||||
passport_issued_by = models.CharField(
|
||||
verbose_name=_("passport issued by"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API
|
||||
|
||||
# --- Yuridik shaxs ma'lumotlari ---
|
||||
inn = models.CharField(
|
||||
verbose_name=_("INN"), max_length=20, blank=True, default=""
|
||||
) # Kiritiladi
|
||||
org_name = models.CharField(
|
||||
verbose_name=_("organization name"), max_length=500, blank=True, default=""
|
||||
) # 🌐 API: INN orqali to'ladi
|
||||
org_address = models.TextField(
|
||||
verbose_name=_("organization address"), blank=True, default=""
|
||||
) # 🌐 API: INN orqali to'ladi
|
||||
director_name = models.CharField(
|
||||
verbose_name=_("director full name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API: INN orqali to'ladi
|
||||
mfo = models.CharField(
|
||||
verbose_name=_("MFO"), max_length=10, blank=True, default=""
|
||||
) # 🌐 API: INN orqali to'ladi
|
||||
bank_account = models.CharField(
|
||||
verbose_name=_("bank account (HISOB raqam)"), max_length=30, blank=True, default=""
|
||||
) # 🌐 API: INN orqali to'ladi
|
||||
certificate_file = models.FileField(
|
||||
verbose_name=_("certificate file (guvohnoma)"),
|
||||
upload_to="customers/certificates/",
|
||||
null=True,
|
||||
blank=True,
|
||||
) # Yuridik shaxs guvohnomasi
|
||||
|
||||
def __str__(self):
|
||||
if self.customer_type == CustomerTypeChoice.LEGAL:
|
||||
return self.org_name or str(self.pk)
|
||||
return f"{self.last_name} {self.first_name}" or str(self.pk)
|
||||
|
||||
@classmethod
|
||||
def _baker(cls):
|
||||
return baker.make(cls, customer_type=CustomerTypeChoice.INDIVIDUAL)
|
||||
|
||||
class Meta:
|
||||
db_table = "customer"
|
||||
verbose_name = _("Customer")
|
||||
verbose_name_plural = _("Customers")
|
||||
|
||||
|
||||
class PropertyOwnerModel(AbstractBaseModel):
|
||||
"""Mulk egasi — agar buyurtmachi va mulk egasi boshqa-boshqa bo'lsa"""
|
||||
|
||||
owner_type = models.CharField(
|
||||
verbose_name=_("owner type"),
|
||||
max_length=20,
|
||||
choices=CustomerTypeChoice,
|
||||
)
|
||||
|
||||
# --- Jismoniy shaxs ma'lumotlari ---
|
||||
jshshir = models.CharField(
|
||||
verbose_name=_("JSHSHIR"), max_length=14, blank=True, default=""
|
||||
)
|
||||
passport_series = models.CharField(
|
||||
verbose_name=_("passport series"), max_length=10, blank=True, default=""
|
||||
)
|
||||
passport_number = models.CharField(
|
||||
verbose_name=_("passport number"), max_length=20, blank=True, default=""
|
||||
)
|
||||
first_name = models.CharField(
|
||||
verbose_name=_("first name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API
|
||||
last_name = models.CharField(
|
||||
verbose_name=_("last name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API
|
||||
middle_name = models.CharField(
|
||||
verbose_name=_("middle name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API
|
||||
address = models.TextField(
|
||||
verbose_name=_("address"), blank=True, default=""
|
||||
) # 🌐 API
|
||||
passport_issued_date = models.DateField(
|
||||
verbose_name=_("passport issued date"), null=True, blank=True
|
||||
) # 🌐 API
|
||||
passport_issued_by = models.CharField(
|
||||
verbose_name=_("passport issued by"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API
|
||||
|
||||
# --- Yuridik shaxs ma'lumotlari ---
|
||||
inn = models.CharField(
|
||||
verbose_name=_("INN"), max_length=20, blank=True, default=""
|
||||
)
|
||||
org_name = models.CharField(
|
||||
verbose_name=_("organization name"), max_length=500, blank=True, default=""
|
||||
) # 🌐 API
|
||||
org_address = models.TextField(
|
||||
verbose_name=_("organization address"), blank=True, default=""
|
||||
) # 🌐 API
|
||||
director_name = models.CharField(
|
||||
verbose_name=_("director full name"), max_length=255, blank=True, default=""
|
||||
) # 🌐 API
|
||||
mfo = models.CharField(
|
||||
verbose_name=_("MFO"), max_length=10, blank=True, default=""
|
||||
) # 🌐 API
|
||||
bank_account = models.CharField(
|
||||
verbose_name=_("bank account (HISOB raqam)"), max_length=30, blank=True, default=""
|
||||
) # 🌐 API
|
||||
certificate_file = models.FileField(
|
||||
verbose_name=_("certificate file (guvohnoma)"),
|
||||
upload_to="property_owners/certificates/",
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
if self.owner_type == CustomerTypeChoice.LEGAL:
|
||||
return self.org_name or str(self.pk)
|
||||
return f"{self.last_name} {self.first_name}" or str(self.pk)
|
||||
|
||||
@classmethod
|
||||
def _baker(cls):
|
||||
return baker.make(cls, owner_type=CustomerTypeChoice.INDIVIDUAL)
|
||||
|
||||
class Meta:
|
||||
db_table = "property_owner"
|
||||
verbose_name = _("Property Owner")
|
||||
verbose_name_plural = _("Property Owners")
|
||||
Reference in New Issue
Block a user