Merge branch 'main' of https://github.com/MNPC-IR/Rasaddam_Backend into development

This commit is contained in:
2025-11-05 09:45:33 +03:30
4 changed files with 1926 additions and 14 deletions

View File

@@ -44,9 +44,30 @@ def pos_organizations_sharing_information(
"agency": False, "agency": False,
"default_account": item.default "default_account": item.default
}) })
else:
sharing_information_list.append({
"organization_name": "تعاونی دامداران فامنین",
"bank_account": {
"credit_card": "2222222222222222",
"sheba": "666666666666666666",
"account": "4444444444444444444444",
},
"broker": "تعاونی",
"amount": 1600,
# """
# if we will need to get agencies share amount, we can use this bellow code
#
# # item.holders_share_amount.filter(quota_distribution=distribution).first().share_amount
# # if item.holders_share_amount.filter(quota_distribution=distribution).exists() else None
# """
"agency": False,
"default_account": True
})
# if device owner is an agency organization # if device owner is an agency organization
if owner_org.type.name == 'AGC': print(sharing_information_list)
if owner_org.type.key == 'AGC':
sharing_information_list = agency_organization_pos_info( sharing_information_list = agency_organization_pos_info(
agency=owner_org, agency=owner_org,
pos_sharing_list=sharing_information_list, pos_sharing_list=sharing_information_list,
@@ -74,6 +95,7 @@ def agency_organization_pos_info(
).first().holders_share_amount.filter( ).first().holders_share_amount.filter(
quota_distribution=distribution quota_distribution=distribution
) )
agc_share_amount = agc_share_amount.first().share_amount if agc_share_amount else None agc_share_amount = agc_share_amount.first().share_amount if agc_share_amount else None
# calculate agency parent share amount # calculate agency parent share amount
@@ -94,6 +116,7 @@ def agency_organization_pos_info(
}) })
return pos_sharing_list return pos_sharing_list
return None
def get_organization_by_stake_holder(id: int = None, stake_holder: StakeHolders = None) -> typing.Any: def get_organization_by_stake_holder(id: int = None, stake_holder: StakeHolders = None) -> typing.Any:

View File

@@ -1,19 +1,18 @@
from apps.product.pos.api.v1.serializers import quota_distribution_serializers as distribution_serializers from django.db import transaction
from apps.pos_device.mixins.pos_device_mixin import POSDeviceMixin from rest_framework import status
from apps.core.mixins.search_mixin import DynamicSearchMixin from rest_framework import viewsets
from apps.core.pagination import CustomPageNumberPagination from rest_framework.decorators import action
from apps.warehouse.services.services import can_buy_from_inventory
from common.helpers import get_organization_by_user
from rest_framework.exceptions import APIException from rest_framework.exceptions import APIException
from apps.product import models as product_models
from rest_framework.permissions import AllowAny from rest_framework.permissions import AllowAny
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.decorators import action
from rest_framework import viewsets, filters from apps.core.mixins.search_mixin import DynamicSearchMixin
from apps.core.pagination import CustomPageNumberPagination
from apps.herd.models import Rancher from apps.herd.models import Rancher
from rest_framework import status from apps.pos_device.mixins.pos_device_mixin import POSDeviceMixin
from django.db import transaction from apps.product import models as product_models
from django.db.models import Q from apps.product.pos.api.v1.serializers import quota_distribution_serializers as distribution_serializers
from apps.warehouse.services.services import can_buy_from_inventory
def trash(queryset, pk): # noqa def trash(queryset, pk): # noqa
@@ -102,6 +101,7 @@ class QuotaDistributionViewSet(viewsets.ModelViewSet, DynamicSearchMixin, POSDev
can_buy_from_inventory(rancher.first(), distribution=distribution) & rancher.exists() can_buy_from_inventory(rancher.first(), distribution=distribution) & rancher.exists()
) )
] ]
print(device)
# paginate & response # paginate & response
page = self.paginate_queryset(available_distributions) # noqa page = self.paginate_queryset(available_distributions) # noqa

View File

@@ -65,7 +65,10 @@ class QuotaDistributionSerializer(serializers.ModelSerializer):
if total + amount > quota.quota_weight: if total + amount > quota.quota_weight:
raise QuotaWeightException() raise QuotaWeightException()
else: else:
if parent_distribution.weight + amount > parent_distribution.weight: children_total = parent_distribution.children.all().aggregate(
total=models.Sum('weight')
)['total'] or 0
if children_total + amount > parent_distribution.weight:
raise QuotaWeightException() raise QuotaWeightException()
if self.instance: if self.instance:

1886
logs/django_requests.log Normal file

File diff suppressed because it is too large Load Diff