90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
"""
|
||
税务申报表模型
|
||
"""
|
||
from datetime import date
|
||
from typing import Optional, TYPE_CHECKING
|
||
|
||
from sqlalchemy import (
|
||
Boolean,
|
||
Column,
|
||
Date,
|
||
Integer,
|
||
String,
|
||
Float,
|
||
)
|
||
from sqlalchemy.orm import Mapped, mapped_column
|
||
|
||
from app.models.base import BaseModel
|
||
|
||
if TYPE_CHECKING:
|
||
from .streamer import StreamerInfo, McnAgency
|
||
|
||
|
||
class TaxDeclaration(BaseModel):
|
||
"""
|
||
税务申报表
|
||
"""
|
||
__tablename__ = "tax_declaration"
|
||
|
||
vat_declaration_id: Mapped[str] = mapped_column(
|
||
String(50), unique=True, nullable=False, comment="增值税申报ID"
|
||
)
|
||
taxpayer_name: Mapped[str] = mapped_column(
|
||
String(200), nullable=False, comment="纳税人名称"
|
||
)
|
||
taxpayer_id: Mapped[str] = mapped_column(
|
||
String(18), nullable=False, comment="纳税人识别号"
|
||
)
|
||
tax_period: Mapped[str] = mapped_column(
|
||
String(20), nullable=False, comment="纳税期间(YYYY-MM或YYYYQ1-4)"
|
||
)
|
||
declaration_date: Mapped[date] = mapped_column(
|
||
Date, nullable=False, comment="申报日期"
|
||
)
|
||
tax_authority_code: Mapped[str] = mapped_column(
|
||
String(20), nullable=False, comment="主管税务机关代码"
|
||
)
|
||
tax_authority_name: Mapped[str] = mapped_column(
|
||
String(200), nullable=False, comment="主管税务机关名称"
|
||
)
|
||
taxpayer_type: Mapped[str] = mapped_column(
|
||
String(20),
|
||
nullable=False,
|
||
comment="纳税人类型:general-一般纳税人,small_scale-小规模纳税人",
|
||
)
|
||
tax_rate: Mapped[float] = mapped_column(
|
||
nullable=False, comment="税率"
|
||
)
|
||
sales_revenue: Mapped[float] = mapped_column(
|
||
nullable=False, comment="销售收入"
|
||
)
|
||
sales_revenue_taxable: Mapped[float] = mapped_column(
|
||
nullable=False, comment="销售收入应税"
|
||
)
|
||
output_tax: Mapped[float] = mapped_column(
|
||
nullable=False, comment="销项税额"
|
||
)
|
||
input_tax: Mapped[float] = mapped_column(
|
||
default=0, comment="进项税额"
|
||
)
|
||
input_tax_deductible: Mapped[float] = mapped_column(
|
||
default=0, comment="进项税额抵扣"
|
||
)
|
||
tax_payable: Mapped[float] = mapped_column(
|
||
nullable=False, comment="应纳税额"
|
||
)
|
||
tax_to_pay: Mapped[float] = mapped_column(
|
||
nullable=False, comment="应纳税额(已缴)"
|
||
)
|
||
refund_amount: Mapped[float] = mapped_column(
|
||
default=0, comment="退税金额"
|
||
)
|
||
declaration_status: Mapped[str] = mapped_column(
|
||
String(20),
|
||
nullable=False,
|
||
comment="申报状态:draft-草稿,submitted-已申报,approved-已审核,rejected-已退回",
|
||
)
|
||
is_reconciled: Mapped[bool] = mapped_column(
|
||
default=False, comment="是否已对账"
|
||
)
|