diff --git a/inventory-backend/app/models/inbound/stocktake.py b/inventory-backend/app/models/inbound/stocktake.py index f8f9f39..3c93fbe 100644 --- a/inventory-backend/app/models/inbound/stocktake.py +++ b/inventory-backend/app/models/inbound/stocktake.py @@ -26,6 +26,8 @@ class StocktakeDraft(db.Model): stock_qty = db.Column(db.Numeric(19, 4), default=0) # 差异数量 (实盘 - 账面, 正=盘盈, 负=盘亏) diff_qty = db.Column(db.Numeric(19, 4), default=0) + # 盘点备注(可选) + remark = db.Column(db.String(255), comment='盘点备注(可选)') def to_dict(self): return { @@ -38,5 +40,51 @@ class StocktakeDraft(db.Model): 'source_table': self.source_table, 'stock_id': self.stock_id, 'stock_qty': float(self.stock_qty or 0), - 'diff_qty': float(self.diff_qty or 0) + 'diff_qty': float(self.diff_qty or 0), + 'remark': self.remark + } + + +class StockAdjustment(db.Model): + """ + 盘盈盘亏调整表 + 记录盘点后的库存调整业务 + """ + __tablename__ = 'stock_adjustment' + + id = db.Column(db.Integer, primary_key=True) + # 调整单号(ADJ-日期-流水) + order_no = db.Column(db.String(64), unique=True, index=True, comment='调整单号') + # 关联物料基础表ID + base_id = db.Column(db.Integer, index=True, comment='关联物料基础表ID') + # SKU + sku = db.Column(db.String(128), index=True, comment='SKU') + # 库位 + warehouse_location = db.Column(db.String(128), comment='库位') + # 类型:盘盈 / 盘亏 + adjust_type = db.Column(db.String(20), comment='类型:盘盈/盘亏') + # 调整数量(绝对值) + adjust_quantity = db.Column(db.Integer, nullable=False, comment='调整数量(绝对值)') + # 调整原因(必填) + reason = db.Column(db.String(255), nullable=False, comment='调整原因(必填)') + # 状态 + status = db.Column(db.String(20), default='已完成', comment='状态') + # 经办人 + operator = db.Column(db.String(64), comment='经办人') + # 创建时间 + create_time = db.Column(db.DateTime, default=beijing_time) + + def to_dict(self): + return { + 'id': self.id, + 'order_no': self.order_no, + 'base_id': self.base_id, + 'sku': self.sku, + 'warehouse_location': self.warehouse_location, + 'adjust_type': self.adjust_type, + 'adjust_quantity': self.adjust_quantity, + 'reason': self.reason, + 'status': self.status, + 'operator': self.operator, + 'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S') if self.create_time else None }