fix - change transaction base from distribution to quota stat

This commit is contained in:
2025-11-26 15:28:14 +03:30
parent 7c1fb57934
commit 817f26519d
13 changed files with 568 additions and 30 deletions

View File

@@ -24,32 +24,34 @@ def warehouse_sold_and_balance(quota_distribution: QuotaDistribution):
quota_distribution.been_sold = total_sold
quota_distribution.warehouse_balance = quota_distribution.warehouse_entry - total_sold
if quota_distribution.warehouse_balance >= 0:
# if quota_distribution.warehouse_balance >= 0:
#
# # calculate extra sales & mines total extra sales weight from new inventory entry
# # and set the warehouse balance
# extra_sales = quota_distribution.extra_sales.all()
# total_extra_sales_weight = extra_sales.aggregate(total=Sum('weight'))['total'] or 0
# if quota_distribution.free_sale_balance != 0:
# if quota_distribution.warehouse_balance >= quota_distribution.free_sale_balance:
# quota_distribution.warehouse_balance -= total_extra_sales_weight
# quota_distribution.free_sale_balance = 0
# else:
# quota_distribution.free_sale_balance -= quota_distribution.warehouse_balance
# quota_distribution.warehouse_balance = 0
#
# # calculate pre_sales & mines total pre_sales weight from new inventory entry
# # and set the warehouse balance
# pre_sales = quota_distribution.pre_sales.all()
# total_pre_sales_weight = pre_sales.aggregate(total=Sum('weight'))['total'] or 0
# if total_pre_sales_weight != 0:
# if quota_distribution.warehouse_balance >= quota_distribution.pre_sale_balance:
# quota_distribution.warehouse_balance -= total_pre_sales_weight
# quota_distribution.pre_sale_balance = 0
# else:
# quota_distribution.pre_sale_balance -= quota_distribution.warehouse_balance
# quota_distribution.warehouse_balance = 0
# calculate extra sales & mines total extra sales weight from new inventory entry
# and set the warehouse balance
extra_sales = quota_distribution.extra_sales.all()
total_extra_sales_weight = extra_sales.aggregate(total=Sum('weight'))['total'] or 0
if quota_distribution.free_sale_balance != 0:
if quota_distribution.warehouse_balance >= quota_distribution.free_sale_balance:
quota_distribution.warehouse_balance -= total_extra_sales_weight
quota_distribution.free_sale_balance = 0
else:
quota_distribution.free_sale_balance -= quota_distribution.warehouse_balance
quota_distribution.warehouse_balance = 0
# calculate pre_sales & mines total pre_sales weight from new inventory entry
# and set the warehouse balance
pre_sales = quota_distribution.pre_sales.all()
total_pre_sales_weight = pre_sales.aggregate(total=Sum('weight'))['total'] or 0
if total_pre_sales_weight != 0:
if quota_distribution.warehouse_balance >= quota_distribution.pre_sale_balance:
quota_distribution.warehouse_balance -= total_pre_sales_weight
quota_distribution.pre_sale_balance = 0
else:
quota_distribution.pre_sale_balance -= quota_distribution.warehouse_balance
quota_distribution.warehouse_balance = 0
quota_distribution.save(update_fields=['been_sold', 'warehouse_balance', 'free_sale_balance', 'pre_sale_balance'])
# 'free_sale_balance', 'pre_sale_balance'
quota_distribution.save(update_fields=['been_sold', 'warehouse_balance'])
@receiver(post_init, sender=InventoryEntry)