refactor(backend): update financial record model, schema and expense claims

- models/financial_record.py: update financial record model
- schemas/reimbursement.py: update reimbursement schema
- services/expense_claims.py: update expense claims service
This commit is contained in:
caoxiaozhu
2026-05-13 06:54:27 +00:00
parent 9459476d82
commit 999872a060
3 changed files with 37 additions and 2 deletions

View File

@@ -44,6 +44,7 @@ class ExpenseClaim(Base):
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
)
employee = relationship("Employee", foreign_keys=[employee_id])
items = relationship(
"ExpenseClaimItem",
back_populates="claim",
@@ -51,6 +52,28 @@ class ExpenseClaim(Base):
order_by="asc(ExpenseClaimItem.item_date)",
)
@property
def employee_position(self) -> str | None:
return str(self.employee.position).strip() if self.employee is not None and self.employee.position else None
@property
def employee_grade(self) -> str | None:
return str(self.employee.grade).strip() if self.employee is not None and self.employee.grade else None
@property
def manager_name(self) -> str | None:
if self.employee is None:
return None
if self.employee.manager is not None and self.employee.manager.name:
return str(self.employee.manager.name).strip() or None
return None
@property
def role_labels(self) -> list[str]:
if self.employee is None or not self.employee.roles:
return []
return [str(role.name).strip() for role in sorted(self.employee.roles, key=lambda item: item.name) if role.name]
class ExpenseClaimItem(Base):
__tablename__ = "expense_claim_items"