Files
2026-09-24 12:32:59 +03:30

34 lines
1.2 KiB
Python

from django.db import models
from apps.core.models import TimeStampedModel, UUIDModel
class PricingRule(UUIDModel, TimeStampedModel):
class RuleType(models.TextChoices):
FIXED = "fixed", "Fixed"
PER_KG = "per_kg", "Per kilogram"
PER_UNIT = "per_unit", "Per unit"
PERCENTAGE = "percentage", "Percentage"
TIERED = "tiered", "Tiered"
DISCOUNT = "discount", "Discount"
TAX = "tax", "Tax"
FEE = "fee", "Additional fee"
step = models.ForeignKey(
"workflows.WorkflowStep", on_delete=models.CASCADE, related_name="pricing_rules"
)
name = models.CharField(max_length=200)
rule_type = models.CharField(max_length=16, choices=RuleType.choices)
# Base amount. Meaning depends on rule_type:
# fixed/per_kg/per_unit -> money; percentage/discount/tax -> percent.
amount = models.DecimalField(max_digits=18, decimal_places=2, default=0)
config = models.JSONField(default=dict, blank=True)
active = models.BooleanField(default=True)
priority = models.IntegerField(default=0)
class Meta:
ordering = ["priority"]
def __str__(self) -> str:
return f"{self.name} ({self.rule_type})"