first push
This commit is contained in:
138
panel/CityOperator/serializers.py
Normal file
138
panel/CityOperator/serializers.py
Normal file
@@ -0,0 +1,138 @@
|
||||
import datetime
|
||||
|
||||
from django.db.models import Sum, F
|
||||
from rest_framework import serializers
|
||||
|
||||
from authentication.serializer.serializer import SystemUserProfileSerializer, BankCardSerializer, \
|
||||
SystemUserProfileForGuildSerializer
|
||||
from authentication.serializers import SystemAddressSerializer
|
||||
from panel.CityOperator.helpers import get_city_sub_sector_finance_info, get_city_sub_sector_finance_info_with_date
|
||||
from panel.models import CityOperatorCheckRequest, CityOperator, ProvinceKillRequest, ProvinceCheckOperatorRequest, \
|
||||
WageType, PercentageOfWageType, PoultryHatching, Poultry, PoultryRequest, KillHouseFreeBarInformation, \
|
||||
KillHouseFreeSaleBarInformation, KillHouse
|
||||
from panel.poultry.serializers import PoultryRequestSerializer
|
||||
|
||||
|
||||
# سریالایزر مربوط به اپراتور شهرستان
|
||||
class CityOperatorSerializer(serializers.ModelSerializer):
|
||||
user = SystemUserProfileSerializer(read_only=True)
|
||||
address = SystemAddressSerializer(read_only=True)
|
||||
user_bank_info = BankCardSerializer(read_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = CityOperator
|
||||
exclude = (
|
||||
'id',
|
||||
'create_date',
|
||||
'modify_date',
|
||||
# 'trash',
|
||||
'created_by',
|
||||
'modified_by',
|
||||
)
|
||||
|
||||
|
||||
class CityOperatorForAllUserSerializer(serializers.ModelSerializer):
|
||||
address = SystemAddressSerializer(read_only=True)
|
||||
user_bank_info = BankCardSerializer(read_only=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = CityOperator
|
||||
fields = ['address', 'user_bank_info', 'identity_documents', 'phone', 'unit_name']
|
||||
|
||||
|
||||
class CityOperatorForPoultrySerializer(serializers.ModelSerializer):
|
||||
address = SystemAddressSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = CityOperator
|
||||
fields = ['key', 'address', 'unit_name']
|
||||
|
||||
|
||||
class CityOperatorForSubSectorTransactionsSerializer(serializers.ModelSerializer):
|
||||
user = SystemUserProfileForGuildSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = CityOperator
|
||||
fields = ['key', 'user', 'unit_name']
|
||||
|
||||
|
||||
class CityOperatorForSubSectorSerializer(serializers.ModelSerializer):
|
||||
user = SystemUserProfileForGuildSerializer(read_only=True)
|
||||
wage_info = serializers.SerializerMethodField('get_wage_info')
|
||||
|
||||
class Meta:
|
||||
model = CityOperator
|
||||
fields = ['key', 'user', 'unit_name','wage_info']
|
||||
|
||||
|
||||
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()
|
||||
poultries = Poultry.objects.filter(city_operator=obj.unit_name,trash=False).order_by('id')
|
||||
info=get_city_sub_sector_finance_info(poultries,obj,date1,date2)
|
||||
return info
|
||||
|
||||
|
||||
|
||||
# سریالایزر مربوط به بررسی درخواست مرغدار توسط شهرستان (تایید یا رد)
|
||||
class CityOperatorCheckRequestSerializer(serializers.ModelSerializer):
|
||||
poultry_request = PoultryRequestSerializer(read_only=True)
|
||||
quantity = serializers.SerializerMethodField('get_quantity')
|
||||
|
||||
# city_operator = CityOperatorSerializer()
|
||||
|
||||
class Meta:
|
||||
model = CityOperatorCheckRequest
|
||||
fields = '__all__'
|
||||
|
||||
def get_quantity(self, instance):
|
||||
allocated_number = 0
|
||||
returned_number = 0
|
||||
assignable_number = 0
|
||||
province_check_req = ProvinceCheckOperatorRequest.objects.filter(city_request_Poultry=instance)
|
||||
if province_check_req.count() > 0:
|
||||
province_check_req = province_check_req.last()
|
||||
assignable_number = province_check_req.quantity
|
||||
else:
|
||||
assignable_number = instance.poultry_request.quantity
|
||||
|
||||
province_kill_requests = ProvinceKillRequest.objects.filter(province_request__city_request_Poultry=instance,
|
||||
trash=False, state__in=('pending', 'accepted'))
|
||||
if province_kill_requests.count() > 0:
|
||||
for province_kill_request in province_kill_requests:
|
||||
if province_kill_request.return_to_province == False:
|
||||
allocated_number += province_kill_request.main_quantity
|
||||
else:
|
||||
returned_number += province_kill_request.main_quantity
|
||||
|
||||
quantity = {
|
||||
"allocated_number": allocated_number,
|
||||
"assignable_number": assignable_number,
|
||||
"returned_number": returned_number,
|
||||
}
|
||||
return quantity
|
||||
|
||||
|
||||
class CityOperatorForSubSectorSerializerForExcel(serializers.ModelSerializer):
|
||||
user = SystemUserProfileForGuildSerializer(read_only=True)
|
||||
wage_info = serializers.SerializerMethodField('get_wage_info')
|
||||
|
||||
class Meta:
|
||||
model = CityOperator
|
||||
fields = ['key', 'user', 'unit_name','wage_info']
|
||||
|
||||
|
||||
def get_wage_info(self, obj):
|
||||
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()
|
||||
|
||||
poultries = Poultry.objects.filter(city_operator=obj.unit_name,trash=False).order_by('id')
|
||||
info=get_city_sub_sector_finance_info_with_date(poultries,obj,date1,date2)
|
||||
return info
|
||||
Reference in New Issue
Block a user