feat: 采购申请新增库管'完结'功能(仿出库审批)
- 后端:approve 接口支持 action=close(已通过→已完结 status 1→4),模型 status_text 支持已完结 - 前端:采购申请状态tab加'已完结',已通过单显示'完结'按钮(库管)
This commit is contained in:
@ -206,7 +206,7 @@ def approve_purchase_request(purchase_id):
|
||||
action = data.get('action', 'approve')
|
||||
reject_reason = data.get('reject_reason')
|
||||
|
||||
if action not in ('approve', 'reject'):
|
||||
if action not in ('approve', 'reject', 'close'):
|
||||
return jsonify({'code': 400, 'msg': '无效的审批操作'}), 400
|
||||
|
||||
if action == 'reject' and not reject_reason:
|
||||
@ -219,7 +219,7 @@ def approve_purchase_request(purchase_id):
|
||||
reject_reason=reject_reason
|
||||
)
|
||||
|
||||
msg = '审批通过' if action == 'approve' else '已驳回'
|
||||
msg = '审批通过' if action == 'approve' else ('已驳回' if action == 'reject' else '已完结')
|
||||
# ★ Fail-Closed: 审批响应剥离价格字段
|
||||
resp = purchase.to_dict()
|
||||
for k in ('unit_price', 'total_price', 'tax_rate'):
|
||||
|
||||
@ -91,7 +91,7 @@ class PurchaseRequest(db.Model):
|
||||
'total_price': float(self.total_price) if self.total_price else 0,
|
||||
'tax_rate': float(self.tax_rate) if self.tax_rate else 0,
|
||||
'status': self.status,
|
||||
'status_text': ['待审批', '已通过', '已驳回', '已完成'][self.status] if self.status in [0, 1, 2, 3] else '未知',
|
||||
'status_text': ['待审批', '已通过', '已驳回', '已完成', '已完结'][self.status] if self.status in [0, 1, 2, 3, 4] else '未知',
|
||||
'requester_id': self.requester_id,
|
||||
'requester_name': self._get_user_name(self.requester_id),
|
||||
'requester_email': self._get_user_email(self.requester_id),
|
||||
|
||||
@ -145,12 +145,22 @@ class PurchaseService:
|
||||
if not purchase:
|
||||
raise ValueError("采购申请不存在")
|
||||
|
||||
if purchase.status != 0:
|
||||
raise ValueError("当前状态不允许审批")
|
||||
|
||||
beijing_tz = timezone(timedelta(hours=8))
|
||||
now = datetime.now(beijing_tz)
|
||||
|
||||
# ★ 完结:库管将「已通过(1)」的申请单置为「已完结(4)」(仿出库审批)
|
||||
if action == 'close':
|
||||
if purchase.status != 1:
|
||||
raise ValueError("仅「已通过」的采购申请可完结")
|
||||
purchase.status = 4
|
||||
purchase.approver_id = user_id
|
||||
purchase.approved_at = now
|
||||
db.session.commit()
|
||||
return purchase
|
||||
|
||||
if purchase.status != 0:
|
||||
raise ValueError("当前状态不允许审批")
|
||||
|
||||
if action == 'approve':
|
||||
purchase.status = 1
|
||||
purchase.approver_id = user_id
|
||||
|
||||
Reference in New Issue
Block a user