From 3c56b9ea8bb7d586e305d3eae36ee0366060c480 Mon Sep 17 00:00:00 2001 From: colaftc Date: Mon, 2 Feb 2026 16:25:14 +0800 Subject: [PATCH] fix --- api_v1/test_pre_sales_allocation_api.py | 4 +++ api_v1/test_pre_sales_order_api.py | 40 ++++++++++++++++++++++++ api_v1/views/business/pre_sales/views.py | 1 - 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/api_v1/test_pre_sales_allocation_api.py b/api_v1/test_pre_sales_allocation_api.py index 3cae02f..d2ee5bd 100644 --- a/api_v1/test_pre_sales_allocation_api.py +++ b/api_v1/test_pre_sales_allocation_api.py @@ -114,6 +114,10 @@ class PreSalesAllocationAPITestCase(TestCase): self.assertEqual(resp.status_code, status.HTTP_201_CREATED) self.assertEqual(resp.data['stock_ids'], [self.stock_detail.id]) self.assertEqual(str(resp.data['quantity']), '5.50') + self.assertIn('stock_details', resp.data) + self.assertEqual(resp.data['stock_details'][0]['product_id'], self.product.id) + self.assertEqual(resp.data['stock_details'][0]['product_name'], self.product.name) + self.assertEqual(str(resp.data['stock_details'][0]['quantity']), '12.50') def test_cancel_allocation_record(self): order = self._create_order() diff --git a/api_v1/test_pre_sales_order_api.py b/api_v1/test_pre_sales_order_api.py index d9e6293..3e56f79 100644 --- a/api_v1/test_pre_sales_order_api.py +++ b/api_v1/test_pre_sales_order_api.py @@ -18,6 +18,7 @@ from basic_info.models import ( EmployeeStatusEnum, ) from business import models as business_models +from stock import models as stock_models from business import allocation_services from stock import models as stock_models @@ -127,6 +128,45 @@ class PreSalesOrderAPITestCase(TestCase): self.assertEqual(resp.data['id'], order_id) self.assertIn('items', resp.data) + def test_get_detail_includes_allocation_records_with_stock_details(self): + resp = self.client.post('/api/v1/pre-sales-orders/', self.payload, format='json') + self.assertEqual(resp.status_code, status.HTTP_201_CREATED) + order_id = resp.data['id'] + item_id = resp.data['items'][0]['id'] + + stock_record = stock_models.StockChangeRecord.objects.create( + merchant=self.merchant, + type=stock_models.StockChangeTypeEnum.ADD, + warehouse=self.warehouse, + source_type=stock_models.StockChangeSourceEnum.PURCHASE, + created_by=self.user, + ) + stock_detail = stock_models.StockChangeDetail.objects.create( + merchant=self.merchant, + product=self.product, + unit=ProductUnitEnum.METER, + stock_change_record=stock_record, + quantity='12.5', + ) + + create_resp = self.client.post( + f'/api/v1/pre-sales-order-items/{item_id}/allocations/', + { + 'stock_ids': [stock_detail.id], + 'quantity': '5.5', + 'unit': '米', + }, + format='json', + ) + self.assertEqual(create_resp.status_code, status.HTTP_201_CREATED) + + detail_resp = self.client.get(f'/api/v1/pre-sales-orders/{order_id}/') + self.assertEqual(detail_resp.status_code, status.HTTP_200_OK) + records = detail_resp.data['items'][0]['allocation_records'] + self.assertEqual(records[0]['stock_ids'], [stock_detail.id]) + self.assertEqual(records[0]['stock_details'][0]['product_id'], self.product.id) + self.assertEqual(records[0]['stock_details'][0]['product_name'], self.product.name) + def test_update_pre_sales_order(self): order_id = self._create() payload = copy.deepcopy(self.payload) diff --git a/api_v1/views/business/pre_sales/views.py b/api_v1/views/business/pre_sales/views.py index c96c91a..451a66d 100644 --- a/api_v1/views/business/pre_sales/views.py +++ b/api_v1/views/business/pre_sales/views.py @@ -61,7 +61,6 @@ class AllocationRecordSerializer(serializers.ModelSerializer): class StockChangeDetailShortcutSerializer(serializers.ModelSerializer): - product_id = serializers.IntegerField(source='product_id', read_only=True) product_name = serializers.CharField(source='product.name', read_only=True) class Meta: