1
0
forked from erp-dev/erp

feat: added filter param for stock record list api. Support purchase order bind stock change record that is already exists

This commit is contained in:
2026-02-03 18:48:44 +08:00
parent b2d252875e
commit f2243a02f4
9 changed files with 379 additions and 2 deletions

View File

@@ -253,3 +253,47 @@ class PurchaseOrderReviewView(StockChangeViewMixin, views.APIView):
).prefetch_related('items').get(id=purchase_order.id)
return Response(PurchaseOrderSerializer(refreshed_order).data, status=status.HTTP_200_OK)
class PurchaseOrderBindStockChangeSerializer(serializers.Serializer):
stock_change_record_id = serializers.IntegerField(min_value=1)
class PurchaseOrderBindStockChangeView(StockChangeViewMixin, views.APIView):
"""采购单绑定库存记录"""
permission_classes = [IsAuthenticated]
def post(self, request, pk: int):
if not self.check_employee_permission(request):
return self.permission_error_response('无权限访问')
merchant = request.user.employee.merchant
try:
purchase_order = business_models.PurchaseOrder.objects.select_related(
'supplier', 'operator', 'warehouse'
).get(id=pk, merchant=merchant)
except business_models.PurchaseOrder.DoesNotExist:
return self.not_found_response('采购单不存在')
serializer = PurchaseOrderBindStockChangeSerializer(data=request.data or {})
serializer.is_valid(raise_exception=True)
stock_change_record_id = serializer.validated_data['stock_change_record_id']
try:
record = business_services.bind_purchase_order_stock_change_record(
purchase_order_id=purchase_order.id,
stock_change_record_id=stock_change_record_id,
operator=request.user,
)
except ValueError as exc:
return Response({'error': str(exc)}, status=status.HTTP_400_BAD_REQUEST)
return Response(
{
'purchase_order_id': purchase_order.id,
'stock_change_record_id': record.id,
'message': '采购单已绑定库存记录',
},
status=status.HTTP_200_OK,
)