feat(outbound): 出库明细补记来源申请单 request_id
trans_outbound 原先只落了 applicant_id(申请人,phase8 加的),没有任何指回 outbound_approval 的外键。出库时 request_id 是强制必填、approval 对象也一直 在手上,但只把 applicant_id 复制过来就丢弃了 —— 于是从一条出库明细无法回答 「这是哪张申请单出的库」:单号 request_no、申请说明、明细快照 items_json 都在 申请单上,同一张单分几次扫码出库的明细也串不起来。 与 applicant_id 语义正交:applicant_id 是「人」(退回补发要挂回真正该拿东西 的人),request_id 是「那张单」(单据追溯用)。两者都由同一个 approval 带出。 存量行留 NULL 不回填 —— 与 phase8 同一个理由:历史出库与其来源审批单之间没有 任何可用关联,按单号/时间猜会重蹈「重名错绑」的覆辙。NULL 表示「产生于本列 上线之前」。 DDL 见 db_migrations/phase11_trans_outbound_request_link.sql —— 幂等 (ADD COLUMN IF NOT EXISTS),可重复执行,文件尾部自带核对 SELECT 与回滚段。 执行:docker exec -i inventory_db psql -U test -d inventory_system < 该文件
This commit is contained in:
@ -148,6 +148,15 @@ class TransOutbound(db.Model):
|
||||
# ⚠ 该列上线前的历史行为 NULL —— 存量出库与其来源审批单之间没有任何可用
|
||||
# 关联,无从回填;退回时由库管在选择器里明确指定。
|
||||
applicant_id = db.Column(db.Integer, index=True)
|
||||
# ★ 来源申请单ID:创建出库时从**关联审批单**带出(出库时 request_id 已强制
|
||||
# 必填,approval 恒非 None)。与上面的 applicant_id 语义正交 ——
|
||||
# applicant_id 是「人」,本列是「那张单」。
|
||||
# 为什么要它:原先只落了 applicant_id,从一条出库明细反查不到它属于哪张
|
||||
# 申请单(单号 request_no、申请说明、明细快照 items_json 都在申请单上)。
|
||||
# ⚠ 该列上线前的历史行为 NULL —— 存量出库与来源审批单之间没有任何可用关联,
|
||||
# 无从回填。
|
||||
# DDL 见 db_migrations/phase11_trans_outbound_request_link.sql
|
||||
request_id = db.Column(db.Integer, index=True)
|
||||
signature_path = db.Column(db.Text) # 电子签名图片路径
|
||||
outbound_time = db.Column(db.DateTime, default=beijing_time)
|
||||
operator_name = db.Column(db.String(100)) # 操作员
|
||||
@ -179,6 +188,7 @@ class TransOutbound(db.Model):
|
||||
'returnable_quantity': qty - returned,
|
||||
'unit_price': float(self.unit_price) if self.unit_price else 0,
|
||||
'consumer_name': self.consumer_name,
|
||||
'request_id': self.request_id,
|
||||
'signature_path': self.signature_path,
|
||||
'outbound_time': self.outbound_time.strftime('%Y-%m-%d %H:%M:%S') if self.outbound_time else None,
|
||||
'operator_name': self.operator_name,
|
||||
|
||||
Reference in New Issue
Block a user