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:
@@ -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,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user