Files
ibapp-backend/core/apps/orders/models/party.py
2025-08-21 14:47:15 +05:00

64 lines
2.2 KiB
Python

from django.db import models
from core.apps.shared.models import BaseModel
from core.apps.orders.models.order import Order
from core.apps.accounts.models import User
class Party(BaseModel):
number = models.PositiveIntegerField(default=1)
orders = models.ManyToManyField(Order, related_name='parties', null=True, blank=True)
mediator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='parties')
# dates
delivery_date = models.DateField()
closed_date = models.DateField(null=True, blank=True)
order_date = models.DateField(auto_now_add=True)
payment_date = models.DateField()
status = models.CharField(
max_length=20, choices=[('ORDERED', 'yetkazildi'), ('PROCESS', 'jarayonda')],
null=True, blank=True
)
payment_status = models.FloatField(null=True, blank=True)
process = models.FloatField(null=True, blank=True)
confirmation = models.BooleanField(default=False)
comment = models.TextField(null=True, blank=True)
audit = models.CharField(
max_length=20, choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')],
null=True, blank=True
)
audit_comment = models.TextField(null=True, blank=True)
def __str__(self):
return str(self.number)
def save(self, *args, **kwargs):
if not self.pk:
last_party = Party.objects.order_by('number').last()
if last_party:
self.number = last_party.number + 1
else:
self.number = 1
return super().save(*args, **kwargs)
class Meta:
verbose_name = 'Partiya'
verbose_name_plural = 'Partiyalar'
class PartyAmount(BaseModel):
party = models.OneToOneField(Party, on_delete=models.CASCADE, related_name='party_amount')
total_price = models.PositiveBigIntegerField()
cost_amount = models.PositiveBigIntegerField(default=0)
calculated_amount = models.PositiveBigIntegerField(default=0)
paid_amount = models.PositiveBigIntegerField(default=0)
payment_amount = models.BigIntegerField(default=0)
def __str__(self):
return f'{self.party} amount'
class Meta:
verbose_name = 'Partiya Summasi'
verbose_name_plural = 'Partiya summalari'