Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
79 lines
2.7 KiB
Python
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}"
|