fix - inventory update with registerer orgnaizaion of quota if not in parent orgs

This commit is contained in:
2025-11-22 13:27:41 +03:30
parent 847b8dc9f6
commit 1da2582976

View File

@@ -138,12 +138,25 @@ class QuotaStatsService:
stat_queryset = OrganizationQuotaStats.objects.select_related('quota', 'organization') stat_queryset = OrganizationQuotaStats.objects.select_related('quota', 'organization')
update_my_remaining_stat = True update_my_remaining_stat = True
parent_orgs = []
while org: while org:
stat = stat_queryset.filter( parent_orgs.append(org)
organization=org, org = org.parent_organization
quota=quota
).first() parent_orgs_ids = [org.id for org in parent_orgs]
if stat:
target_org_ids = set(parent_orgs_ids)
if quota.registerer_organization.id not in target_org_ids:
target_org_ids.add(quota.registerer_organization.id)
stats = (stat_queryset.filter(
quota=quota,
organization__in=target_org_ids
))
for stat in stats:
stat.inventory_received = (stat.inventory_received or 0) + diff stat.inventory_received = (stat.inventory_received or 0) + diff
# just update my own stat remaining quota weight # just update my own stat remaining quota weight
@@ -153,6 +166,5 @@ class QuotaStatsService:
if stat.inventory_received < 0: if stat.inventory_received < 0:
stat.inventory_received = 0 stat.inventory_received = 0
stat.save(update_fields=['inventory_received', 'remaining_amount'])
org = org.parent_organization OrganizationQuotaStats.objects.bulk_update(stats, ['inventory_received', 'remaining_amount'])