fix pos sharing information bug in stake holders

This commit is contained in:
2025-09-15 12:08:13 +03:30
parent d45a74f8cd
commit 3b57c817e8
3 changed files with 23 additions and 13 deletions

View File

@@ -24,9 +24,10 @@ def pos_organizations_sharing_information(
"broker": item.broker.name if item.broker else None,
"amount": quota.broker_values.filter(
broker=item.broker
).first().value if quota and item.broker else item.holders_share_amount.filter(
quota_distribution=distribution
).first().share_amount
).first().value if quota and item.broker else (
item.holders_share_amount.filter(quota_distribution=distribution).first().share_amount
if item.holders_share_amount.filter(quota_distribution=distribution).exists() else None
)
} for item in stake_holders]
return sharing_information_list

View File

@@ -8,6 +8,7 @@ from apps.product.services.services import (
from apps.pos_device.services.services import pos_organizations_sharing_information
from apps.pos_device.pos.api.v1.serializers.device import DeviceSerializer
from apps.herd.pos.api.v1.serializers import RancherSerializer
from apps.product.models import QuotaDistribution, Product
from apps.warehouse import models as warehouse_models
from apps.warehouse.exceptions import (
TotalInventorySaleException
@@ -130,6 +131,12 @@ class InventoryQuotaSaleTransactionSerializer(serializers.ModelSerializer):
for item_data in items_data:
item = warehouse_models.InventoryQuotaSaleItem.objects.create(
transaction=transaction,
quota_distribution=QuotaDistribution.objects.get(
id=item_data.pop('quota_distribution')
),
product=Product.objects.get(
id=item_data.pop('product')
),
**item_data
)
total_price += item.total_price

View File

@@ -2,7 +2,7 @@ from django.db.models import Sum
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver
from apps.product.models import QuotaDistribution
from .models import InventoryEntry, InventoryQuotaSaleTransaction
from .models import InventoryEntry, InventoryQuotaSaleItem
def calculate_warehouse_entry(quota_distribution):
@@ -14,8 +14,8 @@ def calculate_warehouse_entry(quota_distribution):
quota_distribution.save(update_fields=['warehouse_entry'])
def warehouse_sold_and_balance(quota_distribution):
total_sold = quota_distribution.inventory_sales.aggregate(
def warehouse_sold_and_balance(quota_distribution: QuotaDistribution):
total_sold = quota_distribution.sale_items.aggregate(
total=Sum('weight')
)['total'] or 0
@@ -31,10 +31,12 @@ def update_distribution_warehouse_entry(sender, instance, **kwargs):
warehouse_sold_and_balance(instance.distribution)
# @receiver(post_save, sender=InventoryQuotaSaleTransaction)
# @receiver(post_delete, sender=InventoryQuotaSaleTransaction)
# def update_distribution_warehouse_sold_and_balance(sender, instance, **kwargs):
# if instance.quota_distribution:
# warehouse_sold_and_balance(instance.quota_distribution)
# else:
# print("quota distribution is null - warehouse app signals")
@receiver(post_save, sender=InventoryQuotaSaleItem)
@receiver(post_delete, sender=InventoryQuotaSaleItem)
def update_distribution_warehouse_sold_and_balance(sender, instance, **kwargs):
if instance.quota_distribution:
warehouse_sold_and_balance(
quota_distribution=instance.quota_distribution,
)
else:
print("quota distribution is null - warehouse app signals")