Merge remote-tracking branch 'origin' into development
This commit is contained in:
@@ -14,9 +14,9 @@ from apps.warehouse.models import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
LIVESTOCK_GROPES = {
|
LIVESTOCK_GROPES = {
|
||||||
'I': 'industrial', # صنعتی
|
'industrial': 'I', # صنعتی
|
||||||
'V': 'rural', # روستایی
|
'rural': 'V', # روستایی
|
||||||
'N': 'nomadic' # عشایری
|
'nomadic': 'N' # عشایری
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -54,6 +54,30 @@ def get_rancher_statistics(rancher: Rancher = None) -> typing.Any:
|
|||||||
return [{'name': key, 'value': value} for key, value in stats.items()], stats
|
return [{'name': key, 'value': value} for key, value in stats.items()], stats
|
||||||
|
|
||||||
|
|
||||||
|
def get_rancher_statistic_by_herd(rancher: Rancher = None) -> typing.Any:
|
||||||
|
""" get statistics of a rancher by his herds """ # noqa
|
||||||
|
|
||||||
|
herds = rancher.herd.all()
|
||||||
|
if herds.exists():
|
||||||
|
stats = herds.aggregate(
|
||||||
|
herd_count=Count("id", distinct=True),
|
||||||
|
light_count=Sum('light_livestock_number'),
|
||||||
|
heavy_count=Sum('heavy_livestock_number'),
|
||||||
|
sheep=Sum('light_livestock_number'), # noqa
|
||||||
|
cow=Sum('heavy_livestock_number'),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
stats = {
|
||||||
|
'herd_count': 0,
|
||||||
|
'light_count': 0,
|
||||||
|
'heavy_count': 0,
|
||||||
|
'sheep': 0,
|
||||||
|
'cow': 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
return [{'name': key, 'value': value} for key, value in stats.items()], stats
|
||||||
|
|
||||||
|
|
||||||
def rancher_quota_weight(
|
def rancher_quota_weight(
|
||||||
rancher: Rancher,
|
rancher: Rancher,
|
||||||
inventory_entry: InventoryEntry = None,
|
inventory_entry: InventoryEntry = None,
|
||||||
@@ -85,8 +109,11 @@ def rancher_quota_weight(
|
|||||||
allocations = list(quota.livestock_allocations.all().select_related('livestock_type'))
|
allocations = list(quota.livestock_allocations.all().select_related('livestock_type'))
|
||||||
# list of quota incentive plans
|
# list of quota incentive plans
|
||||||
incentive_plans = list(quota.incentive_assignments.all().select_related('livestock_type'))
|
incentive_plans = list(quota.incentive_assignments.all().select_related('livestock_type'))
|
||||||
|
# list of rancher herds
|
||||||
|
herds = rancher.herd.all()
|
||||||
|
herd_livestock_gropes = [herd.activity for herd in herds]
|
||||||
|
|
||||||
livestock_counts_list, livestock_counts_dict = get_rancher_statistics(rancher)
|
livestock_counts_list, livestock_counts_dict = get_rancher_statistic_by_herd(rancher)
|
||||||
|
|
||||||
total_weight = 0
|
total_weight = 0
|
||||||
merged = {}
|
merged = {}
|
||||||
@@ -94,7 +121,7 @@ def rancher_quota_weight(
|
|||||||
# calculate quota base weight by livestock type & base total weight
|
# calculate quota base weight by livestock type & base total weight
|
||||||
for item in allocations: # noqa
|
for item in allocations: # noqa
|
||||||
if item.livestock_type:
|
if item.livestock_type:
|
||||||
if rancher.activity and LIVESTOCK_GROPES[rancher.activity] == item.livestock_group:
|
if LIVESTOCK_GROPES[item.livestock_group] in herd_livestock_gropes:
|
||||||
animal_type_fa = item.livestock_type.name
|
animal_type_fa = item.livestock_type.name
|
||||||
animal_type_en = item.livestock_type.en_name
|
animal_type_en = item.livestock_type.en_name
|
||||||
per_head = item.quantity_kg
|
per_head = item.quantity_kg
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from rest_framework.response import Response
|
|||||||
|
|
||||||
from apps.core.mixins.search_mixin import DynamicSearchMixin
|
from apps.core.mixins.search_mixin import DynamicSearchMixin
|
||||||
from apps.core.mixins.soft_delete_mixin import SoftDeleteMixin
|
from apps.core.mixins.soft_delete_mixin import SoftDeleteMixin
|
||||||
|
from apps.core.models import Wage
|
||||||
from apps.pos_device import models as pos_models
|
from apps.pos_device import models as pos_models
|
||||||
from apps.pos_device.mixins.pos_device_mixin import POSDeviceMixin
|
from apps.pos_device.mixins.pos_device_mixin import POSDeviceMixin
|
||||||
from apps.product import models as product_models
|
from apps.product import models as product_models
|
||||||
@@ -106,7 +107,7 @@ class POSFreeProductsViewSet(SoftDeleteMixin, viewsets.ModelViewSet, DynamicSear
|
|||||||
request.data.update({
|
request.data.update({
|
||||||
'organization': organization.id,
|
'organization': organization.id,
|
||||||
'device': device.id,
|
'device': device.id,
|
||||||
'company_fee': product_models.Broker.objects.get(organization=organization).company_fee,
|
'company_fee': Wage.get(key='MNPC'), # noqa
|
||||||
})
|
})
|
||||||
|
|
||||||
serializer = product_serializers.POSFreeProductSerializer(data=request.data, context={'device': device})
|
serializer = product_serializers.POSFreeProductSerializer(data=request.data, context={'device': device})
|
||||||
|
|||||||
@@ -147,8 +147,7 @@ class InventoryQuotaSaleTransactionViewSet(BaseViewSet, SoftDeleteMixin, Dynamic
|
|||||||
list of transactions
|
list of transactions
|
||||||
filter by: search, all, my_transactions
|
filter by: search, all, my_transactions
|
||||||
"""
|
"""
|
||||||
print("ssss")
|
queryset = self.filter_query(self.get_queryset(visibility_by_org_scope=True).order_by('-create_date'))
|
||||||
queryset = self.filter_query(self.get_queryset(visibility_by_org_scope=True))
|
|
||||||
|
|
||||||
# paginate & response
|
# paginate & response
|
||||||
page = self.paginate_queryset(queryset)
|
page = self.paginate_queryset(queryset)
|
||||||
|
|||||||
Reference in New Issue
Block a user