gold eggs backend
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
This commit is contained in:
78
core/apps/eggs/models/debt.py
Normal file
78
core/apps/eggs/models/debt.py
Normal file
@@ -0,0 +1,78 @@
|
||||
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}"
|
||||
Reference in New Issue
Block a user