first push
This commit is contained in:
456
panel/CityOperator/helpers.py
Normal file
456
panel/CityOperator/helpers.py
Normal file
@@ -0,0 +1,456 @@
|
||||
from itertools import chain
|
||||
|
||||
from django.db.models import Sum, Q, F
|
||||
|
||||
from deposit_id import wage_counting_type
|
||||
from panel.KillHouse.helpers import get_difference_carcasses_weight
|
||||
from panel.models import KillHouse, ProvinceKillRequest, KillHouseRequest, PoultryHatching, PoultryRequest, WageType, \
|
||||
PercentageOfWageType, SubSectorTransactions, SubSectorPercentageOfWageType, Poultry, KillHouseFreeBarInformation, \
|
||||
KillHouseFreeSaleBarInformation, BarDifferenceRequest
|
||||
|
||||
|
||||
def get_percent_for_city_sub_sector_finance_info():
|
||||
poultries = Poultry.objects.filter(trash=False, city_operator__isnull=False).order_by('id')
|
||||
hatchings = PoultryHatching.objects.filter(poultry__in=poultries, killed_quantity__gt=0, trash=False).order_by(
|
||||
'poultry')
|
||||
|
||||
province_kill_requests = ProvinceKillRequest.objects.filter(trash=False, return_to_province=False,
|
||||
archive_wage=False,
|
||||
state__in=('pending', 'accepted'),
|
||||
temporary_trash=False, temporary_deleted=False,
|
||||
province_request__poultry_request__hatching__in=hatchings)
|
||||
kill_houses = KillHouse.objects.filter(pk__in=province_kill_requests.values_list('killhouse_user', flat=True))
|
||||
|
||||
total_province_live_weight = province_kill_requests.aggregate(total=Sum('total_killed_weight'))[
|
||||
'total'] or 0
|
||||
|
||||
kill_house_free_bar_info = KillHouseFreeBarInformation.objects.filter(kill_house__in=kill_houses,
|
||||
archive_wage=False,
|
||||
calculate_status=True,
|
||||
trash=False)
|
||||
kill_house_free_sale_bar_info = KillHouseFreeSaleBarInformation.objects.filter(
|
||||
kill_house__in=kill_houses,
|
||||
archive_wage=False,
|
||||
calculate_status=True,
|
||||
trash=False)
|
||||
total_out_selling_province_carcasses_weight = \
|
||||
kill_house_free_sale_bar_info.aggregate(total=Sum('real_weight_of_carcasses'))['total'] or 0
|
||||
total_province_carcasses_weight = total_province_live_weight * 0.75
|
||||
total_out_carcasses_buying_for_pure_province_carcasses_weight = \
|
||||
kill_house_free_bar_info.aggregate(total=Sum('weight_of_carcasses'))['total'] or 0
|
||||
out_selling_out_carcasses_buying_difference = total_out_selling_province_carcasses_weight - total_out_carcasses_buying_for_pure_province_carcasses_weight if (
|
||||
total_out_selling_province_carcasses_weight - total_out_carcasses_buying_for_pure_province_carcasses_weight) > 0 else 0
|
||||
total_pure_province_carcasses_weight = total_province_carcasses_weight - out_selling_out_carcasses_buying_difference
|
||||
|
||||
internal_percent = (
|
||||
total_pure_province_carcasses_weight / total_province_carcasses_weight) * 100 if total_province_carcasses_weight > 0 else 0
|
||||
external_percent = 100 - internal_percent
|
||||
|
||||
return {"internal_percent": internal_percent, "external_percent": external_percent}
|
||||
|
||||
|
||||
# def get_city_sub_sector_finance_info(poultries,operator):
|
||||
# total_wage_type = WageType.objects.filter(trash=False)
|
||||
# province_live_wage_amount = total_wage_type.filter(en_name='province-kill-request', trash=False).first().amount
|
||||
# free_sell_carcesses_wage_amount = total_wage_type.filter(en_name='carcasse-sell', trash=False).first().amount
|
||||
# out_poultry_request_amount = total_wage_type.filter(en_name='poultry-sell-out-province', trash=False).first().amount
|
||||
#
|
||||
# percentages_wage_type = PercentageOfWageType.objects.filter(trash=False)
|
||||
# union_province_kill_request_percent = percentages_wage_type.filter(
|
||||
# wage_type__en_name='province-kill-request', share_type__en_name='union').first().percent / 100
|
||||
# union_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell',
|
||||
# share_type__en_name='union').first().percent / 100
|
||||
#
|
||||
# union_out_poultry_request_percent = percentages_wage_type.filter(wage_type__en_name='poultry-sell-out-province',
|
||||
# share_type__en_name='union').first().percent / 100
|
||||
# city_percent_province_kill_request= SubSectorPercentageOfWageType.objects.filter(percentage_of_wage_type__wage_type__en_name='province-kill-request').first().percent / 100
|
||||
# city_percent_carcasse_sell= SubSectorPercentageOfWageType.objects.filter(percentage_of_wage_type__wage_type__en_name='carcasse-sell').first().percent / 100
|
||||
# city_percent_out_poultry_request= SubSectorPercentageOfWageType.objects.filter(percentage_of_wage_type__wage_type__en_name='poultry-sell-out-province').first().percent / 100
|
||||
# union_province_kill_request_final_amount = union_province_kill_request_percent * province_live_wage_amount
|
||||
# union_carcasse_sell_final_amount = union_free_sell_carcasses_percent * free_sell_carcesses_wage_amount
|
||||
# union_out_poultry_request_amount = union_out_poultry_request_percent * out_poultry_request_amount
|
||||
# city_province_kill_request_final_amount = union_province_kill_request_final_amount * city_percent_province_kill_request
|
||||
# city_carcasse_sell_final_amount = union_carcasse_sell_final_amount * city_percent_carcasse_sell
|
||||
# city_out_poultry_request_final_amount = union_out_poultry_request_amount * city_percent_out_poultry_request
|
||||
#
|
||||
#
|
||||
#
|
||||
# hatchings = PoultryHatching.objects.filter(poultry__in=poultries,killed_quantity__gt=0, trash=False).order_by('poultry')
|
||||
#
|
||||
# hatching_quantity = hatchings.aggregate(total=Sum('quantity'))[
|
||||
# 'total'] or 0
|
||||
# poultry_requests = PoultryRequest.objects.filter(trash=False, state_process__in=('pending', 'accepted'),
|
||||
# province_state__in=('pending', 'accepted'), out=True,
|
||||
# out_province_request_cancel=False, temporary_trash=False,
|
||||
# temporary_deleted=False, hatching__in=hatchings)
|
||||
# out_province_poultry_request_quantity = poultry_requests.aggregate(total=Sum('quantity'))[
|
||||
# 'total'] or 0
|
||||
# out_province_poultry_request_weight = poultry_requests.aggregate(total=Sum(F('quantity') * F('Index_weight')))[
|
||||
# 'total'] or 0
|
||||
#
|
||||
#
|
||||
#
|
||||
# province_kill_requests = ProvinceKillRequest.objects.filter(trash=False, return_to_province=False,
|
||||
# archive_wage=False,
|
||||
# state__in=('pending', 'accepted'),
|
||||
# temporary_trash=False, temporary_deleted=False,
|
||||
# # first_car_allocated_quantity=0,
|
||||
# province_request__poultry_request__hatching__in=hatchings)
|
||||
#
|
||||
# total_province_live_weight = province_kill_requests.aggregate(total=Sum('total_killed_weight'))[
|
||||
# 'total'] or 0
|
||||
# total_province_live_quantity = province_kill_requests.aggregate(total=Sum('total_killed_quantity'))[
|
||||
# 'total'] or 0
|
||||
# total_province_carcasses_weight = total_province_live_weight * 0.75
|
||||
# weight_percent = get_percent_for_city_sub_sector_finance_info()
|
||||
# total_pure_internal_province_carcasses_weight = (weight_percent['internal_percent']/100) * total_province_carcasses_weight
|
||||
# total_pure_external_province_carcasses_weight = (weight_percent['external_percent']/100) * total_province_carcasses_weight
|
||||
# total_pure_internal_province_carcasses_amount = total_pure_internal_province_carcasses_weight * city_province_kill_request_final_amount
|
||||
# total_pure_external_province_carcasses_amount = total_pure_external_province_carcasses_weight * city_carcasse_sell_final_amount
|
||||
# out_province_poultry_request_amount = out_province_poultry_request_weight * city_out_poultry_request_final_amount
|
||||
# total_wage_amount = total_pure_internal_province_carcasses_amount + total_pure_external_province_carcasses_amount + out_province_poultry_request_amount
|
||||
# total_killed_quantity = total_province_live_quantity + out_province_poultry_request_quantity
|
||||
# hatching_killing_percent = ((total_killed_quantity / hatching_quantity) if hatching_quantity > 0 else 0) * 100
|
||||
# city_operator_deposit = SubSectorTransactions.objects.filter(trash=False,city_operator=operator)
|
||||
# city_deposit = city_operator_deposit.aggregate(total=Sum('amount'))['total'] or 0
|
||||
# total_remain_wage_amount = total_wage_amount - city_deposit
|
||||
#
|
||||
# result = {
|
||||
# "poultries": len(poultries),
|
||||
# "hatchings": len(hatchings),
|
||||
# "hatchings_quantity": hatching_quantity,
|
||||
# "total_province_kill_requests_quantity": total_province_live_quantity,
|
||||
# "total_province_kill_requests_weight": total_province_live_weight,
|
||||
# "total_province_carcasses_weight": total_province_carcasses_weight,
|
||||
# "total_pure_internal_province_carcasses_weight": total_pure_internal_province_carcasses_weight,
|
||||
# "total_pure_external_province_carcasses_weight": total_pure_external_province_carcasses_weight,
|
||||
# "out_province_poultry_request_quantity": out_province_poultry_request_quantity,
|
||||
# "out_province_poultry_request_weight": out_province_poultry_request_weight,
|
||||
# "total_killed_quantity": total_killed_quantity,
|
||||
# "hatching_killing_percent": hatching_killing_percent,
|
||||
# "out_province_poultry_request_amount": out_province_poultry_request_amount,
|
||||
# "total_pure_internal_province_carcasses_amount": total_pure_internal_province_carcasses_amount,
|
||||
# "total_pure_external_province_carcasses_amount": total_pure_external_province_carcasses_amount,
|
||||
# "total_wage_amount": total_wage_amount,
|
||||
# "number_of_city_deposit": len(city_operator_deposit),
|
||||
# "city_deposit": city_deposit,
|
||||
# "total_remain_wage_amount": total_remain_wage_amount,
|
||||
# }
|
||||
# return result
|
||||
|
||||
|
||||
def get_city_sub_sector_finance_info(poultries, operator,date1,date2):
|
||||
total_wage_type = WageType.objects.filter(trash=False)
|
||||
province_live_wage_amount = total_wage_type.filter(en_name='province-kill-request', trash=False).first().amount
|
||||
free_sell_carcasses_wage_amount = total_wage_type.filter(en_name='carcasse-sell', trash=False).first().amount
|
||||
out_poultry_request_wage_amount = total_wage_type.filter(en_name='poultry-sell-out-province',
|
||||
trash=False).first().amount
|
||||
|
||||
kill_houses = KillHouse.objects.filter(out_province=False, trash=False).order_by('id')
|
||||
hatchings = PoultryHatching.objects.filter(poultry__in=poultries, killed_quantity__gt=0, trash=False).order_by(
|
||||
'poultry')
|
||||
if date1 is not None:
|
||||
total_province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user__in=kill_houses, trash=False,
|
||||
archive_wage=False, return_to_province=False,
|
||||
state__in=('pending', 'accepted'),
|
||||
first_car_allocated_quantity=0,
|
||||
kill_request__recive_date__date__gte=date1,
|
||||
kill_request__recive_date__date__lte=date2).order_by(
|
||||
'id')
|
||||
total_kill_house_requests = KillHouseRequest.objects.filter(
|
||||
Q(Q(killhouse_user__in=kill_houses) & Q(killer__in=kill_houses)) | Q(
|
||||
Q(killhouse_user__in=kill_houses) & Q(killer__isnull=True)) | Q(
|
||||
Q(killhouse_user__in=kill_houses) | Q(killer__in=kill_houses)), archive_wage=False,
|
||||
trash=False, calculate_status=True, kill_request__recive_date__date__gte=date1,
|
||||
kill_request__recive_date__date__lte=date2
|
||||
)
|
||||
poultry_requests = PoultryRequest.objects.filter(trash=False, state_process__in=('pending', 'accepted'),
|
||||
province_state__in=('pending', 'accepted'), out=True,
|
||||
out_province_request_cancel=False, temporary_trash=False,
|
||||
has_wage=True, wage_pay=True,
|
||||
temporary_deleted=False, hatching__in=hatchings,
|
||||
send_date__date__gte=date1,
|
||||
send_date__date__lte=date2)
|
||||
city_operator_deposit = SubSectorTransactions.objects.filter(trash=False, city_operator=operator,
|
||||
date__date__gte=date1, date__date__lte=date2)
|
||||
difference_requests = BarDifferenceRequest.objects.filter(kill_house__in=kill_houses, trash=False,
|
||||
state='accepted', acceptor_date__date__gte=date1,
|
||||
acceptor_date__date__lte=date2)
|
||||
|
||||
else:
|
||||
poultry_requests = PoultryRequest.objects.filter(trash=False, state_process__in=('pending', 'accepted'),
|
||||
province_state__in=('pending', 'accepted'), out=True,
|
||||
out_province_request_cancel=False, temporary_trash=False,
|
||||
has_wage=True, wage_pay=True, poultry__in=poultries,
|
||||
temporary_deleted=False)
|
||||
total_province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user__in=kill_houses, trash=False,
|
||||
archive_wage=False, return_to_province=False,
|
||||
state__in=('pending', 'accepted'),
|
||||
first_car_allocated_quantity=0).order_by('id')
|
||||
total_kill_house_requests = KillHouseRequest.objects.filter(
|
||||
Q(Q(killhouse_user__in=kill_houses) & Q(killer__in=kill_houses)) | Q(
|
||||
Q(killhouse_user__in=kill_houses) & Q(killer__isnull=True)) | Q(
|
||||
Q(killhouse_user__in=kill_houses) | Q(killer__in=kill_houses)), archive_wage=False,
|
||||
trash=False, calculate_status=True
|
||||
)
|
||||
difference_requests = BarDifferenceRequest.objects.filter(kill_house__in=kill_houses, trash=False,
|
||||
state='accepted')
|
||||
city_operator_deposit = SubSectorTransactions.objects.filter(trash=False, city_operator=operator)
|
||||
|
||||
total_province_live_weight = total_province_kill_requests.aggregate(total=Sum('total_killed_weight'))[
|
||||
'total'] or 0
|
||||
total_province_live_quantity = total_province_kill_requests.aggregate(total=Sum('total_killed_quantity'))[
|
||||
'total'] or 0
|
||||
total_province_live_weight += total_kill_house_requests.aggregate(total=Sum('accepted_real_weight'))['total'] or 0
|
||||
total_province_live_quantity += total_kill_house_requests.aggregate(total=Sum('accepted_real_quantity'))[
|
||||
'total'] or 0
|
||||
total_province_live_weight += \
|
||||
difference_requests.aggregate(total=Sum('weight'))['total'] or 0
|
||||
|
||||
total_province_carcasses_weight = total_province_live_weight * 0.75
|
||||
|
||||
total_pure_province_carcasses_weight = total_province_carcasses_weight - get_difference_carcasses_weight(
|
||||
kill_houses,date1,date2)
|
||||
|
||||
different_percent = (total_pure_province_carcasses_weight / total_province_carcasses_weight) if total_province_carcasses_weight > 0 else 0
|
||||
|
||||
province_kill_requests = total_province_kill_requests.filter(
|
||||
province_request__poultry_request__hatching__in=hatchings).order_by('id')
|
||||
kill_house_requests = total_kill_house_requests.filter(
|
||||
province_request__poultry_request__hatching__in=hatchings).order_by('id')
|
||||
|
||||
|
||||
province_kill_requests_kill_houses = KillHouse.objects.filter(pk__in=province_kill_requests.values_list('killhouse_user',flat=True)).order_by('id')
|
||||
|
||||
|
||||
hatching_list1 = hatchings.filter(
|
||||
pk__in=province_kill_requests.values_list('province_request__poultry_request__hatching', flat=True),
|
||||
poultry__in=poultries, killed_quantity__gt=0, trash=False).values_list('id', flat=True)
|
||||
hatching_list2 = hatchings.filter(
|
||||
pk__in=kill_house_requests.values_list('province_request__poultry_request__hatching', flat=True),
|
||||
poultry__in=poultries, killed_quantity__gt=0, trash=False).values_list('id', flat=True)
|
||||
hatching_list3 = hatchings.filter(pk__in=poultry_requests.values_list('hatching', flat=True), poultry__in=poultries,
|
||||
killed_quantity__gt=0, trash=False).values_list('id', flat=True)
|
||||
total_hatching_list = chain(hatching_list1, hatching_list2, hatching_list3)
|
||||
hatchings = hatchings.filter(pk__in=total_hatching_list)
|
||||
|
||||
hatching_quantity = hatchings.aggregate(total=Sum('quantity'))[
|
||||
'total'] or 0
|
||||
poultry_requests = poultry_requests.filter(hatching__id__in=hatching_list3)
|
||||
out_province_poultry_request_quantity = poultry_requests.aggregate(total=Sum('quantity'))[
|
||||
'total'] or 0
|
||||
out_province_poultry_request_weight = poultry_requests.aggregate(total=Sum(F('quantity') * F('Index_weight')))[
|
||||
'total'] or 0
|
||||
|
||||
province_live_weight = province_kill_requests.aggregate(total=Sum('total_killed_weight'))[
|
||||
'total'] or 0
|
||||
province_live_quantity = province_kill_requests.aggregate(total=Sum('total_killed_quantity'))[
|
||||
'total'] or 0
|
||||
province_live_weight += kill_house_requests.aggregate(total=Sum('accepted_real_weight'))['total'] or 0
|
||||
province_live_quantity += kill_house_requests.aggregate(total=Sum('accepted_real_quantity'))['total'] or 0
|
||||
province_live_weight += \
|
||||
difference_requests.filter(kill_house__in=province_kill_requests_kill_houses).aggregate(total=Sum('weight'))['total'] or 0
|
||||
|
||||
province_carcasses_weight = province_live_weight * 0.75
|
||||
|
||||
internal_total_pure_province_carcasses_weight = province_carcasses_weight * different_percent
|
||||
external_total_pure_province_carcasses_weight = province_carcasses_weight - internal_total_pure_province_carcasses_weight
|
||||
|
||||
# total_pure_province_carcasses_price = internal_total_pure_province_carcasses_weight * province_live_wage_amount
|
||||
# total_out_selling_province_carcasses_price = external_total_pure_province_carcasses_weight * free_sell_carcesses_weight_amount
|
||||
percentages_wage_type = PercentageOfWageType.objects.filter(trash=False)
|
||||
union_province_kill_request_percent = percentages_wage_type.filter(
|
||||
wage_type__en_name='province-kill-request', share_type__en_name='union').first().percent / 100
|
||||
union_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell',
|
||||
share_type__en_name='union').first().percent / 100
|
||||
|
||||
union_out_poultry_request_percent = percentages_wage_type.filter(wage_type__en_name='poultry-sell-out-province',
|
||||
share_type__en_name='union').first().percent / 100
|
||||
city_percent_province_kill_request = SubSectorPercentageOfWageType.objects.filter(
|
||||
percentage_of_wage_type__wage_type__en_name='province-kill-request').first().percent / 100
|
||||
city_percent_carcasse_sell = SubSectorPercentageOfWageType.objects.filter(
|
||||
percentage_of_wage_type__wage_type__en_name='carcasse-sell').first().percent / 100
|
||||
city_percent_out_poultry_request = SubSectorPercentageOfWageType.objects.filter(
|
||||
percentage_of_wage_type__wage_type__en_name='poultry-sell-out-province').first().percent / 100
|
||||
union_province_kill_request_final_amount = union_province_kill_request_percent * province_live_wage_amount
|
||||
union_carcasse_sell_final_amount = union_free_sell_carcasses_percent * free_sell_carcasses_wage_amount
|
||||
union_out_poultry_request_amount = union_out_poultry_request_percent * out_poultry_request_wage_amount
|
||||
city_province_kill_request_final_amount = union_province_kill_request_final_amount * city_percent_province_kill_request
|
||||
city_carcasse_sell_final_amount = union_carcasse_sell_final_amount * city_percent_carcasse_sell
|
||||
city_out_poultry_request_final_amount = union_out_poultry_request_amount * city_percent_out_poultry_request
|
||||
|
||||
total_pure_internal_province_carcasses_amount = internal_total_pure_province_carcasses_weight * city_province_kill_request_final_amount
|
||||
total_pure_external_province_carcasses_amount = external_total_pure_province_carcasses_weight * city_carcasse_sell_final_amount
|
||||
out_province_poultry_request_amount = out_province_poultry_request_weight * city_out_poultry_request_final_amount
|
||||
total_wage_amount = total_pure_internal_province_carcasses_amount + total_pure_external_province_carcasses_amount + out_province_poultry_request_amount
|
||||
total_killed_quantity = province_live_quantity + out_province_poultry_request_quantity
|
||||
hatching_killing_percent = ((total_killed_quantity / hatching_quantity) if hatching_quantity > 0 else 0) * 100
|
||||
city_deposit = city_operator_deposit.aggregate(total=Sum('amount'))['total'] or 0
|
||||
total_remain_wage_amount = total_wage_amount - city_deposit
|
||||
|
||||
result = {
|
||||
"poultries": len(poultries),
|
||||
"hatchings": len(hatchings),
|
||||
"hatchings_quantity": hatching_quantity,
|
||||
"total_province_kill_requests_quantity": province_live_quantity,
|
||||
"total_province_kill_requests_weight": province_live_weight,
|
||||
"total_province_carcasses_weight": province_carcasses_weight,
|
||||
"total_pure_internal_province_carcasses_weight": internal_total_pure_province_carcasses_weight,
|
||||
"total_pure_external_province_carcasses_weight": external_total_pure_province_carcasses_weight,
|
||||
"out_province_poultry_request_quantity": out_province_poultry_request_quantity,
|
||||
"out_province_poultry_request_weight": out_province_poultry_request_weight,
|
||||
"total_killed_quantity": total_killed_quantity,
|
||||
"hatching_killing_percent": hatching_killing_percent,
|
||||
"out_province_poultry_request_amount": out_province_poultry_request_amount,
|
||||
"total_pure_internal_province_carcasses_amount": total_pure_internal_province_carcasses_amount,
|
||||
"total_pure_external_province_carcasses_amount": total_pure_external_province_carcasses_amount,
|
||||
"total_wage_amount": total_wage_amount,
|
||||
"number_of_city_deposit": len(city_operator_deposit),
|
||||
"city_deposit": city_deposit,
|
||||
"total_remain_wage_amount": total_remain_wage_amount,
|
||||
}
|
||||
return result
|
||||
|
||||
|
||||
def get_city_sub_sector_finance_info_with_date(poultries, operator,date1,date2):
|
||||
total_wage_type = WageType.objects.filter(trash=False)
|
||||
province_live_wage_amount = total_wage_type.filter(en_name='province-kill-request', trash=False).first().amount
|
||||
free_sell_carcasses_wage_amount = total_wage_type.filter(en_name='carcasse-sell', trash=False).first().amount
|
||||
out_poultry_request_wage_amount = total_wage_type.filter(en_name='poultry-sell-out-province',
|
||||
trash=False).first().amount
|
||||
|
||||
kill_houses = KillHouse.objects.filter(out_province=False, trash=False).order_by('id')
|
||||
total_province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user__in=kill_houses, trash=False,
|
||||
archive_wage=False, return_to_province=False,
|
||||
state__in=('pending', 'accepted'),
|
||||
first_car_allocated_quantity=0,kill_request__recive_date__date__gte=date1,
|
||||
kill_request__recive_date__date__lte=date2).order_by('id')
|
||||
total_kill_house_requests = KillHouseRequest.objects.filter(
|
||||
Q(Q(killhouse_user__in=kill_houses) & Q(killer__in=kill_houses)) | Q(
|
||||
Q(killhouse_user__in=kill_houses) & Q(killer__isnull=True)) | Q(
|
||||
Q(killhouse_user__in=kill_houses) | Q(killer__in=kill_houses)), archive_wage=False,
|
||||
trash=False, calculate_status=True,kill_request__recive_date__date__gte=date1,
|
||||
kill_request__recive_date__date__lte=date2
|
||||
)
|
||||
|
||||
total_province_live_weight = total_province_kill_requests.aggregate(total=Sum('total_killed_weight'))[
|
||||
'total'] or 0
|
||||
total_province_live_quantity = total_province_kill_requests.aggregate(total=Sum('total_killed_quantity'))[
|
||||
'total'] or 0
|
||||
total_province_live_weight += total_kill_house_requests.aggregate(total=Sum('accepted_real_weight'))['total'] or 0
|
||||
total_province_live_quantity += total_kill_house_requests.aggregate(total=Sum('accepted_real_quantity'))[
|
||||
'total'] or 0
|
||||
difference_requests = BarDifferenceRequest.objects.filter(kill_house__in=kill_houses, trash=False, state='accepted',acceptor_date__date__gte=date1,acceptor_date__date__lte=date2)
|
||||
total_province_live_weight += \
|
||||
difference_requests.aggregate(total=Sum('weight'))['total'] or 0
|
||||
|
||||
total_province_carcasses_weight = total_province_live_weight * 0.75
|
||||
|
||||
total_pure_province_carcasses_weight = total_province_carcasses_weight - get_difference_carcasses_weight(
|
||||
kill_houses)
|
||||
|
||||
different_percent = total_pure_province_carcasses_weight / total_province_carcasses_weight
|
||||
hatchings = PoultryHatching.objects.filter(poultry__in=poultries, killed_quantity__gt=0, trash=False).order_by(
|
||||
'poultry')
|
||||
province_kill_requests = total_province_kill_requests.filter(
|
||||
province_request__poultry_request__hatching__in=hatchings).order_by('id')
|
||||
kill_house_requests = total_kill_house_requests.filter(
|
||||
province_request__poultry_request__hatching__in=hatchings).order_by('id')
|
||||
|
||||
poultry_requests = PoultryRequest.objects.filter(trash=False, state_process__in=('pending', 'accepted'),
|
||||
province_state__in=('pending', 'accepted'), out=True,
|
||||
out_province_request_cancel=False, temporary_trash=False,
|
||||
has_wage=True, wage_pay=True,
|
||||
temporary_deleted=False, hatching__in=hatchings,send_date__date__gte=date1,
|
||||
send_date__date__lte=date2)
|
||||
province_kill_requests_kill_houses = KillHouse.objects.filter(pk__in=province_kill_requests.values_list('killhouse_user',flat=True)).order_by('id')
|
||||
|
||||
|
||||
hatching_list1 = hatchings.filter(
|
||||
pk__in=province_kill_requests.values_list('province_request__poultry_request__hatching', flat=True),
|
||||
poultry__in=poultries, killed_quantity__gt=0, trash=False).values_list('id', flat=True)
|
||||
hatching_list2 = hatchings.filter(
|
||||
pk__in=kill_house_requests.values_list('province_request__poultry_request__hatching', flat=True),
|
||||
poultry__in=poultries, killed_quantity__gt=0, trash=False).values_list('id', flat=True)
|
||||
hatching_list3 = hatchings.filter(pk__in=poultry_requests.values_list('hatching', flat=True), poultry__in=poultries,
|
||||
killed_quantity__gt=0, trash=False).values_list('id', flat=True)
|
||||
total_hatching_list = chain(hatching_list1, hatching_list2, hatching_list3)
|
||||
hatchings = hatchings.filter(pk__in=total_hatching_list)
|
||||
|
||||
hatching_quantity = hatchings.aggregate(total=Sum('quantity'))[
|
||||
'total'] or 0
|
||||
poultry_requests = poultry_requests.filter(hatching__id__in=hatching_list3)
|
||||
out_province_poultry_request_quantity = poultry_requests.aggregate(total=Sum('quantity'))[
|
||||
'total'] or 0
|
||||
out_province_poultry_request_weight = poultry_requests.aggregate(total=Sum(F('quantity') * F('Index_weight')))[
|
||||
'total'] or 0
|
||||
|
||||
province_live_weight = province_kill_requests.aggregate(total=Sum('total_killed_weight'))[
|
||||
'total'] or 0
|
||||
province_live_quantity = province_kill_requests.aggregate(total=Sum('total_killed_quantity'))[
|
||||
'total'] or 0
|
||||
province_live_weight += kill_house_requests.aggregate(total=Sum('accepted_real_weight'))['total'] or 0
|
||||
province_live_quantity += kill_house_requests.aggregate(total=Sum('accepted_real_quantity'))['total'] or 0
|
||||
province_live_weight += \
|
||||
difference_requests.filter(kill_house__in=province_kill_requests_kill_houses).aggregate(total=Sum('weight'))['total'] or 0
|
||||
|
||||
province_carcasses_weight = province_live_weight * 0.75
|
||||
|
||||
internal_total_pure_province_carcasses_weight = province_carcasses_weight * different_percent
|
||||
external_total_pure_province_carcasses_weight = province_carcasses_weight - internal_total_pure_province_carcasses_weight
|
||||
|
||||
# total_pure_province_carcasses_price = internal_total_pure_province_carcasses_weight * province_live_wage_amount
|
||||
# total_out_selling_province_carcasses_price = external_total_pure_province_carcasses_weight * free_sell_carcesses_weight_amount
|
||||
percentages_wage_type = PercentageOfWageType.objects.filter(trash=False)
|
||||
union_province_kill_request_percent = percentages_wage_type.filter(
|
||||
wage_type__en_name='province-kill-request', share_type__en_name='union').first().percent / 100
|
||||
union_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell',
|
||||
share_type__en_name='union').first().percent / 100
|
||||
|
||||
union_out_poultry_request_percent = percentages_wage_type.filter(wage_type__en_name='poultry-sell-out-province',
|
||||
share_type__en_name='union').first().percent / 100
|
||||
city_percent_province_kill_request = SubSectorPercentageOfWageType.objects.filter(
|
||||
percentage_of_wage_type__wage_type__en_name='province-kill-request').first().percent / 100
|
||||
city_percent_carcasse_sell = SubSectorPercentageOfWageType.objects.filter(
|
||||
percentage_of_wage_type__wage_type__en_name='carcasse-sell').first().percent / 100
|
||||
city_percent_out_poultry_request = SubSectorPercentageOfWageType.objects.filter(
|
||||
percentage_of_wage_type__wage_type__en_name='poultry-sell-out-province').first().percent / 100
|
||||
union_province_kill_request_final_amount = union_province_kill_request_percent * province_live_wage_amount
|
||||
union_carcasse_sell_final_amount = union_free_sell_carcasses_percent * free_sell_carcasses_wage_amount
|
||||
union_out_poultry_request_amount = union_out_poultry_request_percent * out_poultry_request_wage_amount
|
||||
city_province_kill_request_final_amount = union_province_kill_request_final_amount * city_percent_province_kill_request
|
||||
city_carcasse_sell_final_amount = union_carcasse_sell_final_amount * city_percent_carcasse_sell
|
||||
city_out_poultry_request_final_amount = union_out_poultry_request_amount * city_percent_out_poultry_request
|
||||
|
||||
total_pure_internal_province_carcasses_amount = internal_total_pure_province_carcasses_weight * city_province_kill_request_final_amount
|
||||
total_pure_external_province_carcasses_amount = external_total_pure_province_carcasses_weight * city_carcasse_sell_final_amount
|
||||
out_province_poultry_request_amount = out_province_poultry_request_weight * city_out_poultry_request_final_amount
|
||||
total_wage_amount = total_pure_internal_province_carcasses_amount + total_pure_external_province_carcasses_amount + out_province_poultry_request_amount
|
||||
total_killed_quantity = province_live_quantity + out_province_poultry_request_quantity
|
||||
hatching_killing_percent = ((total_killed_quantity / hatching_quantity) if hatching_quantity > 0 else 0) * 100
|
||||
city_operator_deposit = SubSectorTransactions.objects.filter(trash=False, city_operator=operator,date__date__gte=date1,date__date__lte=date2)
|
||||
city_deposit = city_operator_deposit.aggregate(total=Sum('amount'))['total'] or 0
|
||||
total_remain_wage_amount = total_wage_amount - city_deposit
|
||||
|
||||
result = {
|
||||
"poultries": len(poultries),
|
||||
"hatchings": len(hatchings),
|
||||
"hatchings_quantity": hatching_quantity,
|
||||
"total_province_kill_requests_quantity": province_live_quantity,
|
||||
"total_province_kill_requests_weight": province_live_weight,
|
||||
"total_province_carcasses_weight": province_carcasses_weight,
|
||||
"total_pure_internal_province_carcasses_weight": internal_total_pure_province_carcasses_weight,
|
||||
"total_pure_external_province_carcasses_weight": external_total_pure_province_carcasses_weight,
|
||||
"out_province_poultry_request_quantity": out_province_poultry_request_quantity,
|
||||
"out_province_poultry_request_weight": out_province_poultry_request_weight,
|
||||
"total_killed_quantity": total_killed_quantity,
|
||||
"hatching_killing_percent": hatching_killing_percent,
|
||||
"out_province_poultry_request_amount": out_province_poultry_request_amount,
|
||||
"total_pure_internal_province_carcasses_amount": total_pure_internal_province_carcasses_amount,
|
||||
"total_pure_external_province_carcasses_amount": total_pure_external_province_carcasses_amount,
|
||||
"total_wage_amount": total_wage_amount,
|
||||
"number_of_city_deposit": len(city_operator_deposit),
|
||||
"city_deposit": city_deposit,
|
||||
"total_remain_wage_amount": total_remain_wage_amount,
|
||||
}
|
||||
return result
|
||||
Reference in New Issue
Block a user