feat: 打通采购申请与入库的按单入库链路
后端变更: - PurchaseRequest 新增 base_id 硬关联 MaterialBase,StockBuy 新增 request_id 关联采购单 - handle_inbound 支持 request_id 入参,入库后自动反写采购单状态为已完成 - 新增 get_approved_requests 接口,返回已审批未入库采购单列表(含物料信息+历史数据回退匹配) - create_purchase_request 新增 name+spec_model 自动匹配 MaterialBase - 新增 SQL 和 Alembic 数据库迁移脚本 前端变更: - 入库表单新增"从采购单导入"弹窗,支持搜索/选中已审批采购单并一键填充物料和商务信息 - 单价/总价交叉推算,缺项自动补全 - 选中行蓝色高亮+点击整行选中,行级交互优化
This commit is contained in:
@ -4,6 +4,7 @@ from pgvector.sqlalchemy import Vector
|
||||
import json
|
||||
# 显式导入 MaterialBase 以防 relationship 找不到引用
|
||||
from app.models.base import MaterialBase
|
||||
from app.models.purchase import PurchaseRequest
|
||||
|
||||
|
||||
class StockBuy(db.Model):
|
||||
@ -15,6 +16,8 @@ class StockBuy(db.Model):
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 批量 IN 查询高频列
|
||||
# [新增] 关联采购申请单,打通"按单入库"链路
|
||||
request_id = db.Column(db.Integer, db.ForeignKey('purchase_request.id'), index=True, comment='关联采购申请单ID')
|
||||
|
||||
# 身份标识
|
||||
sku = db.Column(db.String(100), index=True) # ★ 条码/SKU 快速定位
|
||||
@ -61,6 +64,7 @@ class StockBuy(db.Model):
|
||||
|
||||
# 关系定义
|
||||
base = db.relationship('MaterialBase', back_populates='stock_buys')
|
||||
purchase_request = db.relationship('PurchaseRequest', back_populates='stock_buys')
|
||||
|
||||
def to_dict(self):
|
||||
# 辅助解析函数
|
||||
@ -77,6 +81,9 @@ class StockBuy(db.Model):
|
||||
return {
|
||||
'id': self.id,
|
||||
'base_id': self.base_id,
|
||||
'request_id': self.request_id,
|
||||
# [新增] 采购申请单号(便于前端展示)
|
||||
'request_no': self.purchase_request.request_no if self.purchase_request else '',
|
||||
|
||||
# [修改] 增加公司名称
|
||||
'company_name': self.base.company_name if self.base else '',
|
||||
|
||||
Reference in New Issue
Block a user