給与管理システム新規作成
This commit is contained in:
109
backend/app/payroll/employees/schemas.py
Normal file
109
backend/app/payroll/employees/schemas.py
Normal file
@@ -0,0 +1,109 @@
|
||||
"""
|
||||
従業員管理用のスキーマ定義 (Employee Schemas)
|
||||
"""
|
||||
from pydantic import BaseModel, EmailStr
|
||||
from datetime import date, datetime
|
||||
from typing import Optional
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
class DependentBase(BaseModel):
|
||||
"""扶養家族の基本情報"""
|
||||
name: str
|
||||
relationship: str # 配偶者/子/親/その他
|
||||
birth_date: Optional[date] = None
|
||||
is_spouse: bool = False
|
||||
is_disabled: bool = False
|
||||
income_amount: Decimal = Decimal("0")
|
||||
valid_from: date
|
||||
valid_to: Optional[date] = None
|
||||
|
||||
|
||||
class DependentCreate(DependentBase):
|
||||
"""扶養家族の作成"""
|
||||
pass
|
||||
|
||||
|
||||
class DependentUpdate(BaseModel):
|
||||
"""扶養家族の更新"""
|
||||
name: Optional[str] = None
|
||||
relationship: Optional[str] = None
|
||||
birth_date: Optional[date] = None
|
||||
is_spouse: Optional[bool] = None
|
||||
is_disabled: Optional[bool] = None
|
||||
income_amount: Optional[Decimal] = None
|
||||
valid_from: Optional[date] = None
|
||||
valid_to: Optional[date] = None
|
||||
|
||||
|
||||
class Dependent(DependentBase):
|
||||
"""扶養家族の情報"""
|
||||
dependent_id: int
|
||||
employee_id: int
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class EmployeeBase(BaseModel):
|
||||
"""従業員の基本情報"""
|
||||
employee_code: str
|
||||
name: str
|
||||
name_kana: Optional[str] = None
|
||||
birth_date: Optional[date] = None
|
||||
gender: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
phone: Optional[str] = None
|
||||
postal_code: Optional[str] = None
|
||||
address: Optional[str] = None
|
||||
hire_date: date
|
||||
termination_date: Optional[date] = None
|
||||
is_active: bool = True
|
||||
bank_name: Optional[str] = None
|
||||
bank_branch: Optional[str] = None
|
||||
bank_account_number: Optional[str] = None
|
||||
bank_account_type: Optional[str] = None # 普通/当座
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class EmployeeCreate(EmployeeBase):
|
||||
"""従業員の作成"""
|
||||
pass
|
||||
|
||||
|
||||
class EmployeeUpdate(BaseModel):
|
||||
"""従業員の更新"""
|
||||
employee_code: Optional[str] = None
|
||||
name: Optional[str] = None
|
||||
name_kana: Optional[str] = None
|
||||
birth_date: Optional[date] = None
|
||||
gender: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
phone: Optional[str] = None
|
||||
postal_code: Optional[str] = None
|
||||
address: Optional[str] = None
|
||||
hire_date: Optional[date] = None
|
||||
termination_date: Optional[date] = None
|
||||
is_active: Optional[bool] = None
|
||||
bank_name: Optional[str] = None
|
||||
bank_branch: Optional[str] = None
|
||||
bank_account_number: Optional[str] = None
|
||||
bank_account_type: Optional[str] = None
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class Employee(EmployeeBase):
|
||||
"""従業員の情報"""
|
||||
employee_id: int
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class EmployeeWithDependents(Employee):
|
||||
"""扶養家族を含む従業員情報"""
|
||||
dependents: list[Dependent] = []
|
||||
Reference in New Issue
Block a user