from pydantic import BaseModel from typing import Optional from datetime import datetime, date from decimal import Decimal from app.models.payroll import PayrollStatus class PayrollRecordBase(BaseModel): employee_id: int pay_period_start: date pay_period_end: date base_salary: Decimal overtime_hours: Optional[Decimal] = Decimal('0') overtime_rate: Optional[Decimal] = Decimal('0') bonus: Optional[Decimal] = Decimal('0') deductions: Optional[Decimal] = Decimal('0') tax_deductions: Optional[Decimal] = Decimal('0') class PayrollRecordCreate(PayrollRecordBase): pass class PayrollRecordUpdate(BaseModel): overtime_hours: Optional[Decimal] = None overtime_rate: Optional[Decimal] = None bonus: Optional[Decimal] = None deductions: Optional[Decimal] = None tax_deductions: Optional[Decimal] = None class PayrollRecord(PayrollRecordBase): id: int gross_pay: Decimal net_pay: Decimal status: PayrollStatus processed_by: Optional[int] = None processed_at: Optional[datetime] = None created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True