forked from erp-dev/erp
feat: added remark field into shipment module
This commit is contained in:
@@ -92,6 +92,7 @@ class ExternalFinishedProductSerializer(serializers.ModelSerializer):
|
||||
'id',
|
||||
'style_name',
|
||||
'num_of_rolls',
|
||||
'remark',
|
||||
'created_at',
|
||||
'created_by_id',
|
||||
'created_by_name',
|
||||
@@ -129,6 +130,7 @@ class ExternalFinishedProductInputSerializer(serializers.Serializer):
|
||||
"""外部成品表写入结构(external create 专用)"""
|
||||
style_name = serializers.CharField(max_length=200)
|
||||
num_of_rolls = serializers.IntegerField(min_value=0)
|
||||
remark = serializers.CharField(max_length=200, required=False, allow_blank=True, allow_null=True, default='')
|
||||
|
||||
|
||||
class ShipmentCreateExternalSerializer(serializers.Serializer):
|
||||
|
||||
@@ -491,7 +491,7 @@ class ShipmentExternalCreateAPITestCase(TestCase):
|
||||
'remark': 'external 备注',
|
||||
'external_id': 'EXT-ORDER-001',
|
||||
'external_finished_products': [
|
||||
{'style_name': '款式A', 'num_of_rolls': 2},
|
||||
{'style_name': '款式A', 'num_of_rolls': 2, 'remark': 'A备注'},
|
||||
{'style_name': '款式B', 'num_of_rolls': 5},
|
||||
]
|
||||
}
|
||||
@@ -512,6 +512,9 @@ class ShipmentExternalCreateAPITestCase(TestCase):
|
||||
shipment_models.ExternalFinishedProduct.objects.filter(shipment_id=shipment_id).count(),
|
||||
2
|
||||
)
|
||||
efp_a = shipment_models.ExternalFinishedProduct.objects.filter(shipment_id=shipment_id, style_name='款式A').first()
|
||||
self.assertIsNotNone(efp_a)
|
||||
self.assertEqual(getattr(efp_a, 'remark', None) or '', 'A备注')
|
||||
|
||||
# 验证不会绑定任何销售品
|
||||
self.sales_item.refresh_from_db()
|
||||
@@ -655,6 +658,29 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
self.assertIn('external_finished_products', result)
|
||||
self.assertIsInstance(result['external_finished_products'], list)
|
||||
|
||||
def test_list_shipments_includes_external_finished_product_remark(self):
|
||||
"""
|
||||
Shipments list 需要附带 external_finished_products 明细数据(包含 remark 字段)。
|
||||
"""
|
||||
# 给 shipment1 挂一个外部成品表
|
||||
shipment_models.ExternalFinishedProduct.objects.create(
|
||||
shipment=self.shipment1,
|
||||
style_name='款式X',
|
||||
num_of_rolls=1,
|
||||
remark='X备注',
|
||||
created_by=self.user1,
|
||||
)
|
||||
|
||||
resp = self.client.get('/api/v1/shipment/shipments/')
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
data = resp.json()
|
||||
item = next(it for it in data['results'] if it['id'] == self.shipment1.id)
|
||||
efps = item['external_finished_products']
|
||||
self.assertIsInstance(efps, list)
|
||||
target = next(p for p in efps if p['style_name'] == '款式X')
|
||||
self.assertIn('remark', target)
|
||||
self.assertEqual(target['remark'], 'X备注')
|
||||
|
||||
def test_retrieve_other_merchant_shipment_404(self):
|
||||
resp = self.client.get(f'/api/v1/shipment/shipments/{self.shipment2.id}/')
|
||||
self.assertEqual(resp.status_code, status.HTTP_404_NOT_FOUND)
|
||||
|
||||
Reference in New Issue
Block a user