refactor(backend): update reimbursement and expense claims
- endpoints/reimbursements.py: update reimbursement API endpoint - schemas/reimbursement.py: update reimbursement data schemas - services/expense_claims.py: update expense claims service logic
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import date, datetime
|
||||
from decimal import Decimal
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
|
||||
class ReimbursementCreate(BaseModel):
|
||||
@@ -28,3 +29,58 @@ class ReimbursementRead(BaseModel):
|
||||
reason: str | None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class ExpenseClaimItemRead(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: str
|
||||
item_date: date
|
||||
item_type: str
|
||||
item_reason: str
|
||||
item_location: str
|
||||
item_amount: Decimal
|
||||
invoice_id: str | None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class ExpenseClaimItemUpdate(BaseModel):
|
||||
item_date: date | None = None
|
||||
item_type: str | None = None
|
||||
item_reason: str | None = None
|
||||
item_location: str | None = None
|
||||
item_amount: Decimal | None = None
|
||||
invoice_id: str | None = None
|
||||
|
||||
|
||||
class ExpenseClaimRead(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: str
|
||||
claim_no: str
|
||||
employee_id: str | None
|
||||
employee_name: str
|
||||
department_id: str | None
|
||||
department_name: str
|
||||
project_code: str | None
|
||||
expense_type: str
|
||||
reason: str
|
||||
location: str
|
||||
amount: Decimal
|
||||
currency: str
|
||||
invoice_count: int
|
||||
occurred_at: datetime
|
||||
submitted_at: datetime | None
|
||||
status: str
|
||||
approval_stage: str | None
|
||||
risk_flags_json: list[Any] = Field(default_factory=list)
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
items: list[ExpenseClaimItemRead] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ExpenseClaimActionResponse(BaseModel):
|
||||
message: str
|
||||
claim_id: str
|
||||
status: str | None = None
|
||||
|
||||
Reference in New Issue
Block a user