77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
"""
|
|
发票数据相关Pydantic模型
|
|
"""
|
|
from datetime import date, datetime
|
|
from typing import Optional, List
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class InvoiceBase(BaseModel):
|
|
"""发票基础模型"""
|
|
invoice_code: str = Field(..., description="发票代码")
|
|
invoice_no: str = Field(..., description="发票号码")
|
|
invoice_type: str = Field(..., description="发票类型")
|
|
direction: str = Field(..., description="发票方向")
|
|
invoice_date: date = Field(..., description="开票日期")
|
|
purchaser_name: str = Field(..., description="购买方名称")
|
|
purchaser_tax_no: str = Field(..., description="购买方税号")
|
|
seller_name: str = Field(..., description="销售方名称")
|
|
seller_tax_no: str = Field(..., description="销售方税号")
|
|
total_amount: float = Field(..., description="金额合计")
|
|
total_tax: float = Field(..., description="税额合计")
|
|
total_amount_with_tax: float = Field(..., description="价税合计")
|
|
amount_in_words: str = Field(..., description="大写金额")
|
|
invoice_status: str = Field(..., description="发票状态")
|
|
is_verified: bool = Field(..., description="是否已验证")
|
|
verified_time: Optional[datetime] = Field(None, description="验证时间")
|
|
is_red_invoice: bool = Field(..., description="是否红字发票")
|
|
red_reason: Optional[str] = Field(None, description="红字原因")
|
|
remark: Optional[str] = Field(None, description="备注")
|
|
pdf_url: Optional[str] = Field(None, description="PDF文件地址")
|
|
|
|
|
|
class InvoiceCreate(InvoiceBase):
|
|
"""创建发票"""
|
|
pass
|
|
|
|
|
|
class InvoiceUpdate(BaseModel):
|
|
"""更新发票"""
|
|
invoice_code: Optional[str] = None
|
|
invoice_no: Optional[str] = None
|
|
invoice_type: Optional[str] = None
|
|
direction: Optional[str] = None
|
|
invoice_date: Optional[date] = None
|
|
purchaser_name: Optional[str] = None
|
|
purchaser_tax_no: Optional[str] = None
|
|
seller_name: Optional[str] = None
|
|
seller_tax_no: Optional[str] = None
|
|
total_amount: Optional[float] = None
|
|
total_tax: Optional[float] = None
|
|
total_amount_with_tax: Optional[float] = None
|
|
amount_in_words: Optional[str] = None
|
|
invoice_status: Optional[str] = None
|
|
is_verified: Optional[bool] = None
|
|
verified_time: Optional[datetime] = None
|
|
is_red_invoice: Optional[bool] = None
|
|
red_reason: Optional[str] = None
|
|
remark: Optional[str] = None
|
|
pdf_url: Optional[str] = None
|
|
|
|
|
|
class InvoiceResponse(InvoiceBase):
|
|
"""发票响应模型"""
|
|
id: int
|
|
invoice_id: str
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class InvoiceListResponse(BaseModel):
|
|
"""发票列表响应模型"""
|
|
records: List[InvoiceResponse]
|
|
total: int
|
|
page: int
|
|
size: int
|