1
0
forked from erp-dev/erp

fix: order_quantity

This commit is contained in:
2026-01-30 21:08:38 +08:00
parent 16554c4f77
commit 1af18c9388
5 changed files with 78 additions and 0 deletions

View File

@@ -507,6 +507,18 @@ class SalesOrderAPITestCase(TestCase):
expected_human_id = f"XS{order.created_at.strftime('%Y%m%d')}{order.id:06d}"
self.assertEqual(response.data['human_id'], expected_human_id)
def test_get_sales_order_detail_includes_order_quantity_on_items(self):
payload = copy.deepcopy(self.strict_in_payload)
payload['items'][0]['order_quantity'] = 88
order_id = self._create_sales_order(payload)
response = self.client.get(f'/api/v1/sales-orders/{order_id}/')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertIn('items', response.data)
self.assertEqual(len(response.data['items']), 1)
self.assertIn('order_quantity', response.data['items'][0])
self.assertEqual(response.data['items'][0]['order_quantity'], 88)
def test_update_sales_order_rejects_non_pending(self):
order_id = self._create_sales_order(self.strict_in_payload)
self.client.post(

View File

@@ -169,6 +169,33 @@ class PrintingOrderAPITestCase(TestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK)
# 分页响应格式
self.assertEqual(response.data['count'], 2)
def test_list_printing_orders_default_excludes_invalid(self):
"""默认不返回作废订单;显式传 is_invalid=true 时可查询作废订单"""
printing_models.PrintingOrder.objects.create(
merchant=self.merchant,
customer=self.customer,
fabric='正常订单',
width='150cm',
is_invalid=False,
)
printing_models.PrintingOrder.objects.create(
merchant=self.merchant,
customer=self.customer,
fabric='作废订单',
width='150cm',
is_invalid=True,
)
response = self.client.get('/api/v1/printing-orders/')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['count'], 1)
self.assertEqual(response.data['results'][0]['is_invalid'], False)
response = self.client.get('/api/v1/printing-orders/?is_invalid=true')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['count'], 1)
self.assertEqual(response.data['results'][0]['is_invalid'], True)
def test_retrieve_printing_order(self):
"""测试获取订单详情"""

View File

@@ -540,6 +540,15 @@ class PlateOrderAPITestCase(TestCase):
else:
self.assertEqual(len(response.data), 1)
self.assertEqual(response.data[0]['is_invalid'], False)
response = self.client.get('/api/v1/plate-orders/?is_invalid=true')
self.assertEqual(response.status_code, status.HTTP_200_OK)
if isinstance(response.data, dict):
self.assertEqual(response.data['count'], 1)
self.assertEqual(response.data['results'][0]['is_invalid'], True)
else:
self.assertEqual(len(response.data), 1)
self.assertEqual(response.data[0]['is_invalid'], True)
def test_filter_by_plate_at_from(self):
"""测试按开版时间起始筛选(带时分秒)"""

View File

@@ -224,6 +224,12 @@ class PrintingOrderViewSet(CustomerVisibilityFilterMixin, LimitedModelViewSet):
def get_queryset(self):
"""优化查询"""
queryset = super().get_queryset()
# 默认不返回作废订单(仅 list如显式传入 is_invalid 参数,则交由 FilterSet 处理
# 注意:不能影响 activate/invalidate 等 action否则会因 get_object() 被过滤而 404。
if self.action == 'list' and self.request and 'is_invalid' not in self.request.query_params:
queryset = queryset.filter(is_invalid=False)
if self.action in ['list', 'retrieve']:
queryset = queryset.select_related('customer')
# 预取 printing_jobs 及其 business_object用于状态汇总统计
@@ -798,6 +804,12 @@ class PlateOrderViewSet(CustomerVisibilityFilterMixin, LimitedModelViewSet):
def get_queryset(self):
"""优化查询"""
queryset = super().get_queryset()
# 默认不返回作废订单(仅 list如显式传入 is_invalid 参数,则交由 FilterSet 处理
# 注意:不能影响 activate/invalidate 等 action否则会因 get_object() 被过滤而 404。
if self.action == 'list' and self.request and 'is_invalid' not in self.request.query_params:
queryset = queryset.filter(is_invalid=False)
if self.action in ['list', 'retrieve']:
queryset = queryset.select_related('customer', 'salesperson', 'merchandiser', 'business_object')
# 为搜索提供 design_code 的兜底(为空时使用主键字符串)