46 lines
2.1 KiB
Python
46 lines
2.1 KiB
Python
|
|
from django.db.models import Sum, Q
|
||
|
|
|
||
|
|
from LiveStock.models import LiveStockAllocations
|
||
|
|
|
||
|
|
|
||
|
|
def jahad_warehousing(product):
|
||
|
|
allocations = LiveStockAllocations.objects.filter(jahad__isnull=False,product=product, trash=False)
|
||
|
|
# allocations = LiveStockAllocations.objects.filter(jahad=product.jahad, trash=False)
|
||
|
|
input_allocations = allocations.filter(union__isnull=True, cooperative__isnull=True)
|
||
|
|
output_allocations = allocations.filter(Q(union__isnull=False) | Q(cooperative__isnull=False))
|
||
|
|
|
||
|
|
input_weight = input_allocations.aggregate(total=Sum('weight'))[
|
||
|
|
'total'] or 0
|
||
|
|
output_weight = output_allocations.aggregate(total=Sum('weight'))[
|
||
|
|
'total'] or 0
|
||
|
|
product.total_weight = input_weight
|
||
|
|
product.total_receipt_weight = input_weight
|
||
|
|
product.total_allocated_weight = output_weight
|
||
|
|
product.save()
|
||
|
|
|
||
|
|
|
||
|
|
def union_warehousing(product):
|
||
|
|
allocations = LiveStockAllocations.objects.filter(union=product.union,product__parent_product__name=product.parent_product.name, trash=False)
|
||
|
|
input_allocations = allocations.filter(jahad__isnull=False)
|
||
|
|
output_allocations = allocations.filter(cooperative__isnull=False)
|
||
|
|
|
||
|
|
input_weight = input_allocations.aggregate(total=Sum('weight'))[
|
||
|
|
'total'] or 0
|
||
|
|
output_weight = output_allocations.aggregate(total=Sum('weight'))[
|
||
|
|
'total'] or 0
|
||
|
|
product.total_weight = input_weight
|
||
|
|
product.total_receipt_weight = input_weight
|
||
|
|
product.total_allocated_weight = output_weight
|
||
|
|
product.save()
|
||
|
|
|
||
|
|
|
||
|
|
def cooperative_warehousing(product):
|
||
|
|
input_allocations = LiveStockAllocations.objects.filter(cooperative=product.cooperative,product__parent_product__name=product.parent_product.name, trash=False).values_list('id',flat=True)
|
||
|
|
total_receipt_weight = input_allocations.filter(charge=False).aggregate(total=Sum('weight'))[
|
||
|
|
'total'] or 0
|
||
|
|
real_input_weight = input_allocations.filter(charge=True).aggregate(total=Sum('weight'))[
|
||
|
|
'total'] or 0
|
||
|
|
product.total_receipt_weight = total_receipt_weight
|
||
|
|
product.total_weight = real_input_weight
|
||
|
|
product.save()
|