forked from erp-dev/erp
feat: mission replied calling task
This commit is contained in:
@@ -625,7 +625,7 @@ def modify_status(
|
||||
规则:
|
||||
- 草稿 -> 只能已发布
|
||||
- 已发布 -> 已审核 / 已驳回 / 已取消
|
||||
- 已驳回 -> 已审核 / 已取消
|
||||
- 已驳回 -> 已取消
|
||||
- 已审核 -> 已取消
|
||||
- 已取消 -> 不可再变
|
||||
- 重复设置同一状态保持幂等,直接返回
|
||||
@@ -642,7 +642,9 @@ def modify_status(
|
||||
ShipmentStatus.CANCELLED,
|
||||
},
|
||||
ShipmentStatus.REJECTED: {
|
||||
ShipmentStatus.APPROVED,
|
||||
# 驳回现在会解绑销售品并回退到待分配池。
|
||||
# 在没有重新绑定流程前,暂时关闭 REJECTED -> APPROVED,避免审核空出货单。
|
||||
# ShipmentStatus.APPROVED,
|
||||
ShipmentStatus.CANCELLED,
|
||||
},
|
||||
ShipmentStatus.APPROVED: {
|
||||
@@ -660,6 +662,22 @@ def modify_status(
|
||||
if target_status == ShipmentStatus.APPROVED and approved_by is None:
|
||||
raise ValueError("目标状态为已审核时,approved_by 不能为空")
|
||||
|
||||
update_fields = [
|
||||
"status",
|
||||
"status_modified_at",
|
||||
"cancelled_by",
|
||||
"approved_by",
|
||||
"updated_at",
|
||||
]
|
||||
|
||||
if target_status == ShipmentStatus.REJECTED:
|
||||
bound_sales_item_qs = SalesItem.objects.select_for_update().filter(shipment=shipment)
|
||||
shipment.rejected_sales_item_ids = list(
|
||||
bound_sales_item_qs.order_by("id").values_list("id", flat=True)
|
||||
)
|
||||
bound_sales_item_qs.update(shipment=None)
|
||||
update_fields.append("rejected_sales_item_ids")
|
||||
|
||||
shipment.status = target_status
|
||||
shipment.status_modified_at = timezone.now()
|
||||
|
||||
@@ -669,15 +687,7 @@ def modify_status(
|
||||
if target_status == ShipmentStatus.APPROVED:
|
||||
shipment.approved_by = approved_by
|
||||
|
||||
shipment.save(
|
||||
update_fields=[
|
||||
"status",
|
||||
"status_modified_at",
|
||||
"cancelled_by",
|
||||
"approved_by",
|
||||
"updated_at",
|
||||
]
|
||||
)
|
||||
shipment.save(update_fields=update_fields)
|
||||
return shipment
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user