# backend/app/modules/opening_balances/schema.py
from pydantic import BaseModel, field_validator

class OpeningBalanceCreate(BaseModel):
    fiscal_year: int
    account_id: int
    opening_debit: float = 0
    opening_credit: float = 0

    @field_validator("fiscal_year")
    @classmethod
    def validate_year(cls, v: int):
        if v < 2000 or v > 2100:
            raise ValueError("会计年度不正确")
        return v

    @field_validator("opening_credit")
    @classmethod
    def validate_balance(cls, v, info):
        debit = info.data.get("opening_debit", 0)
        if debit > 0 and v > 0:
            raise ValueError("借方和贷方不能同时输入金额")
        if debit < 0 or v < 0:
            raise ValueError("金额不能为负数")
        return v
