fix agencie share on pos device - fix validation bug of free product pos

This commit is contained in:
2025-10-05 17:01:21 +03:30
parent f36d767e1c
commit c3f745f5d0
11 changed files with 263 additions and 62 deletions

View File

@@ -128,13 +128,26 @@ class QuotaViewSet(SoftDeleteMixin, viewsets.ModelViewSet, DynamicSearchMixin):
)
livestock_age_limits.append(age_limit_creation_object)
# create quota price calculation items for final price types
price_calculation_items = []
if 'price_calculation_items' in request.data.keys():
for price_item in request.data['price_calculation_items']:
price_item.update({'quota': quota.id})
price_item_creation_object = CustomOperations().custom_create(
request=request,
view=QuotaPriceCalculationItemsViewSet(),
data=price_item
)
price_calculation_items.append(price_item_creation_object)
data = {
'quota': serializer.data,
'incentive_plan': plans_list, # noqa
'attribute_values': attributes_value_list,
'broker_values': broker_data_list,
'live_stock_allocations': allocations_list,
'livestock_age_limitations': livestock_age_limits
'livestock_age_limitations': livestock_age_limits,
'price_calculation_items': price_calculation_items
}
# call save method to generate id & calculate quota final price
@@ -241,13 +254,30 @@ class QuotaViewSet(SoftDeleteMixin, viewsets.ModelViewSet, DynamicSearchMixin):
)
livestock_age_limits.append(age_limit_creation_object)
# create quota price calculation items for final price types
price_calculation_items = []
if 'price_calculation_items' in request.data.keys():
# remove live stock age limit relations
quota.pricing_items.all().delete()
for price_item in request.data['price_calculation_items']:
price_item.update({'quota': quota.id})
price_item_creation_object = CustomOperations().custom_create(
request=request,
view=QuotaPriceCalculationItemsViewSet(),
data=price_item
)
price_calculation_items.append(price_item_creation_object)
data = {
'quota': serializer.data,
'incentive_plan': plans_list, # noqa
'attribute_values': attributes_value_list,
'broker_values': broker_data_list,
'live_stock_allocations': allocations_list,
'livestock_age_limitations': livestock_age_limits
'livestock_age_limitations': livestock_age_limits,
'price_calculation_items': price_calculation_items
}
# call save method to generate id & calculate quota final price
@@ -602,3 +632,13 @@ class QuotaLiveStockAgeLimitation(SoftDeleteMixin, viewsets.ModelViewSet):
return Response(status=status.HTTP_200_OK)
except APIException as e:
return Response(e, status=status.HTTP_204_NO_CONTENT)
class QuotaPriceCalculationItemsViewSet(viewsets.ModelViewSet):
queryset = product_models.QuotaPriceCalculationItems.objects.all().select_related('quota', 'pricing_type')
serializer_class = quota_serializers.QuotaPriceCalculationPriceItemsSerializer
class QuotaFinalPriceTypeViewSet(viewsets.ModelViewSet):
queryset = product_models.QuotaFinalPriceTypes.objects.all()
serializer_class = quota_serializers.QuotaFinalPriceTypeSerializer