1
0
forked from erp-dev/erp
This commit is contained in:
2026-02-02 16:25:14 +08:00
parent 59c78b7c64
commit 3c56b9ea8b
3 changed files with 44 additions and 1 deletions

View File

@@ -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()

View File

@@ -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)

View File

@@ -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: