add: add StockMovemendUpdate api

This commit is contained in:
behruz-dev
2025-08-29 15:18:03 +05:00
parent bcf85e090e
commit e981a5b42d
3 changed files with 42 additions and 1 deletions

View File

@@ -140,3 +140,28 @@ class StockMovemendListSerializer(serializers.ModelSerializer):
'id': obj.project.id,
'name': obj.project.name
} if obj.project else None
class StockMovemendProductUpdateSerializer(serializers.Serializer):
movemend_product_id = serializers.UUIDField()
quantity = serializers.IntegerField()
def validate(self, data):
movemend_product = StockMovmendProduct.objects.filter(id=data['movemend_product_id']).first()
if not movemend_product:
raise serializers.ValidationError("Stock Movemend Product not found")
if movemend_product.inventory.quantity < data['quantity']:
raise serializers.ValidationError("invalid quantity, quantity must les than product quantity")
data['movemend_product']
return data
class StockMovemendUpdateSerializer(serializers.ModelSerializer):
movemend_product = StockMovemendProductUpdateSerializer(many=True, required=False)
class Meta:
model = StockMovemend
fields = [
'wherehouse_from', 'project_folder', 'project', 'date',
'comment', 'movemend_product'
]
extra_kwargs = {'wherehouse_from': {'required': False}}

View File

@@ -35,6 +35,7 @@ urlpatterns = [
path('list/', stock_movemend_views.StockMovemendListApiView.as_view()),
path('<uuid:id>/delete/', stock_movemend_views.StockMovemendDeleteApiView.as_view()),
path('<uuid:stock_movemend_id>/remove/<uuid:stock_movemend_product_id>/', stock_movemend_views.StockMovemendProductRemoveApiView.as_view()),
path('<uuid:id>/update/', stock_movemend_views.StockMovemendUpdateApiView.as_view()),
]
)),
]

View File

@@ -100,3 +100,18 @@ class StockMovemendProductRemoveApiView(generics.GenericAPIView):
{'success': True, 'message': 'removed'},
status=200
)
class StockMovemendUpdateApiView(generics.GenericAPIView):
serializer_class = serializers.StockMovemendUpdateSerializer
queryset = StockMovemend.objects.all()
permission_classes = [HasRolePermission]
required_permissions = []
def patch(self, request, id):
stock_movemend = get_object_or_404(StockMovemend, id=id)
serializer = self.serializer_class(data=request.data, instance=stock_movemend, partial=True)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response({'success': True, 'message': 'updated!'}, status=200)
return Response({'success': False, 'error_message': serializer.errors}, status=400)