30 lines
765 B
Python
30 lines
765 B
Python
# app/modules/journals/schemas.py
|
|
from pydantic import BaseModel, field_validator
|
|
from typing import List
|
|
from decimal import Decimal
|
|
from datetime import date
|
|
|
|
class JournalLineCreate(BaseModel):
|
|
account_id: int
|
|
debit: Decimal = 0
|
|
credit: Decimal = 0
|
|
|
|
@field_validator("debit", "credit")
|
|
@classmethod
|
|
def non_negative(cls, v):
|
|
if v < 0:
|
|
raise ValueError("金額は0以上で入力してください")
|
|
return v
|
|
|
|
class JournalCreate(BaseModel):
|
|
journal_date: date
|
|
description: str
|
|
lines: List[JournalLineCreate]
|
|
|
|
@field_validator("lines")
|
|
@classmethod
|
|
def validate_lines(cls, v):
|
|
if len(v) < 2:
|
|
raise ValueError("仕訳明細は2行以上必要です")
|
|
return v
|