valuation va vihicle modellari qoshildi

This commit is contained in:
Husanjonazamov
2026-02-13 15:38:13 +05:00
parent 4bc54f1952
commit acf426ee9b
41 changed files with 775 additions and 1 deletions

View File

@@ -0,0 +1,127 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
from django_core.models import AbstractBaseModel
from model_bakery import baker
from core.apps.evaluation.choices.valuation import (
EvaluationPurpose,
EvaluationType,
ValuationStatus,
PaymentStatus,
)
from .customer import CustomerModel, PropertyOwnerModel
class ValuationModel(AbstractBaseModel):
# 📋 Asosiy ma'lumotlar
conclusion_number = models.CharField(
verbose_name=_("conclusion number"),
max_length=50,
unique=True,
blank=True,
null=True,
)
evaluation_purpose = models.CharField(
verbose_name=_("evaluation purpose"),
max_length=50,
choices=EvaluationPurpose.choices,
default=EvaluationPurpose.SALE,
)
evaluation_type = models.CharField(
verbose_name=_("evaluation type"),
max_length=50,
choices=EvaluationType.choices,
)
evaluation_subtype = models.CharField(
verbose_name=_("evaluation subtype"),
max_length=100,
blank=True,
null=True,
)
status = models.CharField(
verbose_name=_("status"),
max_length=20,
choices=ValuationStatus.choices,
default=ValuationStatus.DRAFT,
)
# 👥 Bog'lanishlar
customer = models.ForeignKey(
CustomerModel,
on_delete=models.PROTECT,
related_name="valuations",
verbose_name=_("customer"),
)
property_owner = models.ForeignKey(
PropertyOwnerModel,
on_delete=models.PROTECT,
related_name="valuations",
verbose_name=_("property owner"),
null=True,
blank=True,
help_text=_("Keep empty if customer is the owner"),
)
created_by = models.ForeignKey(
"accounts.User",
on_delete=models.PROTECT,
related_name="created_valuations",
verbose_name=_("created by"),
)
assigned_to = models.ForeignKey(
"accounts.User",
on_delete=models.SET_NULL,
related_name="assigned_valuations",
verbose_name=_("assigned to"),
null=True,
blank=True,
)
# 💰 Narx va To'lov
estimated_price = models.DecimalField(
verbose_name=_("estimated price"),
max_digits=15,
decimal_places=2,
null=True,
blank=True,
)
final_price = models.DecimalField(
verbose_name=_("final price"),
max_digits=15,
decimal_places=2,
null=True,
blank=True,
)
payment_status = models.CharField(
verbose_name=_("payment status"),
max_length=20,
choices=PaymentStatus.choices,
default=PaymentStatus.UNPAID,
)
# 🚚 Yetkazib berish
is_courier_delivery = models.BooleanField(
verbose_name=_("courier delivery"), default=False
)
courier_extra_amount = models.DecimalField(
verbose_name=_("courier extra amount"),
max_digits=12,
decimal_places=2,
default=0,
)
# 📝 Izohlar
notes = models.TextField(verbose_name=_("notes"), blank=True, null=True)
def __str__(self):
return f"Valuation {self.conclusion_number} - {self.customer}"
@classmethod
def _baker(cls):
return baker.make(cls)
class Meta:
db_table = "Valuation"
verbose_name = _("Valuation")
verbose_name_plural = _("Valuations")