forked from erp-dev/erp
fix: order_description change to copy by rolling_warn of printing_order
This commit is contained in:
@@ -101,7 +101,8 @@ def _resolve_shipment_order_description(shipment: Shipment) -> str | None:
|
||||
)
|
||||
if printing_job is None or printing_job.printing_order is None:
|
||||
return None
|
||||
return printing_job.printing_order.description
|
||||
# 目前滚筒预警字段被放在了 printing_order 上,暂时沿用这个字段来返回订单描述;
|
||||
return printing_job.printing_order.rolling_warn
|
||||
|
||||
|
||||
class ShipmentSerializer(serializers.ModelSerializer):
|
||||
|
||||
@@ -1634,6 +1634,7 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
created_by=self.user1,
|
||||
external_order_id="QUERY-PO-001",
|
||||
description="查询订单备注",
|
||||
rolling_warn="查询滚筒预警",
|
||||
)
|
||||
self.printing_job1 = printing_models.PrintingJob.objects.create(
|
||||
merchant=self.merchant1,
|
||||
@@ -1694,7 +1695,7 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
self.assertIn("delivery_id", item)
|
||||
self.assertIsNone(item["delivery_id"])
|
||||
self.assertEqual(item["fabric"], "查询面料")
|
||||
self.assertEqual(item["order_description"], "查询订单备注")
|
||||
self.assertEqual(item["order_description"], "查询滚筒预警")
|
||||
self.assertEqual(item["area"], "A1")
|
||||
self.assertEqual(item["status"], shipment_models.ShipmentStatus.DRAFT)
|
||||
self.assertEqual(item["status_display"], "草稿(未发布)")
|
||||
@@ -1841,7 +1842,7 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
self.assertIn("delivery_id", result)
|
||||
self.assertIsNone(result["delivery_id"])
|
||||
self.assertEqual(result["fabric"], "查询面料")
|
||||
self.assertEqual(result["order_description"], "查询订单备注")
|
||||
self.assertEqual(result["order_description"], "查询滚筒预警")
|
||||
self.assertEqual(result["id"], self.shipment1.id)
|
||||
self.assertIn("area", result)
|
||||
self.assertEqual(result["area"], "A1")
|
||||
@@ -3052,6 +3053,8 @@ class ShipmentDeliveryAPITestCase(APITestCase):
|
||||
vehicle_trip="KD-007-D",
|
||||
created_by=self.user,
|
||||
)
|
||||
self.shipment1.delivery = delivery
|
||||
self.shipment1.save(update_fields=["delivery", "updated_at"])
|
||||
permission = Permission.objects.get(codename="cancel_shipmentdelivery")
|
||||
self.user.user_permissions.add(permission)
|
||||
|
||||
@@ -3071,9 +3074,11 @@ class ShipmentDeliveryAPITestCase(APITestCase):
|
||||
self.assertIsNotNone(data["cancelled_at"])
|
||||
|
||||
delivery.refresh_from_db()
|
||||
self.shipment1.refresh_from_db()
|
||||
self.assertEqual(delivery.status, shipment_models.ShipmentDeliveryStatus.CANCELLED)
|
||||
self.assertEqual(delivery.cancelled_by_id, self.user.id)
|
||||
self.assertIsNotNone(delivery.cancelled_at)
|
||||
self.assertEqual(self.shipment1.delivery_id, delivery.id)
|
||||
|
||||
def test_bind_shipments_to_existing_delivery_success(self):
|
||||
delivery = shipment_models.ShipmentDelivery.objects.create(
|
||||
|
||||
@@ -170,7 +170,7 @@ class AgentShipmentListSerializer(serializers.ModelSerializer):
|
||||
)
|
||||
if printing_job is None or printing_job.printing_order is None:
|
||||
return None
|
||||
return printing_job.printing_order.description
|
||||
return printing_job.printing_order.rolling_warn
|
||||
|
||||
def get_sales_items(self, obj):
|
||||
items = [i for i in obj.items.all() if i.delete_at is None]
|
||||
|
||||
@@ -46,7 +46,7 @@ Authorization: <AGENT_ACCESS_KEY>
|
||||
"customer": 5,
|
||||
"customer_name": "客户A",
|
||||
"fabric": "棉布 40S",
|
||||
"order_description": "订单备注",
|
||||
"order_description": "滚筒预警",
|
||||
"shipment_date": "2026-04-14",
|
||||
"address": "广州市天河区",
|
||||
"contact_name": "张三",
|
||||
@@ -157,7 +157,7 @@ Authorization: <AGENT_ACCESS_KEY>
|
||||
- "未出货"定义:`delivery` 为空,即尚未关联送货单
|
||||
- `delivery_id` 始终返回送货单ID;未关联时为 `null`
|
||||
- `fabric` 来自该出货单所关联销售品对应生产订单的 `fabric`;若当前出货单没有销售品则返回 `null`
|
||||
- `order_description` 来自该出货单所关联销售品对应生产订单的 `description`;若当前出货单没有销售品则返回 `null`
|
||||
- `order_description` 当前来自该出货单所关联销售品对应生产订单的 `rolling_warn`;若当前出货单没有销售品则返回 `null`
|
||||
- 结果按 `created_at` 降序排列
|
||||
- 只返回 `merchant_id` 对应商户的数据
|
||||
- `sales_items` 包含该出货单的所有销售品(软删除的条目自动排除)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
"customer": 1,
|
||||
"customer_name": "客户A",
|
||||
"fabric": "棉布 40S",
|
||||
"order_description": "订单备注",
|
||||
"order_description": "滚筒预警",
|
||||
"shipment_date": "2026-01-14",
|
||||
"status": 1,
|
||||
"status_display": "草稿(未发布)",
|
||||
@@ -82,7 +82,7 @@
|
||||
- `sales_items` 现在返回的是带图片字段的销售品详情结构
|
||||
- `delivery_id` 始终返回送货单ID;未绑定送货单时为 `null`
|
||||
- `fabric` 来自该出货单所关联销售品对应生产订单的 `fabric`;若当前出货单没有销售品,则返回 `null`
|
||||
- `order_description` 来自该出货单所关联销售品对应生产订单的 `description`;若当前出货单没有销售品,则返回 `null`
|
||||
- `order_description` 当前返回该出货单所关联销售品对应生产订单的 `rolling_warn`;若当前出货单没有销售品,则返回 `null`
|
||||
- `delivery_id=null` 不会触发过滤;如需按是否绑定送货单筛选,请使用 `delivery_isnull`
|
||||
- 若销售品关联的 `PrintingJob.product` 存在主图,则会返回 `product_image_url`
|
||||
- 若无关联图片,则 `product_image_url` 为 `null`
|
||||
@@ -231,7 +231,7 @@
|
||||
| customer | int | 客户ID |
|
||||
| customer_name | string | 客户名称 |
|
||||
| fabric | string/null | 面料;来自关联生产订单,若当前出货单没有销售品则为 null |
|
||||
| order_description | string/null | 订单备注;来自关联生产订单的 `description`,若当前出货单没有销售品则为 null |
|
||||
| order_description | string/null | 滚筒预警;来自关联生产订单的 `rolling_warn`,若当前出货单没有销售品则为 null |
|
||||
| shipment_date | string | 出货日期 |
|
||||
| delivery_id | int/null | 关联送货单ID;未绑定时为 null |
|
||||
| address | string | 地址 |
|
||||
|
||||
@@ -273,6 +273,7 @@ GET /api/v1/shipment/deliveries/?status=2&driver_name=张&vehicle_trip=001&limit
|
||||
- 写入 `cancelled_at`
|
||||
- 写入 `cancelled_by`
|
||||
- 同时会根据 `request.user.employee` 更新 `operator`
|
||||
- 取消不会释放或解绑当前已关联的出货单;如需解绑,需显式删除送货单或通过修改接口改绑
|
||||
- 已取消的送货单再次取消保持幂等
|
||||
|
||||
### 8. 追加绑定出货单到已有送货单
|
||||
|
||||
Reference in New Issue
Block a user