Files
eggs-backend/core/apps/eggs/models/debt.py
husanjon ab73d05ecc
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
gold eggs backend
2026-04-15 08:59:36 +02:00

79 lines
2.7 KiB
Python

from django.db import models
from rest_framework.exceptions import ValidationError
from core.http.models import AbstractBaseModel
class DebtTypeEnum(models.TextChoices):
ADDED = "added"
LOST = "lost"
class Debt(AbstractBaseModel):
market = models.ForeignKey(
to="Market", on_delete=models.CASCADE, related_name="debts"
)
debt_price = models.DecimalField(max_digits=30, decimal_places=2)
debt_type = models.CharField(
max_length=255,
choices=DebtTypeEnum.choices,
default=DebtTypeEnum.LOST.value,
)
def save(self, *args, **kwargs):
if self.pk is None:
if self.debt_type == DebtTypeEnum.ADDED.value:
# self.market.debt_paid -= self.debt_price
self.market.debt_unpaid += self.debt_price
elif self.debt_type == DebtTypeEnum.LOST.value:
if self.debt_price > self.market.debt_unpaid:
raise ValueError(
"Debt price cannot be greater than unpaid debt."
)
self.market.debt_paid += self.debt_price
self.market.debt_unpaid -= self.debt_price
else:
raise ValidationError(
detail={"debt_type": "invlaid debt_type"}
)
self.market.save()
super().save(*args, **kwargs)
def __str__(self):
return f"{self.debt_price} - {self.market.name}"
# from django.db import models
# from django.core.exceptions import ValidationError
#
#
# class Debt(AbstractBaseModel):
# market = models.ForeignKey(to="Market", on_delete=models.CASCADE)
# order = models.ForeignKey(to="Order", on_delete=models.CASCADE)
# debt_price = models.DecimalField(max_digits=30, decimal_places=2)
#
# def save(self, *args, **kwargs):
# if self.pk is None:
# if self.debt_price > self.market.debt_unpaid:
# raise ValidationError("Debt price cannot be greater than unpaid debt.")
#
# self.market.debt_paid += self.debt_price
# self.market.debt_unpaid -= self.debt_price
# self.market.save()
#
# self.order.price_paid += self.debt_price
# self.order.debt -= self.debt_price
# self.order.save()
#
# order_items = OrderItems.objects.filter(order_id=self.order.id)
# for item in order_items:
# party = item.courier_product_id.group_id.party_id
# if party:
# party.benefit += self.debt_price
# party.save()
#
# super().save(*args, **kwargs)
#
# def __str__(self):
# return f"{self.debt_price} - {self.market.name} - {self.order.id}"