advance.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. from typing import Optional
  2. from pydantic import BaseModel, ConfigDict, Field
  3. from pydantic.alias_generators import to_camel
  4. from app.schemas.common import DatetimeToStr, OptDatetimeToStr
  5. class AdvanceApplyCreate(BaseModel):
  6. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  7. reason: str
  8. purpose: Optional[str] = None
  9. amount: float
  10. remark: Optional[str] = None
  11. expense_item_id: Optional[int] = None
  12. class AdvanceApplyUpdate(BaseModel):
  13. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  14. reason: Optional[str] = None
  15. purpose: Optional[str] = None
  16. amount: Optional[float] = None
  17. remark: Optional[str] = None
  18. expense_item_id: Optional[int] = None
  19. class AdvanceApplyOut(BaseModel):
  20. model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel)
  21. id: int
  22. apply_code: str
  23. applicant_id: int
  24. applicant_name: str
  25. reason: str
  26. purpose: Optional[str] = None
  27. expense_item_id: Optional[int] = None
  28. amount: float
  29. status: str
  30. current_node: Optional[str] = None
  31. apply_time: DatetimeToStr = Field(validation_alias="create_time")
  32. remark: Optional[str] = None
  33. actual_amount: Optional[float] = None
  34. offset_amount: Optional[float] = None
  35. issue_status: Optional[str] = None
  36. issue_time: OptDatetimeToStr = None
  37. issue_user_name: Optional[str] = None
  38. issue_remark: Optional[str] = None
  39. class AdvanceApprovalCreate(BaseModel):
  40. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  41. approval_status: Optional[str] = None
  42. approval_opinion: Optional[str] = None
  43. class AdvanceApprovalOut(BaseModel):
  44. model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel)
  45. id: int
  46. advance_id: int
  47. node_name: str
  48. node_order: int
  49. approval_status: str
  50. approval_opinion: Optional[str] = None
  51. approver_name: str
  52. approval_time: OptDatetimeToStr = None
  53. class AdvanceIssueOut(BaseModel):
  54. model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel)
  55. id: int
  56. apply_code: str
  57. applicant_id: int
  58. applicant_name: str
  59. reason: str
  60. amount: float
  61. approve_time: DatetimeToStr = Field(validation_alias="update_time")
  62. issue_status: Optional[str] = None
  63. issue_time: OptDatetimeToStr
  64. issue_user_name: Optional[str] = None
  65. issue_remark: Optional[str] = None
  66. actual_amount: Optional[float] = None
  67. offset_amount: Optional[float] = None
  68. class AdvanceIssueRequest(BaseModel):
  69. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  70. issue_remark: Optional[str] = None
  71. actual_amount: Optional[float] = None
  72. class AdvanceOffsetRecordOut(BaseModel):
  73. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  74. reimburse_id: int
  75. reimburse_apply_code: str
  76. reimburse_title: Optional[str] = None
  77. reimburse_applicant_name: Optional[str] = None
  78. offset_amount: float
  79. remark: Optional[str] = None
  80. operator: Optional[str] = None
  81. create_time: OptDatetimeToStr = None
  82. class AdvanceMyStatsOut(BaseModel):
  83. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  84. total_count: int
  85. pending_count: int
  86. approved_pass_count: int
  87. rejected_count: int
  88. pending_issue_count: int
  89. issued_count: int
  90. issued_amount: float
  91. month_apply_amount: float
  92. month_apply_count: int
  93. offset_total: float
  94. class AdvanceApproverPendingStatsOut(BaseModel):
  95. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  96. pending_total: int
  97. month_pending_amount: float
  98. class AdvanceFinanceIssueStatsOut(BaseModel):
  99. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  100. pending_count: int
  101. issued_count: int
  102. pending_amount: float
  103. issued_month_amount: float