From 1a9c01cdcd4a43db2d98fc40041d599d4e592625 Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Tue, 18 Nov 2025 09:37:42 +0330 Subject: [PATCH] fix - set exception in org_quota_stat signal --- apps/product/signals.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/product/signals.py b/apps/product/signals.py index 6b4fa50..042dffa 100644 --- a/apps/product/signals.py +++ b/apps/product/signals.py @@ -4,6 +4,7 @@ from django.db import models from django.db.models import Sum, Q from django.db.models.signals import post_save, post_delete, post_init from django.dispatch import receiver +from rest_framework import status from apps.product.validators.quota_stats_validator import QuotaStatsValidator from apps.warehouse.models import ( @@ -11,6 +12,7 @@ from apps.warehouse.models import ( InventoryEntry ) from common.helpers import get_organization_by_user +from .exceptions import QuotaException from .models import ( QuotaDistribution, Quota, @@ -326,6 +328,11 @@ def organization_quota_stats(sender, instance: Quota, created: bool, **kwargs): total=Sum('weight') )['total'] or 0 org_quota_stat.remaining_amount = org_quota_stat.total_amount - org_quota_stat.total_distributed + if org_quota_stat.remaining_amount < 0: + raise QuotaException( + "وزن سهمیه نباید از مقدار توزیع شده کمتر باشد", # noqa + status.HTTP_403_FORBIDDEN + ) org_quota_stat.save(update_fields=['total_amount', 'total_distributed', 'sold_amount', 'remaining_amount']) # delete quota