94 lines
3.2 KiB
Python
94 lines
3.2 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Optional
|
||
|
|
from pydantic import BaseModel, Field
|
||
|
|
|
||
|
|
|
||
|
|
class BankAccountCreateRequest(BaseModel):
|
||
|
|
code: Optional[str] = Field(default=None, max_length=50)
|
||
|
|
name: str = Field(..., min_length=1, max_length=255)
|
||
|
|
branch: Optional[str] = Field(default=None, max_length=255)
|
||
|
|
account_number: Optional[str] = Field(default=None, max_length=50)
|
||
|
|
sheba_number: Optional[str] = Field(default=None, max_length=30)
|
||
|
|
card_number: Optional[str] = Field(default=None, max_length=20)
|
||
|
|
owner_name: Optional[str] = Field(default=None, max_length=255)
|
||
|
|
pos_number: Optional[str] = Field(default=None, max_length=50)
|
||
|
|
payment_id: Optional[str] = Field(default=None, max_length=100)
|
||
|
|
description: Optional[str] = Field(default=None, max_length=500)
|
||
|
|
currency_id: int = Field(..., ge=1)
|
||
|
|
is_active: bool = Field(default=True)
|
||
|
|
is_default: bool = Field(default=False)
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def __get_validators__(cls):
|
||
|
|
yield from super().__get_validators__()
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def validate(cls, value): # type: ignore[override]
|
||
|
|
obj = super().validate(value)
|
||
|
|
if getattr(obj, 'code', None) is not None:
|
||
|
|
code_val = str(getattr(obj, 'code'))
|
||
|
|
if code_val.strip() != '':
|
||
|
|
if not code_val.isdigit():
|
||
|
|
raise ValueError("کد حساب باید فقط عددی باشد")
|
||
|
|
if len(code_val) < 3:
|
||
|
|
raise ValueError("کد حساب باید حداقل ۳ رقم باشد")
|
||
|
|
return obj
|
||
|
|
|
||
|
|
|
||
|
|
class BankAccountUpdateRequest(BaseModel):
|
||
|
|
code: Optional[str] = Field(default=None, max_length=50)
|
||
|
|
name: Optional[str] = Field(default=None, min_length=1, max_length=255)
|
||
|
|
branch: Optional[str] = Field(default=None, max_length=255)
|
||
|
|
account_number: Optional[str] = Field(default=None, max_length=50)
|
||
|
|
sheba_number: Optional[str] = Field(default=None, max_length=30)
|
||
|
|
card_number: Optional[str] = Field(default=None, max_length=20)
|
||
|
|
owner_name: Optional[str] = Field(default=None, max_length=255)
|
||
|
|
pos_number: Optional[str] = Field(default=None, max_length=50)
|
||
|
|
payment_id: Optional[str] = Field(default=None, max_length=100)
|
||
|
|
description: Optional[str] = Field(default=None, max_length=500)
|
||
|
|
currency_id: Optional[int] = Field(default=None, ge=1)
|
||
|
|
is_active: Optional[bool] = Field(default=None)
|
||
|
|
is_default: Optional[bool] = Field(default=None)
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def __get_validators__(cls):
|
||
|
|
yield from super().__get_validators__()
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def validate(cls, value): # type: ignore[override]
|
||
|
|
obj = super().validate(value)
|
||
|
|
if getattr(obj, 'code', None) is not None:
|
||
|
|
code_val = str(getattr(obj, 'code'))
|
||
|
|
if code_val.strip() != '':
|
||
|
|
if not code_val.isdigit():
|
||
|
|
raise ValueError("کد حساب باید فقط عددی باشد")
|
||
|
|
if len(code_val) < 3:
|
||
|
|
raise ValueError("کد حساب باید حداقل ۳ رقم باشد")
|
||
|
|
return obj
|
||
|
|
|
||
|
|
|
||
|
|
class BankAccountResponse(BaseModel):
|
||
|
|
id: int
|
||
|
|
business_id: int
|
||
|
|
code: Optional[str]
|
||
|
|
name: str
|
||
|
|
branch: Optional[str]
|
||
|
|
account_number: Optional[str]
|
||
|
|
sheba_number: Optional[str]
|
||
|
|
card_number: Optional[str]
|
||
|
|
owner_name: Optional[str]
|
||
|
|
pos_number: Optional[str]
|
||
|
|
payment_id: Optional[str]
|
||
|
|
description: Optional[str]
|
||
|
|
currency_id: int
|
||
|
|
is_active: bool
|
||
|
|
is_default: bool
|
||
|
|
created_at: str
|
||
|
|
updated_at: str
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
from_attributes = True
|
||
|
|
|
||
|
|
|