新增订单收票付款交货跟进并完善使用升级手册
增加部分付款和部分交货状态、工作台筛选、权限校验、跟进记录及 v4 数据迁移;补充 Windows EXE 构建与验收脚本。附 16 页 PDF 使用升级手册及企业微信详细配置说明、生成脚本和测试截图。验证:76 项回归测试、EXE 浏览器验收与 PDF 逐页校验通过。
This commit is contained in:
+34
-1
@@ -58,6 +58,10 @@ ROLE_TEXT = {
|
||||
"approver": u"审批员",
|
||||
}
|
||||
|
||||
INVOICE_STATUS = {'unknown': '未登记', 'pending': '未收票', 'received': '已收票'}
|
||||
DELIVERY_STATUS = {'unknown': '未登记', 'pending': '未交货', 'partial': '部分交货', 'delivered': '已交货'}
|
||||
PAYMENT_STATUS = {'unknown': '未登记', 'unpaid': '未付款', 'partial': '部分付款', 'paid': '已付款'}
|
||||
|
||||
|
||||
class User(Base):
|
||||
__tablename__ = "users"
|
||||
@@ -135,6 +139,15 @@ class Order(Base):
|
||||
approved_by_id = Column(Integer, ForeignKey('users.id'))
|
||||
revision = Column(Integer, nullable=False, default=0)
|
||||
row_version = Column(Integer, nullable=False, default=1)
|
||||
needs_prepayment = Column(Boolean, nullable=False, default=False)
|
||||
invoice_status = Column(String(20), nullable=False, default='pending')
|
||||
delivery_status = Column(String(20), nullable=False, default='pending')
|
||||
payment_status = Column(String(20), nullable=False, default='unpaid')
|
||||
payment_date = Column(String(10), nullable=False, default='')
|
||||
fulfillment_note = Column(Text, nullable=False, default='')
|
||||
payment_note = Column(Text, nullable=False, default='')
|
||||
fulfillment_revision = Column(Integer, nullable=False, default=-1)
|
||||
payment_revision = Column(Integer, nullable=False, default=-1)
|
||||
__mapper_args__ = {'version_id_col': row_version}
|
||||
|
||||
items = relationship("OrderItem", backref="order", cascade="all, delete-orphan",
|
||||
@@ -151,6 +164,26 @@ class Order(Base):
|
||||
def doc_type_text(self):
|
||||
return DOC_TYPES.get(self.doc_type, self.doc_type)
|
||||
|
||||
@property
|
||||
def invoice_status_text(self):
|
||||
return INVOICE_STATUS.get(self.invoice_status, '未登记')
|
||||
|
||||
@property
|
||||
def delivery_status_text(self):
|
||||
return DELIVERY_STATUS.get(self.delivery_status, '未登记')
|
||||
|
||||
@property
|
||||
def payment_status_text(self):
|
||||
return PAYMENT_STATUS.get(self.payment_status, '未登记')
|
||||
|
||||
@property
|
||||
def fulfillment_stale(self):
|
||||
return self.fulfillment_revision >= 0 and self.fulfillment_revision != self.revision
|
||||
|
||||
@property
|
||||
def payment_stale(self):
|
||||
return self.payment_revision >= 0 and self.payment_revision != self.revision
|
||||
|
||||
|
||||
class OrderItem(Base):
|
||||
__tablename__ = "order_items"
|
||||
@@ -244,5 +277,5 @@ def init_db(db_path):
|
||||
Base.metadata.create_all(engine)
|
||||
if not existed:
|
||||
with engine.connect() as con:
|
||||
con.exec_driver_sql('PRAGMA user_version=3')
|
||||
con.exec_driver_sql('PRAGMA user_version=4')
|
||||
return engine, sessionmaker(bind=engine)
|
||||
|
||||
Reference in New Issue
Block a user