1
0
forked from erp-dev/erp

fix: added some fields to business.statements api

This commit is contained in:
2025-12-12 17:06:17 +08:00
parent 9e1f994416
commit 4c9b8e6a42
8 changed files with 351 additions and 5 deletions

View File

@@ -1283,9 +1283,13 @@ class StatementRecordAPITestCase(TestCase):
sales_order=self.sales_order,
product=self.product,
price=Decimal('12.50'),
color='',
quantity=Decimal('5'),
unit='',
empty_diff_percent=Decimal('0'),
quantity_of_rolls='2,3',
num_of_rolls=2,
spec='32S',
)
self.purchase_order = business_models.PurchaseOrder.objects.create(
@@ -1300,9 +1304,13 @@ class StatementRecordAPITestCase(TestCase):
purchase_order=self.purchase_order,
product=self.product,
price=Decimal('8.30'),
color='',
quantity=Decimal('10'),
unit='',
empty_diff_percent=Decimal('0'),
quantity_of_rolls='6,4',
num_of_rolls=2,
spec='40S',
)
def test_get_customer_sales_order_record(self):
@@ -1323,6 +1331,14 @@ class StatementRecordAPITestCase(TestCase):
self.assertEqual(record['source_type'], 'sales_order')
self.assertEqual(record['source_id'], self.sales_order.id)
self.assertEqual(record['counterparty'], self.customer.id)
self.assertIsNotNone(record.get('warehouse'))
self.assertEqual(record['warehouse']['id'], self.warehouse.id)
self.assertEqual(record['warehouse']['name'], self.warehouse.name)
self.assertTrue(record['items'])
self.assertEqual(record['items'][0]['color'], '')
self.assertEqual(record['items'][0]['spec'], '32S')
self.assertEqual(record['items'][0]['quantity_of_rolls'], [2, 3])
self.assertEqual(record['items'][0]['num_of_rolls'], 2)
def test_get_supplier_purchase_order_record(self):
response = self.client.get(
@@ -1339,6 +1355,14 @@ class StatementRecordAPITestCase(TestCase):
self.assertEqual(record['source_type'], 'purchase_order')
self.assertEqual(record['source_id'], self.purchase_order.id)
self.assertEqual(record['counterparty'], self.supplier.id)
self.assertIsNotNone(record.get('warehouse'))
self.assertEqual(record['warehouse']['id'], self.warehouse.id)
self.assertEqual(record['warehouse']['name'], self.warehouse.name)
self.assertTrue(record['items'])
self.assertEqual(record['items'][0]['color'], '')
self.assertEqual(record['items'][0]['spec'], '40S')
self.assertEqual(record['items'][0]['quantity_of_rolls'], [6, 4])
self.assertEqual(record['items'][0]['num_of_rolls'], 2)
def test_statement_record_not_found(self):
response = self.client.get(

View File

@@ -1,8 +1,20 @@
from rest_framework import serializers
from basic_info import models as basic_models
from business import services as business_services
class StatementWarehouseSerializer(serializers.ModelSerializer):
"""对账单中使用的仓库序列化器(输出完整仓库数据)"""
type_label = serializers.CharField(source='get_type_display', read_only=True)
mode_label = serializers.CharField(source='get_mode_display', read_only=True)
class Meta:
model = basic_models.WareHouse
fields = '__all__'
class StatementRecordSerializer(serializers.Serializer):
source_type = serializers.CharField()
source_label = serializers.CharField()
@@ -13,6 +25,7 @@ class StatementRecordSerializer(serializers.Serializer):
status_label = serializers.CharField()
counterparty = serializers.IntegerField()
counterparty_name = serializers.CharField()
warehouse = StatementWarehouseSerializer(allow_null=True)
positive_amount = serializers.DecimalField(max_digits=15, decimal_places=2)
negative_amount = serializers.DecimalField(max_digits=15, decimal_places=2)
cumulative_amount = serializers.CharField()