feat: 实现单价分离、班级转课、消课筛选和手动录入功能
Coze-Commit-Type: user Coze-User-ID: 3722323274763196 Coze-Conversation-ID: 5260473
This commit is contained in:
@@ -204,6 +204,8 @@ class StudentAccount(Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
student_id = db.Column(db.Integer, db.ForeignKey('students.id'), nullable=False)
|
||||
course_id = db.Column(db.Integer, db.ForeignKey('courses.id'), nullable=False)
|
||||
from_class_id = db.Column(db.Integer, db.ForeignKey('classes.id'))
|
||||
from_teacher_id = db.Column(db.Integer, db.ForeignKey('teachers.id'))
|
||||
normal_hours = db.Column(db.Numeric(10, 2), default=0)
|
||||
gifted_hours = db.Column(db.Numeric(10, 2), default=0)
|
||||
consumed_normal = db.Column(db.Numeric(10, 2), default=0)
|
||||
@@ -225,6 +227,8 @@ class StudentAccount(Model):
|
||||
|
||||
student = db.relationship('Student', backref='accounts')
|
||||
course = db.relationship('Course', backref='accounts')
|
||||
from_class = db.relationship('Class_', foreign_keys=[from_class_id])
|
||||
from_teacher = db.relationship('Teacher', foreign_keys=[from_teacher_id])
|
||||
monthly_snapshots = db.relationship('MonthlySnapshot', backref='account', lazy='dynamic')
|
||||
class_records = db.relationship('ClassRecord', backref='account', lazy='dynamic')
|
||||
|
||||
@@ -418,9 +422,21 @@ class TransferRecord(Model):
|
||||
to_student_id = db.Column(db.Integer, db.ForeignKey('students.id'))
|
||||
from_course_id = db.Column(db.Integer, db.ForeignKey('courses.id'), nullable=False)
|
||||
to_course_id = db.Column(db.Integer, db.ForeignKey('courses.id'))
|
||||
from_class_id = db.Column(db.Integer, db.ForeignKey('classes.id'))
|
||||
to_class_id = db.Column(db.Integer, db.ForeignKey('classes.id'))
|
||||
from_teacher_id = db.Column(db.Integer, db.ForeignKey('teachers.id'))
|
||||
to_teacher_id = db.Column(db.Integer, db.ForeignKey('teachers.id'))
|
||||
transfer_type = db.Column(db.String(20), nullable=False)
|
||||
# 转课类型:class_transfer(班级转课) / gift(转赠)
|
||||
transfer_class_type = db.Column(db.String(20), default='class_transfer')
|
||||
# 是否变更单价:no_change(无单价变更) / price_changed(有单价变更)
|
||||
price_change_type = db.Column(db.String(20), default='no_change')
|
||||
transfer_hours = db.Column(db.Numeric(10, 2), nullable=False)
|
||||
original_unit_price = db.Column(db.Numeric(10, 4))
|
||||
new_unit_price = db.Column(db.Numeric(10, 4))
|
||||
transfer_amount = db.Column(db.Numeric(10, 2))
|
||||
price_change_reason = db.Column(db.Text)
|
||||
effective_date = db.Column(db.Date)
|
||||
operator_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
|
||||
remark = db.Column(db.Text)
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
@@ -429,15 +445,27 @@ class TransferRecord(Model):
|
||||
to_student = db.relationship('Student', foreign_keys=[to_student_id], backref='transfers_in')
|
||||
from_course = db.relationship('Course', foreign_keys=[from_course_id])
|
||||
to_course = db.relationship('Course', foreign_keys=[to_course_id])
|
||||
from_class = db.relationship('Class_', foreign_keys=[from_class_id])
|
||||
to_class = db.relationship('Class_', foreign_keys=[to_class_id])
|
||||
from_teacher = db.relationship('Teacher', foreign_keys=[from_teacher_id])
|
||||
to_teacher = db.relationship('Teacher', foreign_keys=[to_teacher_id])
|
||||
operator = db.relationship('User', backref='transfer_operations')
|
||||
|
||||
def to_dict(self):
|
||||
return {'id': self.id, 'from_student_id': self.from_student_id,
|
||||
'to_student_id': self.to_student_id,
|
||||
'from_course_id': self.from_course_id, 'to_course_id': self.to_course_id,
|
||||
'from_class_id': self.from_class_id, 'to_class_id': self.to_class_id,
|
||||
'from_teacher_id': self.from_teacher_id, 'to_teacher_id': self.to_teacher_id,
|
||||
'transfer_type': self.transfer_type,
|
||||
'transfer_class_type': self.transfer_class_type,
|
||||
'price_change_type': self.price_change_type,
|
||||
'transfer_hours': float(self.transfer_hours or 0),
|
||||
'original_unit_price': float(self.original_unit_price or 0),
|
||||
'new_unit_price': float(self.new_unit_price or 0),
|
||||
'transfer_amount': float(self.transfer_amount or 0),
|
||||
'price_change_reason': self.price_change_reason,
|
||||
'effective_date': str(self.effective_date) if self.effective_date else None,
|
||||
'remark': self.remark,
|
||||
'created_at': str(self.created_at)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user