1
0
forked from erp-dev/erp

feat: red flush and cost

This commit is contained in:
2026-06-22 22:27:28 +08:00
parent 9a1c92febf
commit 70b3a0d246
25 changed files with 1375 additions and 20 deletions

View File

@@ -55,12 +55,14 @@ class SalesOrderSerializer(serializers.ModelSerializer):
'total_amount', 'diff_quantity', 'total_quantity',
'operator', 'operator_name', 'warehouse', 'warehouse_name',
'status', 'is_red_flushed', 'red_flush_id', 'red_flushed_at',
'balance_before_snapshot',
'remarks', 'created_at', 'updated_at', 'items', 'quantity_of_rolls',
]
read_only_fields = [
'id', 'created_at', 'updated_at', 'items', 'customer_name',
'operator_name', 'warehouse_name', 'is_red_flushed',
'red_flush_id', 'red_flushed_at',
'balance_before_snapshot',
]
@@ -83,6 +85,29 @@ class SalesOrderView(StockChangeViewMixin, views.APIView):
queryset = business_models.SalesOrder.objects.filter(merchant=merchant).prefetch_related(
'items', 'customer', 'operator', 'warehouse'
)
# Query 参数过滤
qp = request.query_params
customer_id = qp.get('customer')
warehouse_id = qp.get('warehouse')
status_value = qp.get('status')
kind = qp.get('kind')
if customer_id:
try:
queryset = queryset.filter(customer_id=int(customer_id))
except (TypeError, ValueError):
pass
if warehouse_id:
try:
queryset = queryset.filter(warehouse_id=int(warehouse_id))
except (TypeError, ValueError):
pass
if status_value:
queryset = queryset.filter(status=status_value)
if kind:
queryset = queryset.filter(kind=kind)
paginator = self.pagination_class()
page = paginator.paginate_queryset(queryset.order_by('-created_at'), request, view=self)
serializer = SalesOrderSerializer(page, many=True)
@@ -145,6 +170,7 @@ class SalesOrderView(StockChangeViewMixin, views.APIView):
'id': sales_order.id,
'human_id': sales_order.human_id,
'status': sales_order.status,
'balance_before_snapshot': sales_order.balance_before_snapshot,
'message': '销售单创建成功,等待审批',
},
status=status.HTTP_201_CREATED,