1
0
forked from erp-dev/erp

fix: sales order retrieve, human_id for sales_order

This commit is contained in:
2026-01-29 19:29:58 +08:00
parent dffb4a3e03
commit cebaf85f6f
5 changed files with 55 additions and 3 deletions

View File

@@ -434,6 +434,10 @@ class SalesOrderAPITestCase(TestCase):
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertIn('id', response.data)
self.assertIn('human_id', response.data)
order = business_models.SalesOrder.objects.get(id=response.data['id'])
expected_human_id = f"{order.created_at.strftime('%Y%m%d')}{order.id:06d}"
self.assertEqual(response.data['human_id'], expected_human_id)
self.assertEqual(response.data['status'], business_models.SalesOrderStatusEnum.PENDING)
mock_delay.assert_not_called()
@@ -485,6 +489,16 @@ class SalesOrderAPITestCase(TestCase):
self.assertEqual(response.data['remarks'], '更新后的销售单')
self.assertEqual(response.data['quantity_of_rolls'], [[]])
def test_get_sales_order_detail_includes_human_id(self):
order_id = self._create_sales_order(self.strict_in_payload)
response = self.client.get(f'/api/v1/sales-orders/{order_id}/')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['id'], order_id)
self.assertIn('human_id', response.data)
order = business_models.SalesOrder.objects.get(id=order_id)
expected_human_id = f"{order.created_at.strftime('%Y%m%d')}{order.id:06d}"
self.assertEqual(response.data['human_id'], expected_human_id)
def test_update_sales_order_rejects_non_pending(self):
order_id = self._create_sales_order(self.strict_in_payload)
self.client.post(

View File

@@ -24,6 +24,7 @@ class SalesOrderItemSerializer(serializers.ModelSerializer):
class SalesOrderSerializer(serializers.ModelSerializer):
human_id = serializers.CharField(read_only=True)
total_amount = serializers.SerializerMethodField(read_only=True)
diff_quantity = serializers.SerializerMethodField(read_only=True)
total_quantity = serializers.SerializerMethodField(read_only=True)
@@ -49,7 +50,7 @@ class SalesOrderSerializer(serializers.ModelSerializer):
class Meta:
model = business_models.SalesOrder
fields = [
'id', 'customer', 'customer_name', 'sales_date', 'kind',
'id', 'human_id', 'customer', 'customer_name', 'sales_date', 'kind',
'total_amount', 'diff_quantity', 'total_quantity',
'operator', 'operator_name', 'warehouse', 'warehouse_name',
'status', 'remarks', 'created_at', 'updated_at', 'items',
@@ -133,6 +134,7 @@ class SalesOrderView(StockChangeViewMixin, views.APIView):
return Response(
{
'id': sales_order.id,
'human_id': sales_order.human_id,
'status': sales_order.status,
'message': '销售单创建成功,等待审批',
},
@@ -161,6 +163,12 @@ class SalesOrderDetailView(StockChangeViewMixin, views.APIView):
def patch(self, request, pk: int):
return self._update(request, pk)
def get(self, request, pk: int):
sales_order, error_response = self._get_order(request, pk)
if error_response:
return error_response
return Response(SalesOrderSerializer(sales_order).data, status=status.HTTP_200_OK)
def _update(self, request, pk: int):
sales_order, error_response = self._get_order(request, pk)
if error_response: