| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # @description:
- # @author: licanglong
- # @date: 2025/12/22 20:40
- from datetime import date, datetime
- from decimal import Decimal
- from typing import Optional, List
- from pydantic import BaseModel, Field
- DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
- class InvoicePurchaseDetailDTO(BaseModel):
- """
- 进项发票-信息汇总表(API / 序列化专用)
- """
- id: int = Field(..., description="自增主键")
- tax_id: str = Field(..., description="购方税号")
- zzfpdm: str = Field(..., description="发票代码")
- zzfphm: str = Field(..., description="发票号码")
- kprq: date = Field(..., description="开票日期")
- gmfmc: str = Field(..., description="销方名称")
- gmfnsrsbh: str = Field(..., description="销方税号")
- ssflbm: Optional[str] = Field(None, description="税收分类编码")
- tdywlx: Optional[str] = Field(None, description="特定业务类型")
- hwmc: Optional[str] = Field(None, description="货物或应税劳务名称")
- easy_hwmc: Optional[str] = Field(None, description="货物名称")
- ggxh: Optional[str] = Field(None, description="规格型号")
- dw: Optional[str] = Field(None, description="计量单位名称")
- dw_symbol: Optional[str] = Field(None, description="计量单位符号")
- xssl: Optional[Decimal] = Field(None, description="数量")
- dj: Optional[Decimal] = Field(None, description="单价")
- hjje: Optional[Decimal] = Field(None, description="金额")
- sl: Optional[str] = Field(None, description="税率")
- hjse: Optional[Decimal] = Field(None, description="税额")
- jshj: Optional[Decimal] = Field(None, description="价税合计")
- fplydm: str = Field(..., description="发票来源")
- fppzdm: str = Field(..., description="发票票种")
- fpztdm: str = Field(..., description="发票状态")
- sflzfp: str = Field(..., description="发票风险等级")
- kpr: str = Field(..., description="开票人")
- created_at: datetime = Field(..., description="创建时间")
- class Config:
- from_attributes = True # ORM → Pydantic 的关键
- class InvoicePurchaseDetailList(BaseModel):
- invoice_purchase_details: List[InvoicePurchaseDetailDTO]
|