forked from erp-dev/erp
feat: red flush
This commit is contained in:
@@ -53,10 +53,14 @@ class PurchaseOrderSerializer(serializers.ModelSerializer):
|
||||
'id', 'human_id', 'supplier', 'supplier_name', 'purchase_date', 'kind',
|
||||
'total_amount', 'diff_quantity', 'total_quantity',
|
||||
'operator', 'operator_name', 'warehouse', 'warehouse_name',
|
||||
'status', 'remarks', 'created_at', 'updated_at', 'items',
|
||||
'quantity_of_rolls',
|
||||
'status', 'is_red_flushed', 'red_flush_id', 'red_flushed_at',
|
||||
'remarks', 'created_at', 'updated_at', 'items', 'quantity_of_rolls',
|
||||
]
|
||||
read_only_fields = [
|
||||
'id', 'created_at', 'updated_at', 'items', 'supplier_name',
|
||||
'operator_name', 'warehouse_name', 'is_red_flushed',
|
||||
'red_flush_id', 'red_flushed_at',
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at', 'items', 'supplier_name', 'operator_name', 'warehouse_name']
|
||||
|
||||
|
||||
class PurchaseOrderPagination(pagination.LimitOffsetPagination):
|
||||
@@ -258,6 +262,46 @@ class PurchaseOrderReviewView(StockChangeViewMixin, views.APIView):
|
||||
return Response(PurchaseOrderSerializer(refreshed_order).data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class PurchaseOrderRedFlushSerializer(serializers.Serializer):
|
||||
reason = serializers.CharField(required=True, allow_blank=False, trim_whitespace=True)
|
||||
|
||||
|
||||
class PurchaseOrderRedFlushView(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'
|
||||
).prefetch_related('items').get(id=pk, merchant=merchant)
|
||||
except business_models.PurchaseOrder.DoesNotExist:
|
||||
return self.not_found_response('采购单不存在')
|
||||
|
||||
serializer = PurchaseOrderRedFlushSerializer(data=request.data or {})
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
try:
|
||||
red_flushed_order = business_services.red_flush_purchase_order(
|
||||
merchant=merchant,
|
||||
purchase_order=purchase_order,
|
||||
red_flushed_by=request.user,
|
||||
reason=serializer.validated_data['reason'],
|
||||
)
|
||||
except ValueError as exc:
|
||||
return Response({'error': str(exc)}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
refreshed_order = business_models.PurchaseOrder.objects.select_related(
|
||||
'supplier', 'operator', 'warehouse'
|
||||
).prefetch_related('items').get(id=red_flushed_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)
|
||||
|
||||
@@ -300,4 +344,3 @@ class PurchaseOrderBindStockChangeView(StockChangeViewMixin, views.APIView):
|
||||
},
|
||||
status=status.HTTP_200_OK,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user