diff --git a/Dockerfile b/Dockerfile index e972ad9..f7619be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ # Dockerfile #FROM python:3.9-slim-bookworm #FROM ghcr.io/seniorkian/python39-rasadyar:1.0.2 -FROM registry-ea28d41763-mnpc.apps.ir-central1.arvancaas.ir/python39-rasadyar:1.0.2 +#FROM registry-ea28d41763-mnpc.apps.ir-central1.arvancaas.ir/python39-rasadyar:1.0.2 +FROM registry.hamdocker.ir/seniorkian/python39-rasadyar:1.0.0 ENV TZ="Asia/Tehran" #RUN ls /usr/share/zoneinfo && \ # cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && \ diff --git a/panel/KillHouse/helpers.py b/panel/KillHouse/helpers.py index 9c9898d..f5061ad 100644 --- a/panel/KillHouse/helpers.py +++ b/panel/KillHouse/helpers.py @@ -301,6 +301,243 @@ def get_new_wage_for_free_buying(kill_house_free_sale_bar_info): } +# def get_finance_info(kill_house, date1=None, date2=None): +# before_total_out_live_buying_province_carcasses_weight = 0 +# after_total_out_live_buying_province_carcasses_weight = 0 +# before_new_out_selling = 0 +# after_new_out_selling = 0 +# extra_company_amount = 0 +# total_wage_type = WageType.objects.filter(trash=False) +# province_live_wage_type = total_wage_type.filter(en_name='province-kill-request', trash=False).first() +# free_buying_live_weight_wage_type = total_wage_type.filter(en_name='live-buy', trash=False).first() +# free_buying_carcesses_weight_wage_type = total_wage_type.filter(en_name='carcasse-buy', trash=False).first() +# free_sell_carcesses_weight_wage_type = total_wage_type.filter(en_name='carcasse-sell', trash=False).first() +# province_live_wage_type_amount = province_live_wage_type.amount if province_live_wage_type.status == True else 0 +# free_buying_live_weight_wage_type_amount = free_buying_live_weight_wage_type.amount if free_buying_live_weight_wage_type.status == True else 0 +# free_buying_carcesses_weight_wage_type_amount = free_buying_carcesses_weight_wage_type.amount if free_buying_carcesses_weight_wage_type.status == True else 0 +# free_sell_carcesses_weight_wage_type_amount = free_sell_carcesses_weight_wage_type.amount if free_sell_carcesses_weight_wage_type.status == True else 0 +# +# if date1: +# province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house, trash=False, +# archive_wage=False, return_to_province=False, +# kill_request__recive_date__date__gte=date1, +# kill_request__recive_date__date__lte=date2, +# state__in=('pending', 'accepted'), +# first_car_allocated_quantity=0).order_by('id') +# +# return_province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house, trash=True, +# return_trash=True, +# archive_wage=False, return_to_province=False, +# kill_request__recive_date__date__gte=date1, +# kill_request__recive_date__date__lte=date2, +# state__in=('pending', 'accepted'), +# first_car_allocated_quantity=0).order_by( +# 'id') +# kill_house_requests = KillHouseRequest.objects.filter( +# Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( +# Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( +# Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, +# kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, +# trash=False, calculate_status=True +# ) +# +# return_kill_house_requests = KillHouseRequest.objects.filter( +# Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( +# Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( +# Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, +# kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, +# trash=True, return_trash=True, calculate_status=True +# ) +# kill_house_free_bar_info = KillHouseFreeBarInformation.objects.filter( +# Q(kill_house=kill_house) | Q(exclusive_killer=kill_house), +# archive_wage=False, +# calculate_status=True, date__date__gte=date1, date__date__lte=date2, +# trash=False) +# kill_house_free_sale_bar_info = KillHouseFreeSaleBarInformation.objects.filter( +# kill_house=kill_house, +# archive_wage=False, +# calculate_status=True, date__date__gte=date1, date__date__lte=date2, +# trash=False) +# slaughter_transactions = InternalTransaction.objects.filter( +# kill_house=kill_house, status='completed', date__date__gte=date1, date__date__lte=date2, +# trash=False) +# difference_requests = BarDifferenceRequest.objects.filter(kill_house=kill_house, trash=False, state='accepted', +# create_date__date__gte=date1, +# create_date__date__lte=date2) +# else: +# +# province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house, trash=False, +# archive_wage=False, return_to_province=False, +# state__in=('pending', 'accepted'), +# first_car_allocated_quantity=0).order_by('id') +# +# return_province_kill_requests = ProvinceKillRequest.objects.filter(killhouse_user=kill_house, trash=True, +# return_trash=True, +# archive_wage=False, return_to_province=False, +# state__in=('pending', 'accepted'), +# first_car_allocated_quantity=0).order_by( +# 'id') +# kill_house_requests = KillHouseRequest.objects.filter( +# Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( +# Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( +# Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, +# trash=False, calculate_status=True +# ) +# return_kill_house_requests = KillHouseRequest.objects.filter( +# Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( +# Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( +# Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, +# trash=True, return_trash=True, calculate_status=True +# ) +# kill_house_free_bar_info = KillHouseFreeBarInformation.objects.filter( +# Q(kill_house=kill_house) | Q(exclusive_killer=kill_house), +# archive_wage=False, +# calculate_status=True, +# trash=False) +# kill_house_free_sale_bar_info = KillHouseFreeSaleBarInformation.objects.filter( +# kill_house=kill_house, +# archive_wage=False, +# calculate_status=True, +# trash=False) +# slaughter_transactions = InternalTransaction.objects.filter( +# kill_house=kill_house, status='completed', +# trash=False) +# difference_requests = BarDifferenceRequest.objects.filter(kill_house=kill_house, trash=False, state='accepted') +# +# total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[ +# 'total'] or 0 +# total_province_live_weight = province_kill_requests.aggregate(total=Sum('total_killed_weight'))['total'] or 0 +# total_province_live_weight += kill_house_requests.aggregate(total=Sum('accepted_real_weight'))['total'] or 0 +# total_province_live_weight += \ +# difference_requests.aggregate(total=Sum('weight'))['total'] or 0 +# difference_requests_weight = \ +# difference_requests.aggregate(total=Sum('weight'))['total'] or 0 +# return_total_province_live_weight = return_province_kill_requests.aggregate(total=Sum('total_killed_weight'))[ +# 'total'] or 0 +# return_total_province_live_weight += return_kill_house_requests.aggregate(total=Sum('accepted_real_weight'))[ +# 'total'] or 0 +# +# final_date = '2025-05-28' +# total_out_selling_province_carcasses_weight = \ +# kill_house_free_sale_bar_info.filter(date__date__lte=final_date).aggregate( +# total=Sum('real_weight_of_carcasses'))['total'] or 0 +# new_total_out_selling_province_carcasses_weight = \ +# kill_house_free_sale_bar_info.filter(date__date__gt=final_date, +# quarantine_weight_of_carcasses__gt=0).aggregate( +# total_weight=Sum( +# Case( +# When(real_weight_of_carcasses__lt=F('quarantine_weight_of_carcasses'), +# then=F('real_weight_of_carcasses')), +# default=F('quarantine_weight_of_carcasses'), +# output_field=FloatField() +# ) +# ) +# ) +# new_out_selling = new_total_out_selling_province_carcasses_weight['total_weight'] or 0 +# +# total_out_selling_province_carcasses_weight += new_out_selling +# +# if wage_counting_type == 'live': +# total_province_carcasses_weight = total_province_live_weight +# total_pure_province_carcasses_weight = total_province_carcasses_weight +# else: +# return_total_province_live_weight = int(return_total_province_live_weight * 0.75) +# total_province_carcasses_weight = total_province_live_weight * 0.75 +# difference_requests_weight = difference_requests_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 +# total_out_live_buying_province_carcasses_weight = \ +# kill_house_free_bar_info.filter(buy_type='live').aggregate(total=Sum('live_weight'))['total'] or 0 +# real_total_out_live_buying_province_carcasses_weight = total_out_live_buying_province_carcasses_weight +# if new_out_selling_count_wage: +# if out_selling_ignore: +# before_total_out_live_buying_province_carcasses_weight = \ +# kill_house_free_bar_info.filter(create_date__date__lt=new_out_selling_count_wage_date, +# buy_type='live').aggregate(total=Sum('live_weight'))['total'] or 0 +# after_total_out_live_buying_province_carcasses_weight = \ +# kill_house_free_bar_info.filter(create_date__date__gte=new_out_selling_count_wage_date, +# buy_type='live').aggregate(total=Sum('live_weight'))['total'] or 0 +# get_new_wage = get_new_wage_for_free_buying(kill_house_free_sale_bar_info) +# +# before_new_out_selling = get_new_wage['before_new_out_selling'] +# after_new_out_selling = get_new_wage['after_new_out_selling'] +# max_amount = before_total_out_live_buying_province_carcasses_weight * 0.80 +# if max_amount <= before_new_out_selling: +# before_total_out_live_buying_province_carcasses_weight -= max_amount +# else: +# before_total_out_live_buying_province_carcasses_weight -= before_new_out_selling +# +# if after_total_out_live_buying_province_carcasses_weight > after_new_out_selling: +# extra_company_amount = int(after_new_out_selling * extra_company_amount) +# after_total_out_live_buying_province_carcasses_weight -= after_new_out_selling +# +# else: +# extra_company_amount = int(after_total_out_live_buying_province_carcasses_weight * extra_company_amount) +# +# after_total_out_live_buying_province_carcasses_weight = 0 +# +# total_out_live_buying_province_carcasses_weight = before_total_out_live_buying_province_carcasses_weight + after_total_out_live_buying_province_carcasses_weight +# +# else: +# if out_selling_ignore: +# max_amount = total_out_live_buying_province_carcasses_weight * 0.80 +# if max_amount <= new_out_selling: +# total_out_live_buying_province_carcasses_weight -= max_amount +# else: +# total_out_live_buying_province_carcasses_weight -= new_out_selling +# +# # else: +# # total_out_live_buying_province_carcasses_weight -= total_out_selling_province_quarantine_carcasses_weight +# total_out_carcasses_buying_province_carcasses_weight = \ +# kill_house_free_bar_info.filter(buy_type='carcass').aggregate(total=Sum('weight_of_carcasses'))['total'] or 0 +# +# total_pure_province_carcasses_price = total_pure_province_carcasses_weight * province_live_wage_type_amount +# difference_requests_price = difference_requests_weight * province_live_wage_type_amount +# total_return_pure_province_carcasses_price = return_total_province_live_weight * province_live_wage_type_amount +# total_out_selling_province_carcasses_price = total_out_selling_province_carcasses_weight * free_sell_carcesses_weight_wage_type_amount +# if new_out_selling_count_wage: +# total_out_live_buying_province_carcasses_price = int( +# (before_total_out_live_buying_province_carcasses_weight * before_out_buying_count_wage_amount) + ( +# after_total_out_live_buying_province_carcasses_weight * free_buying_live_weight_wage_type_amount)) +# else: +# total_out_live_buying_province_carcasses_price = total_out_live_buying_province_carcasses_weight * free_buying_live_weight_wage_type_amount +# +# total_out_carcasses_buying_province_carcasses_price = total_out_carcasses_buying_province_carcasses_weight * free_buying_carcesses_weight_wage_type_amount +# total_price = total_pure_province_carcasses_price + total_out_selling_province_carcasses_price + total_out_live_buying_province_carcasses_price + total_out_carcasses_buying_province_carcasses_price + extra_company_amount + total_return_pure_province_carcasses_price +# +# return { +# "total_province_live_weight": total_province_live_weight, +# "total_province_carcasses_weight": total_province_carcasses_weight, +# "total_out_selling_province_carcasses_weight": total_out_selling_province_carcasses_weight, +# "total_pure_province_carcasses_weight": total_pure_province_carcasses_weight, +# "total_pure_province_carcasses_price": total_pure_province_carcasses_price, +# "total_out_selling_province_carcasses_price": total_out_selling_province_carcasses_price, +# "total_out_carcasses_buying_province_carcasses_weight": total_out_carcasses_buying_province_carcasses_weight, +# "total_out_carcasses_buying_province_carcasses_price": total_out_carcasses_buying_province_carcasses_price, +# "total_out_live_buying_province_carcasses_weight": real_total_out_live_buying_province_carcasses_weight, +# "total_out_live_buying_province_carcasses_price": total_out_live_buying_province_carcasses_price, +# "total_paid_wage": total_paid_wage, +# "total_price": total_price, +# "province_live_wage_amount": province_live_wage_type_amount, +# "free_buying_live_weight_amount": free_buying_live_weight_wage_type_amount, +# "free_buying_carcesses_weight_amount": free_buying_carcesses_weight_wage_type_amount, +# "free_sell_carcesses_weight_amount": free_sell_carcesses_weight_wage_type_amount, +# "extra_company_amount": extra_company_amount, +# "before_total_out_live_buying_province_carcasses_weight": before_total_out_live_buying_province_carcasses_weight, +# "after_total_out_live_buying_province_carcasses_weight": after_total_out_live_buying_province_carcasses_weight, +# "before_new_out_selling": before_new_out_selling, +# "after_new_out_selling": after_new_out_selling, +# "return_total_province_live_weight": return_total_province_live_weight, +# "total_return_pure_province_carcasses_price": total_return_pure_province_carcasses_price, +# "difference_requests_weight": difference_requests_weight, +# "difference_requests_price": difference_requests_price, +# +# } + + def get_finance_info(kill_house, date1=None, date2=None): before_total_out_live_buying_province_carcasses_weight = 0 after_total_out_live_buying_province_carcasses_weight = 0 @@ -333,21 +570,34 @@ def get_finance_info(kill_house, date1=None, date2=None): state__in=('pending', 'accepted'), first_car_allocated_quantity=0).order_by( 'id') - kill_house_requests = KillHouseRequest.objects.filter( - Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( - Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( - Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, - kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, - trash=False, calculate_status=True - ) + if kill_house.killer and kill_house.type == 'public': + kill_house_requests = KillHouseRequest.objects.filter( + killhouse_user=kill_house, archive_wage=False, + kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, + trash=False, calculate_status=True + ) - return_kill_house_requests = KillHouseRequest.objects.filter( - Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( - Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( - Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, - kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, - trash=True, return_trash=True, calculate_status=True - ) + return_kill_house_requests = KillHouseRequest.objects.filter( + killhouse_user=kill_house, archive_wage=False, + kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, + trash=True, return_trash=True, calculate_status=True + ) + else: + kill_house_requests = KillHouseRequest.objects.filter( + Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( + Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( + Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, + kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, + trash=False, calculate_status=True + ) + + return_kill_house_requests = KillHouseRequest.objects.filter( + Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( + Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( + Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, + kill_request__recive_date__date__gte=date1, kill_request__recive_date__date__lte=date2, + trash=True, return_trash=True, calculate_status=True + ) kill_house_free_bar_info = KillHouseFreeBarInformation.objects.filter( Q(kill_house=kill_house) | Q(exclusive_killer=kill_house), archive_wage=False, @@ -377,18 +627,30 @@ def get_finance_info(kill_house, date1=None, date2=None): state__in=('pending', 'accepted'), first_car_allocated_quantity=0).order_by( 'id') - kill_house_requests = KillHouseRequest.objects.filter( - Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( - Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( - Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, - trash=False, calculate_status=True - ) - return_kill_house_requests = KillHouseRequest.objects.filter( - Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( - Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( - Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, - trash=True, return_trash=True, calculate_status=True - ) + + if kill_house.killer and kill_house.type == 'public': + + kill_house_requests = KillHouseRequest.objects.filter( + killhouse_user=kill_house, archive_wage=False, + trash=False, calculate_status=True + ) + return_kill_house_requests = KillHouseRequest.objects.filter( + killhouse_user=kill_house, archive_wage=False, + trash=True, return_trash=True, calculate_status=True + ) + else: + kill_house_requests = KillHouseRequest.objects.filter( + Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( + Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( + Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, + trash=False, calculate_status=True + ) + return_kill_house_requests = KillHouseRequest.objects.filter( + Q(Q(killhouse_user=kill_house) & Q(killer=kill_house)) | Q( + Q(killhouse_user=kill_house) & Q(killer__isnull=True)) | Q( + Q(killhouse_user=kill_house) | Q(killer=kill_house)), archive_wage=False, + trash=True, return_trash=True, calculate_status=True + ) kill_house_free_bar_info = KillHouseFreeBarInformation.objects.filter( Q(kill_house=kill_house) | Q(exclusive_killer=kill_house), archive_wage=False, diff --git a/panel/KillHouse/serializers.py b/panel/KillHouse/serializers.py index e3b9033..40e077b 100644 --- a/panel/KillHouse/serializers.py +++ b/panel/KillHouse/serializers.py @@ -1346,6 +1346,24 @@ class KillHouseforPurchaseRequestSerializer(serializers.ModelSerializer): "total_limitation": total_limitation, } + # def get_wage_info(self, obj): + # total_unpaid_wage = 0 + # total_paid_wage = 0 + # kill_house_kill_requests_wage = 0 + # real_free_sale_wage = 0 + # # role = self.context.get('request').GET['role'] + # total_unpaid_wage = get_finance_info(obj)['total_price'] + # slaughter_transactions = InternalTransaction.objects.filter(Q(kill_house=obj) | Q(parent_kill_house=obj), + # status='completed', + # trash=False) + # + # total_paid_wage += slaughter_transactions.aggregate(total=Sum('amount'))[ + # 'total'] or 0 + # + # return { + # "user_token": 'k' + obj.kill_house_operator.user.user_gate_way_id, + # "total_amount": total_unpaid_wage - (total_paid_wage + obj.off) + # } def get_wage_info(self, obj): total_unpaid_wage = 0 total_paid_wage = 0 @@ -1353,9 +1371,14 @@ class KillHouseforPurchaseRequestSerializer(serializers.ModelSerializer): real_free_sale_wage = 0 # role = self.context.get('request').GET['role'] total_unpaid_wage = get_finance_info(obj)['total_price'] - slaughter_transactions = InternalTransaction.objects.filter(Q(kill_house=obj) | Q(parent_kill_house=obj), - status='completed', - trash=False) + if obj.killer and obj.type == 'public': + slaughter_transactions = InternalTransaction.objects.filter(kill_house=obj,parent_kill_house=obj, + status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter(Q(kill_house=obj) | Q(parent_kill_house=obj), + status='completed', + trash=False) total_paid_wage += slaughter_transactions.aggregate(total=Sum('amount'))[ 'total'] or 0 @@ -1531,6 +1554,55 @@ class KillHouseForNewWageInormationSerializer(serializers.ModelSerializer): model = KillHouse fields = ['key', 'name', 'wage_info', 'shares'] + # def get_wage_info(self, obj): + # date1 = None + # date2 = None + # if self.context.get('request').GET.get('date1'): + # date1 = datetime.datetime.strptime(str(self.context.get('request').GET['date1']), + # '%Y-%m-%d').date() + # date2 = datetime.datetime.strptime(str(self.context.get('request').GET['date2']), + # '%Y-%m-%d').date() + # total_paid_wage = 0 + # if date1: + # # finance_info = get_kill_house_finance_info(obj,date1,date2) + # finance_info = get_finance_info(obj, date1, date2) + # slaughter_transactions = InternalTransaction.objects.filter( + # Q(kill_house=obj) | Q(parent_kill_house=obj), status='completed', date__date__gte=date1, + # date__date__lte=date2, + # trash=False) + # else: + # # finance_info = get_kill_house_finance_info(obj) + # finance_info = get_finance_info(obj) + # slaughter_transactions = InternalTransaction.objects.filter( + # Q(kill_house=obj) | Q(parent_kill_house=obj), status='completed', + # trash=False) + # + # total_paid_wage += slaughter_transactions.aggregate(total=Sum('amount'))[ + # 'total'] or 0 + # + # return { + # "wage_counting_type": wage_counting_type, + # "total_wage": finance_info['total_price'], + # "total_paid_wage": total_paid_wage, + # "off": obj.off, + # "total_unpaid_wage": finance_info['total_price'] - (total_paid_wage + obj.off), + # "province_kill_requests_total_wage": finance_info['total_pure_province_carcasses_price'], + # "province_kill_requests_total_weight": finance_info['total_pure_province_carcasses_weight'], + # "free_bars_live_total_wage": finance_info['total_out_live_buying_province_carcasses_price'], + # "free_bars_live_total_weight": finance_info['total_out_live_buying_province_carcasses_weight'], + # "free_bars_carcases_total_wage": finance_info['total_out_carcasses_buying_province_carcasses_price'], + # "free_bars_carcases_total_weight": finance_info['total_out_carcasses_buying_province_carcasses_weight'], + # "free_bars_out_province_carcases_total_wage": finance_info['total_out_selling_province_carcasses_price'], + # "free_bars_out_province_carcases_total_weight": finance_info['total_out_selling_province_carcasses_weight'], + # "total_province_live_weight": finance_info['total_province_live_weight'], + # "total_province_carcasses_weight": finance_info['total_province_carcasses_weight'], + # "province_live_wage_amount": finance_info['province_live_wage_amount'], + # "free_buying_live_weight_amount": finance_info['free_buying_live_weight_amount'], + # "free_buying_carcesses_weight_amount": finance_info['free_buying_carcesses_weight_amount'], + # "free_sell_carcesses_weight_amount": finance_info['free_sell_carcesses_weight_amount'], + # "return_total_province_live_weight": finance_info['return_total_province_live_weight'], + # "total_return_pure_province_carcasses_price": finance_info['total_return_pure_province_carcasses_price'], + # } def get_wage_info(self, obj): date1 = None date2 = None @@ -1543,16 +1615,28 @@ class KillHouseForNewWageInormationSerializer(serializers.ModelSerializer): if date1: # finance_info = get_kill_house_finance_info(obj,date1,date2) finance_info = get_finance_info(obj, date1, date2) - slaughter_transactions = InternalTransaction.objects.filter( - Q(kill_house=obj) | Q(parent_kill_house=obj), status='completed', date__date__gte=date1, - date__date__lte=date2, - trash=False) + if obj.killer and obj.type == 'public': + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=obj,parent_kill_house=obj, status='completed', date__date__gte=date1, + date__date__lte=date2, + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=obj) | Q(parent_kill_house=obj), status='completed', date__date__gte=date1, + date__date__lte=date2, + trash=False) else: # finance_info = get_kill_house_finance_info(obj) finance_info = get_finance_info(obj) - slaughter_transactions = InternalTransaction.objects.filter( - Q(kill_house=obj) | Q(parent_kill_house=obj), status='completed', - trash=False) + if obj.killer and obj.type == 'public': + + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=obj,parent_kill_house=obj, status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=obj) | Q(parent_kill_house=obj), status='completed', + trash=False) total_paid_wage += slaughter_transactions.aggregate(total=Sum('amount'))[ 'total'] or 0 @@ -1581,6 +1665,182 @@ class KillHouseForNewWageInormationSerializer(serializers.ModelSerializer): "total_return_pure_province_carcasses_price": finance_info['total_return_pure_province_carcasses_price'], } + # def get_shares(self, kill_house): + # date1 = None + # date2 = None + # before_total_out_live_buying_province_carcasses_price = 0 + # total_wage_type = WageType.objects.filter(trash=False) + # free_buying_live_weight_wage_type = total_wage_type.filter(en_name='live-buy', trash=False).first() + # free_buying_live_weight_wage_type_amount = free_buying_live_weight_wage_type.amount if free_buying_live_weight_wage_type.status == True else 0 + # + # if self.context.get('request').GET.get('date1'): + # date1 = datetime.datetime.strptime(str(self.context.get('request').GET['date1']), + # '%Y-%m-%d').date() + # date2 = datetime.datetime.strptime(str(self.context.get('request').GET['date2']), + # '%Y-%m-%d').date() + # + # finance_info = get_finance_info(kill_house, date1, date2) if date1 else get_finance_info(kill_house) + # if date1: + # slaughter_transactions = InternalTransaction.objects.filter( + # Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', date__date__gte=date1, + # date__date__lte=date2, + # trash=False) + # else: + # slaughter_transactions = InternalTransaction.objects.filter( + # Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', + # trash=False) + # + # total_pure_province_carcasses_price = finance_info['total_pure_province_carcasses_price'] + # return_total_pure_province_carcasses_price = finance_info['total_return_pure_province_carcasses_price'] + # total_out_selling_province_carcasses_price = finance_info['total_out_selling_province_carcasses_price'] + # difference_requests_price = finance_info['difference_requests_price'] + # + # if new_out_selling_count_wage: + # total_out_live_buying_province_carcasses_price = int( + # (finance_info[ + # 'before_total_out_live_buying_province_carcasses_weight'] * before_out_buying_count_wage_amount) + ( + # finance_info[ + # 'after_total_out_live_buying_province_carcasses_weight'] * free_buying_live_weight_wage_type_amount)) + # + # before_total_out_live_buying_province_carcasses_price = finance_info[ + # 'before_total_out_live_buying_province_carcasses_weight'] * before_out_buying_count_wage_amount + # else: + # total_out_live_buying_province_carcasses_price = finance_info[ + # 'total_out_live_buying_province_carcasses_price'] + # total_out_carcasses_buying_province_carcasses_price = finance_info[ + # 'total_out_carcasses_buying_province_carcasses_price'] + # total_price = finance_info['total_price'] + # + # 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 + # company_province_kill_request_percent = percentages_wage_type.filter( + # wage_type__en_name='province-kill-request', share_type__en_name='company').first().percent / 100 + # guilds_province_kill_request_percent = percentages_wage_type.filter( + # wage_type__en_name='province-kill-request', share_type__en_name='guilds').first().percent / 100 + # other_province_kill_request_percent = percentages_wage_type.filter( + # wage_type__en_name='province-kill-request', share_type__en_name='other').first().percent / 100 + # + # union_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='union').first().percent / 100 + # union_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='union').first().percent / 100 + # company_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='company').first().percent / 100 + # company_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='company').first().percent / 100 + # guilds_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='guilds').first().percent / 100 + # guilds_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='guilds').first().percent / 100 + # other_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='other').first().percent / 100 + # other_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='other').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 + # company_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell', + # share_type__en_name='company').first().percent / 100 + # guilds_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell', + # share_type__en_name='guilds').first().percent / 100 + # other_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell', + # share_type__en_name='other').first().percent / 100 + # + # guilds_difference_requests_price = difference_requests_price * guilds_province_kill_request_percent + # other_difference_requests_price = difference_requests_price * other_province_kill_request_percent + # guild_return_province_kill_request_wage = return_total_pure_province_carcasses_price * guilds_province_kill_request_percent + # other_return_province_kill_request_wage = return_total_pure_province_carcasses_price * other_province_kill_request_percent + # + # union_province_kill_request_wage = total_pure_province_carcasses_price * union_province_kill_request_percent + # return_union_province_kill_request_wage = return_total_pure_province_carcasses_price * union_province_kill_request_percent + # union_free_buying_live_wage = ( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * union_free_buying_live_percent + # union_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * union_free_buying_carcasses_percent + # union_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * union_free_sell_carcasses_percent + # union_total_wage = union_province_kill_request_wage + union_free_buying_live_wage + union_free_buying_carcasses_wage + union_free_sell_carcasses_wage + return_union_province_kill_request_wage + # union_total_paid_wage = slaughter_transactions.aggregate(total=Sum('union_share'))['total'] or 0 + # union_total_unpaid_wage = union_total_wage - union_total_paid_wage + # company_province_kill_request_wage = ( + # total_pure_province_carcasses_price * company_province_kill_request_percent) + ( + # guilds_difference_requests_price + other_difference_requests_price) + # return_company_province_kill_request_wage = ( + # return_total_pure_province_carcasses_price * company_province_kill_request_percent) + ( + # guild_return_province_kill_request_wage + other_return_province_kill_request_wage) + # company_free_buying_live_wage = (( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * company_free_buying_live_percent) + before_total_out_live_buying_province_carcasses_price + # company_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * company_free_buying_carcasses_percent + # company_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * company_free_sell_carcasses_percent + # company_total_wage = company_province_kill_request_wage + company_free_buying_live_wage + company_free_buying_carcasses_wage + company_free_sell_carcasses_wage + return_company_province_kill_request_wage + # company_total_paid_wage = slaughter_transactions.aggregate(total=Sum('company_share'))['total'] or 0 + # company_total_unpaid_wage = company_total_wage - company_total_paid_wage + # + # guilds_province_kill_request_wage = ( + # total_pure_province_carcasses_price * guilds_province_kill_request_percent) - guilds_difference_requests_price + # return_guilds_province_kill_request_wage = 0 + # guilds_free_buying_live_wage = ( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * guilds_free_buying_live_percent + # guilds_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * guilds_free_buying_carcasses_percent + # guilds_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * guilds_free_sell_carcasses_percent + # guilds_total_wage = guilds_province_kill_request_wage + guilds_free_buying_live_wage + guilds_free_buying_carcasses_wage + guilds_free_sell_carcasses_wage + # guilds_total_paid_wage = slaughter_transactions.aggregate(total=Sum('guilds_share'))['total'] or 0 + # guilds_total_unpaid_wage = guilds_total_wage - guilds_total_paid_wage + # + # other_province_kill_request_wage = ( + # total_pure_province_carcasses_price * other_province_kill_request_percent) - other_difference_requests_price + # return_other_province_kill_request_wage = 0 + # other_free_buying_live_wage = ( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * other_free_buying_live_percent + # other_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * other_free_buying_carcasses_percent + # other_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * other_free_sell_carcasses_percent + # other_total_wage = other_province_kill_request_wage + other_free_buying_live_wage + other_free_buying_carcasses_wage + other_free_sell_carcasses_wage + # other_total_paid_wage = slaughter_transactions.aggregate(total=Sum('other_share'))['total'] or 0 + # other_total_unpaid_wage = other_total_wage - other_total_paid_wage + # return [ + # { + # "name": "اتحادیه", + # "province_kill_request_wage": union_province_kill_request_wage, + # "return_province_kill_request_wage": return_union_province_kill_request_wage, + # "free_buying_live_wage": union_free_buying_live_wage, + # "free_buying_carcasses_wage": union_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": union_free_sell_carcasses_wage, + # "total_wage": union_total_wage, + # "total_paid_wage": union_total_paid_wage, + # "total_unpaid_wage": union_total_unpaid_wage, + # }, + # { + # "name": "شرکت", + # "province_kill_request_wage": company_province_kill_request_wage, + # "return_province_kill_request_wage": return_company_province_kill_request_wage, + # "free_buying_live_wage": company_free_buying_live_wage, + # "free_buying_carcasses_wage": company_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": company_free_sell_carcasses_wage, + # "total_wage": company_total_wage, + # "total_paid_wage": company_total_paid_wage, + # "total_unpaid_wage": company_total_unpaid_wage, + # }, + # { + # "name": "صنف پروتئین", + # "province_kill_request_wage": guilds_province_kill_request_wage, + # "return_province_kill_request_wage": return_guilds_province_kill_request_wage, + # "free_buying_live_wage": guilds_free_buying_live_wage, + # "free_buying_carcasses_wage": guilds_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": guilds_free_sell_carcasses_wage, + # "total_wage": guilds_total_wage, + # "total_paid_wage": guilds_total_paid_wage, + # "total_unpaid_wage": guilds_total_unpaid_wage, + # }, + # { + # "name": "دامپزشک", + # "province_kill_request_wage": other_province_kill_request_wage, + # "return_province_kill_request_wage": return_other_province_kill_request_wage, + # "free_buying_live_wage": other_free_buying_live_wage, + # "free_buying_carcasses_wage": other_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": other_free_sell_carcasses_wage, + # "total_wage": other_total_wage, + # "total_paid_wage": other_total_paid_wage, + # "total_unpaid_wage": other_total_unpaid_wage, + # }] def get_shares(self, kill_house): date1 = None date2 = None @@ -1597,14 +1857,27 @@ class KillHouseForNewWageInormationSerializer(serializers.ModelSerializer): finance_info = get_finance_info(kill_house, date1, date2) if date1 else get_finance_info(kill_house) if date1: - slaughter_transactions = InternalTransaction.objects.filter( - Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', date__date__gte=date1, - date__date__lte=date2, - trash=False) + if kill_house.killer and kill_house.type == 'public': + slaughter_transactions = InternalTransaction.objects.filter( + ill_house=kill_house,parent_kill_house=kill_house, status='completed', date__date__gte=date1, + date__date__lte=date2, + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', + date__date__gte=date1, + date__date__lte=date2, + trash=False) else: - slaughter_transactions = InternalTransaction.objects.filter( - Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', - trash=False) + if kill_house.killer and kill_house.type == 'public': + + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=kill_house,parent_kill_house=kill_house, status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', + trash=False) total_pure_province_carcasses_price = finance_info['total_pure_province_carcasses_price'] return_total_pure_province_carcasses_price = finance_info['total_return_pure_province_carcasses_price'] @@ -5025,15 +5298,219 @@ class TotalWageInformationExclusiveKillerSerializer(serializers.ModelSerializer) model = KillHouse fields = ['name', 'key', 'wage_info'] + # def get_wage_info(self, obj): + # before_total_out_live_buying_province_carcasses_price = 0 + # total_wage_type = WageType.objects.filter(trash=False) + # free_buying_live_weight_wage_type = total_wage_type.filter(en_name='live-buy', trash=False).first() + # free_buying_live_weight_wage_type_amount = free_buying_live_weight_wage_type.amount if free_buying_live_weight_wage_type.status == True else 0 + # finance_info = get_kill_house_finance_info(obj) + # slaughter_transactions = InternalTransaction.objects.filter( + # kill_house=obj, status='completed', + # trash=False) + # + # total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[ + # 'total'] or 0 + # + # total_pure_province_carcasses_price = finance_info['total_pure_province_carcasses_price'] + # return_total_pure_province_carcasses_price = finance_info['total_return_pure_province_carcasses_price'] + # total_out_selling_province_carcasses_price = finance_info['total_out_selling_province_carcasses_price'] + # difference_requests_price = finance_info['difference_requests_price'] + # + # if new_out_selling_count_wage: + # total_out_live_buying_province_carcasses_price = int( + # (finance_info[ + # 'before_total_out_live_buying_province_carcasses_weight'] * before_out_buying_count_wage_amount) + ( + # finance_info[ + # 'after_total_out_live_buying_province_carcasses_weight'] * free_buying_live_weight_wage_type_amount)) + # + # before_total_out_live_buying_province_carcasses_price = finance_info[ + # 'before_total_out_live_buying_province_carcasses_weight'] * before_out_buying_count_wage_amount + # else: + # total_out_live_buying_province_carcasses_price = finance_info[ + # 'total_out_live_buying_province_carcasses_price'] + # total_out_carcasses_buying_province_carcasses_price = finance_info[ + # 'total_out_carcasses_buying_province_carcasses_price'] + # total_price = finance_info['total_price'] + # + # # total_pure_province_carcasses_price = finance_info['total_pure_province_carcasses_price'] + # # total_out_selling_province_carcasses_price = finance_info['total_out_selling_province_carcasses_price'] + # # total_out_live_buying_province_carcasses_price = finance_info['total_out_live_buying_province_carcasses_price'] + # # total_out_carcasses_buying_province_carcasses_price = finance_info[ + # # 'total_out_carcasses_buying_province_carcasses_price'] + # # total_price = finance_info['total_price'] + # + # 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 + # company_province_kill_request_percent = percentages_wage_type.filter( + # wage_type__en_name='province-kill-request', share_type__en_name='company').first().percent / 100 + # guilds_province_kill_request_percent = percentages_wage_type.filter( + # wage_type__en_name='province-kill-request', share_type__en_name='guilds').first().percent / 100 + # other_province_kill_request_percent = percentages_wage_type.filter( + # wage_type__en_name='province-kill-request', share_type__en_name='other').first().percent / 100 + # + # union_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='union').first().percent / 100 + # union_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='union').first().percent / 100 + # company_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='company').first().percent / 100 + # company_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='company').first().percent / 100 + # guilds_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='guilds').first().percent / 100 + # guilds_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='guilds').first().percent / 100 + # other_free_buying_live_percent = percentages_wage_type.filter(wage_type__en_name='live-buy', + # share_type__en_name='other').first().percent / 100 + # other_free_buying_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-buy', + # share_type__en_name='other').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 + # company_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell', + # share_type__en_name='company').first().percent / 100 + # guilds_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell', + # share_type__en_name='guilds').first().percent / 100 + # other_free_sell_carcasses_percent = percentages_wage_type.filter(wage_type__en_name='carcasse-sell', + # share_type__en_name='other').first().percent / 100 + # + # guilds_difference_requests_price = difference_requests_price * guilds_province_kill_request_percent + # other_difference_requests_price = difference_requests_price * other_province_kill_request_percent + # guild_return_province_kill_request_wage = return_total_pure_province_carcasses_price * guilds_province_kill_request_percent + # other_return_province_kill_request_wage = return_total_pure_province_carcasses_price * other_province_kill_request_percent + # + # union_province_kill_request_wage = total_pure_province_carcasses_price * union_province_kill_request_percent + # return_union_province_kill_request_wage = return_total_pure_province_carcasses_price * union_province_kill_request_percent + # union_free_buying_live_wage = ( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * union_free_buying_live_percent + # union_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * union_free_buying_carcasses_percent + # union_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * union_free_sell_carcasses_percent + # union_total_wage = union_province_kill_request_wage + union_free_buying_live_wage + union_free_buying_carcasses_wage + union_free_sell_carcasses_wage + return_union_province_kill_request_wage + # union_total_paid_wage = slaughter_transactions.aggregate(total=Sum('union_share'))['total'] or 0 + # union_total_unpaid_wage = union_total_wage - union_total_paid_wage + # company_province_kill_request_wage = ( + # total_pure_province_carcasses_price * company_province_kill_request_percent) + ( + # guilds_difference_requests_price + other_difference_requests_price) + # return_company_province_kill_request_wage = ( + # return_total_pure_province_carcasses_price * company_province_kill_request_percent) + ( + # guild_return_province_kill_request_wage + other_return_province_kill_request_wage) + # company_free_buying_live_wage = (( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * company_free_buying_live_percent) + before_total_out_live_buying_province_carcasses_price + # company_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * company_free_buying_carcasses_percent + # company_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * company_free_sell_carcasses_percent + # company_total_wage = company_province_kill_request_wage + company_free_buying_live_wage + company_free_buying_carcasses_wage + company_free_sell_carcasses_wage + return_company_province_kill_request_wage + # company_total_paid_wage = slaughter_transactions.aggregate(total=Sum('company_share'))['total'] or 0 + # company_total_unpaid_wage = company_total_wage - company_total_paid_wage + # + # guilds_province_kill_request_wage = ( + # total_pure_province_carcasses_price * guilds_province_kill_request_percent) - guilds_difference_requests_price + # return_guilds_province_kill_request_wage = 0 + # guilds_free_buying_live_wage = ( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * guilds_free_buying_live_percent + # guilds_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * guilds_free_buying_carcasses_percent + # guilds_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * guilds_free_sell_carcasses_percent + # guilds_total_wage = guilds_province_kill_request_wage + guilds_free_buying_live_wage + guilds_free_buying_carcasses_wage + guilds_free_sell_carcasses_wage + # guilds_total_paid_wage = slaughter_transactions.aggregate(total=Sum('guilds_share'))['total'] or 0 + # guilds_total_unpaid_wage = guilds_total_wage - guilds_total_paid_wage + # + # other_province_kill_request_wage = ( + # total_pure_province_carcasses_price * other_province_kill_request_percent) - other_difference_requests_price + # return_other_province_kill_request_wage = 0 + # other_free_buying_live_wage = ( + # total_out_live_buying_province_carcasses_price - before_total_out_live_buying_province_carcasses_price) * other_free_buying_live_percent + # other_free_buying_carcasses_wage = total_out_carcasses_buying_province_carcasses_price * other_free_buying_carcasses_percent + # other_free_sell_carcasses_wage = total_out_selling_province_carcasses_price * other_free_sell_carcasses_percent + # other_total_wage = other_province_kill_request_wage + other_free_buying_live_wage + other_free_buying_carcasses_wage + other_free_sell_carcasses_wage + # other_total_paid_wage = slaughter_transactions.aggregate(total=Sum('other_share'))['total'] or 0 + # other_total_unpaid_wage = other_total_wage - other_total_paid_wage + # + # shares = [ + # { + # "name": "اتحادیه", + # "province_kill_request_wage": union_province_kill_request_wage, + # "return_province_kill_request_wage": return_union_province_kill_request_wage, + # "free_buying_live_wage": union_free_buying_live_wage, + # "free_buying_carcasses_wage": union_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": union_free_sell_carcasses_wage, + # "total_wage": union_total_wage, + # "total_paid_wage": union_total_paid_wage, + # "total_unpaid_wage": union_total_unpaid_wage, + # }, + # { + # "name": "شرکت", + # "province_kill_request_wage": company_province_kill_request_wage, + # "return_province_kill_request_wage": return_company_province_kill_request_wage, + # "free_buying_live_wage": company_free_buying_live_wage, + # "free_buying_carcasses_wage": company_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": company_free_sell_carcasses_wage, + # "total_wage": company_total_wage, + # "total_paid_wage": company_total_paid_wage, + # "total_unpaid_wage": company_total_unpaid_wage, + # }, + # { + # "name": "صنف پروتئین", + # "province_kill_request_wage": guilds_province_kill_request_wage, + # "return_province_kill_request_wage": return_guilds_province_kill_request_wage, + # "free_buying_live_wage": guilds_free_buying_live_wage, + # "free_buying_carcasses_wage": guilds_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": guilds_free_sell_carcasses_wage, + # "total_wage": guilds_total_wage, + # "total_paid_wage": guilds_total_paid_wage, + # "total_unpaid_wage": guilds_total_unpaid_wage, + # }, + # { + # "name": "دامپزشک", + # "province_kill_request_wage": other_province_kill_request_wage, + # "return_province_kill_request_wage": return_other_province_kill_request_wage, + # "free_buying_live_wage": other_free_buying_live_wage, + # "free_buying_carcasses_wage": other_free_buying_carcasses_wage, + # "free_sell_carcasses_wage": other_free_sell_carcasses_wage, + # "total_wage": other_total_wage, + # "total_paid_wage": other_total_paid_wage, + # "total_unpaid_wage": other_total_unpaid_wage, + # }] + # + # return { + # "wage_counting_type": wage_counting_type, + # "total_wage": finance_info['total_price'], + # "total_paid_wage": total_paid_wage, + # "off": obj.off, + # "total_unpaid_wage": finance_info['total_price'] - (total_paid_wage + obj.off), + # "province_kill_requests_total_wage": finance_info['total_pure_province_carcasses_price'], + # "province_kill_requests_total_weight": finance_info['total_pure_province_carcasses_weight'], + # "free_bars_live_total_wage": finance_info['total_out_live_buying_province_carcasses_price'], + # "free_bars_live_total_weight": finance_info['total_out_live_buying_province_carcasses_weight'], + # "free_bars_carcases_total_wage": finance_info['total_out_carcasses_buying_province_carcasses_price'], + # "free_bars_carcases_total_weight": finance_info['total_out_carcasses_buying_province_carcasses_weight'], + # "free_bars_out_province_carcases_total_wage": finance_info['total_out_selling_province_carcasses_price'], + # "free_bars_out_province_carcases_total_weight": finance_info['total_out_selling_province_carcasses_weight'], + # "total_province_live_weight": finance_info['total_province_live_weight'], + # "total_province_carcasses_weight": finance_info['total_province_carcasses_weight'], + # "province_live_wage_amount": finance_info['province_live_wage_amount'], + # "free_buying_live_weight_amount": finance_info['free_buying_live_weight_amount'], + # "free_buying_carcesses_weight_amount": finance_info['free_buying_carcesses_weight_amount'], + # "free_sell_carcesses_weight_amount": finance_info['free_sell_carcesses_weight_amount'], + # "user_token": 'k' + obj.kill_house_operator.user.user_gate_way_id, + # "shares": shares, + # "return_total_province_live_weight": finance_info['return_total_province_live_weight'], + # "total_return_pure_province_carcasses_price": finance_info['total_return_pure_province_carcasses_price'], + # + # } def get_wage_info(self, obj): before_total_out_live_buying_province_carcasses_price = 0 total_wage_type = WageType.objects.filter(trash=False) free_buying_live_weight_wage_type = total_wage_type.filter(en_name='live-buy', trash=False).first() free_buying_live_weight_wage_type_amount = free_buying_live_weight_wage_type.amount if free_buying_live_weight_wage_type.status == True else 0 finance_info = get_kill_house_finance_info(obj) - slaughter_transactions = InternalTransaction.objects.filter( - kill_house=obj, status='completed', - trash=False) + if obj.killer and obj.type == 'public': + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=obj,parent_kill_house=obj, status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=obj, status='completed', + trash=False) total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[ 'total'] or 0 diff --git a/panel/KillHouse/views.py b/panel/KillHouse/views.py index 52f2314..39895de 100644 --- a/panel/KillHouse/views.py +++ b/panel/KillHouse/views.py @@ -19736,9 +19736,15 @@ class KillHouseLock(APIView): kill_house = KillHouse.objects.filter(kill_house_operator__user=user, trash=False).first() kill_house_purchase = KillHousePurchaseRequest.objects.filter(kill_house=kill_house).first() total_unpaid_wage = get_finance_info(kill_house)['total_price'] - slaughter_transactions = InternalTransaction.objects.filter(Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), - status='completed', - trash=False) + if kill_house.killer and kill_house.type=='public': + slaughter_transactions = InternalTransaction.objects.filter(kill_house=kill_house,parent_kill_house=kill_house, + status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), + status='completed', + trash=False) total_paid_wage = slaughter_transactions.aggregate(total=Sum('amount'))[ 'total'] or 0 diff --git a/panel/ProvinceOperator/serializers.py b/panel/ProvinceOperator/serializers.py index 0e29d08..fdac27f 100644 --- a/panel/ProvinceOperator/serializers.py +++ b/panel/ProvinceOperator/serializers.py @@ -2568,12 +2568,13 @@ class POSMachineForLiveStockTransactionsSerializer(serializers.ModelSerializer): class POSDeviceSessionForInspectionSerializer(serializers.ModelSerializer): - pos = POSMachineForInspectionsSerializer(read_only=True) + lat = serializers.FloatField(source='lot', read_only=True) + lng = serializers.FloatField(read_only=True) + guilds_name = serializers.CharField(source='pos.guild.guilds_name', read_only=True) class Meta: model = POSDeviceSession - fields = ['key', 'name', 'pos', 'version', 'session_last_seen_date', 'lng', 'lot'] - + fields = ['lat', 'lng', 'guilds_name'] class POSMachineForServerSerializer(serializers.ModelSerializer): class Meta: @@ -4001,18 +4002,42 @@ class TotalWageInformationSerializer(serializers.ModelSerializer): except: user = SystemUserProfile.objects.get(key=self.context.get('request').GET['key']) kill_house = KillHouse.objects.filter(kill_house_operator__user=user, trash=False).first() + # if date1: + # finance_info = get_finance_info(kill_house, date1, date2) + # slaughter_transactions = InternalTransaction.objects.filter( + # Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), date__date__gte=date1, + # date__date__lte=date2, status='completed', + # trash=False) + # + # else: + # finance_info = get_finance_info(kill_house) + # slaughter_transactions = InternalTransaction.objects.filter( + # Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', + # trash=False) if date1: finance_info = get_finance_info(kill_house, date1, date2) - slaughter_transactions = InternalTransaction.objects.filter( - Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), date__date__gte=date1, - date__date__lte=date2, status='completed', - trash=False) + if kill_house.killer and kill_house.type == 'public': + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=kill_house,parent_kill_house=kill_house, date__date__gte=date1, + date__date__lte=date2, status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), date__date__gte=date1, + date__date__lte=date2, status='completed', + trash=False) else: finance_info = get_finance_info(kill_house) - slaughter_transactions = InternalTransaction.objects.filter( - Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', - trash=False) + if kill_house.killer and kill_house.type == 'public': + + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=kill_house,parent_kill_house=kill_house, status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', + trash=False) total_paid_wage += slaughter_transactions.aggregate(total=Sum('amount'))[ 'total'] or 0 diff --git a/panel/ProvinceOperator/views.py b/panel/ProvinceOperator/views.py index 36400eb..1e87544 100644 --- a/panel/ProvinceOperator/views.py +++ b/panel/ProvinceOperator/views.py @@ -1502,6 +1502,7 @@ class DispenserInformationViewSet(viewsets.ModelViewSet): dispenser_info.dispenser.save() return Response(serializer.data, status=status.HTTP_200_OK) + class RepresentativeViewSet(viewsets.ModelViewSet): queryset = Representative.objects.all() permission_classes = [TokenHasReadWriteScope] @@ -2045,8 +2046,8 @@ class GuildsViewSet(viewsets.ModelViewSet): if 'psp_pos' in request.GET: base_queryset = ( Guilds.objects.filter(trash=False, active=True, has_inquiry=True) - .select_related('user', 'address__city') - .values( + .select_related('user', 'address__city') + .values( 'key', 'guilds_name', 'guilds_id', @@ -2167,8 +2168,8 @@ class GuildsViewSet(viewsets.ModelViewSet): steward = Guilds.objects.select_related('user').get(user=user, active=True, trash=False) base_queryset = ( Guilds.objects.filter(trash=False, active=True) - .select_related('user', 'address__city') - .values( + .select_related('user', 'address__city') + .values( 'key', 'guilds_name', 'steward', @@ -2270,8 +2271,8 @@ class GuildsViewSet(viewsets.ModelViewSet): if all: base_queryset = ( Guilds.objects - .filter(trash=False, active=True).select_related('user', 'address__city') - .values( + .filter(trash=False, active=True).select_related('user', 'address__city') + .values( 'key', 'guilds_name', 'steward', @@ -3880,8 +3881,8 @@ class StewardFreeBarInformationViewSet(viewsets.ModelViewSet): steward = Guilds.objects.get(user=user, active=True, trash=False) product = RolesProducts.objects.get(key=request.data['product_key'], trash=False) request.data.pop('product_key') - dispenser = request.data.pop('dispenser',None) - representative = request.data.pop('representative',None) + dispenser = request.data.pop('dispenser', None) + representative = request.data.pop('representative', None) try: image = request.data['bar_image'] request.data.pop('bar_image') @@ -4187,8 +4188,8 @@ class StewardFreeSaleBarInformationViewSet(viewsets.ModelViewSet): buyer = OutProvinceCarcassesBuyer.objects.get(key=request.data.pop('buyer_key', None), trash=False) date = datetime.strptime(str(request.data['date']), '%Y-%m-%d').date() production_date = datetime.strptime(str(request.data['production_date']), '%Y-%m-%d').date() - dispenser = request.data.pop('dispenser',None) - representative = request.data.pop('representative',None) + dispenser = request.data.pop('dispenser', None) + representative = request.data.pop('representative', None) date = datetime(year=date.year, month=date.month, day=date.day, hour=now_time.hour, minute=now_time.minute, second=now_time.second) @@ -4686,8 +4687,8 @@ class StewardAllocationViewSet(viewsets.ModelViewSet): now = datetime.now() now_time = now.time() production_date = None - dispenser = request.data.pop('dispenser',None) - representative = request.data.pop('representative',None) + dispenser = request.data.pop('dispenser', None) + representative = request.data.pop('representative', None) date = datetime.strptime(str(request.data['date']), '%Y-%m-%d').date() date = datetime(year=date.year, month=date.month, day=date.day, hour=now_time.hour, @@ -5521,10 +5522,11 @@ class InProvinceAllocationDashboardViewSet(viewsets.ModelViewSet): else: filters['steward__user__city'] = user.city if allocations_type == 'Steward': - allocations = StewardAllocation.objects.filter(Q(steward__isnull=False)|Q(guilds__isnull=False),**filters) + allocations = StewardAllocation.objects.filter(Q(steward__isnull=False) | Q(guilds__isnull=False), + **filters) else: - allocations = StewardAllocation.objects.filter(**filters) + allocations = StewardAllocation.objects.filter(**filters) if value and search == 'filter': if value != 'undefined' and value.strip(): allocations = allocations.filter( @@ -5908,9 +5910,9 @@ class InProvinceAllocationViewSet(viewsets.ModelViewSet): else: filters['steward__user__city'] = user.city - if allocations_type == 'Steward': - allocations = StewardAllocation.objects.filter(Q(steward__isnull=False)|Q(guilds__isnull=False),**filters).order_by('-date') + allocations = StewardAllocation.objects.filter(Q(steward__isnull=False) | Q(guilds__isnull=False), + **filters).order_by('-date') else: allocations = StewardAllocation.objects.filter(**filters).order_by('-date') if value and search == 'filter': @@ -11505,11 +11507,11 @@ class RejectedRequestsViewSet(viewsets.ModelViewSet): 'rejected_position': 'financial', 'rejected_position_farsi': 'مالی', 'province_operator': n.kill_house_assignment.kill_house_check. - province_kill_request.province_request.province_operator_system.user.fullname, + province_kill_request.province_request.province_operator_system.user.fullname, 'kill_house': n.kill_house_assignment.kill_house_check.province_kill_request - .kill_request.kill_house.name, + .kill_request.kill_house.name, 'city_operator': n.kill_house_assignment.kill_house_check.province_kill_request - .province_request.city_request_Poultry.city_operator_system.user.fullname, + .province_request.city_request_Poultry.city_operator_system.user.fullname, 'modify_date': n.modify_date, 'reason_message': n.message, 'value': self.serializer_class(value).data @@ -19240,6 +19242,37 @@ def get_gate_way_payer_info(request): status=status.HTTP_200_OK ) + # elif role == 'KillHouse': + # total_unpaid_wage = 0 + # total_paid_wage = 0 + # real_free_sale_wage = 0 + # kill_house_kill_requests_wage = 0 + # # wage_type = WageType.objects.filter(en_name='province-kill-request').first() + # # total_check_wage = wage_type.amount + # kill_house = KillHouse.objects.filter(kill_house_operator__user=user, trash=False).first() + # total_unpaid_wage = get_finance_info(kill_house)['total_price'] + # + # slaughter_transactions = InternalTransaction.objects.filter( + # Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', + # trash=False) + # + # total_paid_wage += slaughter_transactions.aggregate(total=Sum('amount'))[ + # 'total'] or 0 + # + # return Response( + # { + # "role": role, + # "user_key": user.key, + # "name": kill_house.name, + # "fullname": user.fullname, + # "mobile": user.mobile, + # "city": user.city.name, + # "province": user.province.name, + # "total_amount": total_unpaid_wage - (total_paid_wage + kill_house.off) + # }, + # status=status.HTTP_200_OK + # + # ) elif role == 'KillHouse': total_unpaid_wage = 0 total_paid_wage = 0 @@ -19249,10 +19282,14 @@ def get_gate_way_payer_info(request): # total_check_wage = wage_type.amount kill_house = KillHouse.objects.filter(kill_house_operator__user=user, trash=False).first() total_unpaid_wage = get_finance_info(kill_house)['total_price'] - - slaughter_transactions = InternalTransaction.objects.filter( - Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', - trash=False) + if kill_house.killer and kill_house.type == 'public': + slaughter_transactions = InternalTransaction.objects.filter( + kill_house=kill_house, parent_kill_house=kill_house, status='completed', + trash=False) + else: + slaughter_transactions = InternalTransaction.objects.filter( + Q(kill_house=kill_house) | Q(parent_kill_house=kill_house), status='completed', + trash=False) total_paid_wage += slaughter_transactions.aggregate(total=Sum('amount'))[ 'total'] or 0 @@ -19271,6 +19308,7 @@ def get_gate_way_payer_info(request): status=status.HTTP_200_OK ) + else: total_unpaid_wage = 0 total_paid_wage = 0 @@ -20171,11 +20209,13 @@ class CombinedPosProductsViewSet(viewsets.ModelViewSet): queryset = self.get_queryset(validation_device, version) serializer = self.get_serializer(queryset, many=True, context={'validation_device': validation_device}) return Response(serializer.data, status=status.HTTP_200_OK) + + class NewCombinedPosProductsViewSet(viewsets.ModelViewSet): permission_classes = [AllowAny] serializer_class = NewCombinedPosProductSerializer - def get_queryset(self, pos, version,role): + def get_queryset(self, pos, version, role): if role == 'KillHouse': kill_house = KillHouse.objects.filter(kill_house_operator__user=pos.owner).first() roles_products = RolesProducts.objects.filter(kill_house=kill_house, trash=False) @@ -20208,7 +20248,7 @@ class NewCombinedPosProductsViewSet(viewsets.ModelViewSet): validation_device = validator.validation_pos() version = request.headers.get('device-version') role = request.headers.get('device-role') - queryset = self.get_queryset(validation_device, version,role) + queryset = self.get_queryset(validation_device, version, role) serializer = self.get_serializer(queryset, many=True, context={'validation_device': validation_device}) return Response(serializer.data, status=status.HTTP_200_OK) @@ -22828,8 +22868,8 @@ class AppSegmentationViewSet(viewsets.ModelViewSet): guild = None kill_house = None quota = None - dispenser = request.data.pop('dispenser',None) - representative = request.data.pop('representative',None) + dispenser = request.data.pop('dispenser', None) + representative = request.data.pop('representative', None) product = RolesProducts.objects.get(key=request.data['product_key'], trash=False) if product.guild: guild = product.guild @@ -24541,7 +24581,7 @@ class PoultryAndHatchingForPoultryScience(GenericAPIView): elif role == 'CityPoultry': city_poultry = CityPoultry.objects.get(user=user, trash=False) hatching = hatching.filter( - poultry__address__city=city_poultry.city + poultry__address__city=city_poultry.address.city ) else: hatching = hatching @@ -25950,9 +25990,14 @@ class StewardRemainWeightViewSet(GenericAPIView): production_date__isnull=False, steward_warehouse=True ) - input_allocations_vals = allocations_vals.filter(Q(to_guilds=steward,to_steward__isnull=True) | Q(to_steward=steward,to_guilds__isnull=True),receiver_state='accepted').values('production_date__date', 'date__date', 'quota', 'real_weight_of_carcasses', 'receiver_state') - output_allocations_vals = allocations_vals.filter(Q(guilds=steward,steward__isnull=True) | Q(steward=steward,guilds__isnull=True),receiver_state__in=('accepted','pending')).values('production_date__date', 'date__date', 'quota', 'real_weight_of_carcasses', 'receiver_state') - + input_allocations_vals = allocations_vals.filter( + Q(to_guilds=steward, to_steward__isnull=True) | Q(to_steward=steward, to_guilds__isnull=True), + receiver_state='accepted').values('production_date__date', 'date__date', 'quota', + 'real_weight_of_carcasses', 'receiver_state') + output_allocations_vals = allocations_vals.filter( + Q(guilds=steward, steward__isnull=True) | Q(steward=steward, guilds__isnull=True), + receiver_state__in=('accepted', 'pending')).values('production_date__date', 'date__date', 'quota', + 'real_weight_of_carcasses', 'receiver_state') free_bar_vals = list(StewardFreeBarInformation.objects.filter( steward=steward, @@ -26020,19 +26065,17 @@ class StewardRemainWeightViewSet(GenericAPIView): w = a['real_weight_of_carcasses'] or 0 q = a['quota'] if a[date_field] not in input_alloc_daily: - input_alloc_daily[a[date_field]] = {'governmental': 0, 'free': 0} + input_alloc_daily[a[date_field]] = {'governmental': 0, 'free': 0} input_alloc_daily[a[date_field]][q] += w - for a in output_allocations_vals: date_field = 'production_date__date' w = a['real_weight_of_carcasses'] or 0 q = a['quota'] if a[date_field] not in output_alloc_daily: - output_alloc_daily[a[date_field]] = {'governmental': 0, 'free': 0} + output_alloc_daily[a[date_field]] = {'governmental': 0, 'free': 0} output_alloc_daily[a[date_field]][q] += w - free_bar_daily = {} for f in free_bar_vals: d = f['date__date']