Python实现关税自动计算模型

这是关税自动计算Python脚本,按HS编码查税率,自动算关税、消费税、增值税和到岸总成本,并输出明细。

```python

-*- coding: utf-8 -*-

"""

进口环节税费自动计算

支持:从价税 / 从量税 / 复合税、原产地优惠税率、消费税、进口增值税、汇率折算

"""

from dataclasses import dataclass, field

from decimal import Decimal, ROUND_HALF_UP

CENT = Decimal("0.01")

D = Decimal

def yuan(x) -> Decimal:

"""四舍五入到分"""

return D(x).quantize(CENT, rounding=ROUND_HALF_UP)

----------------------------------------------------------------------

税率规则

----------------------------------------------------------------------

@dataclass(frozen=True)

class TaxRule:

hs_code: str

name: str

duty_rate: Decimal = D("0") # 从价关税税率

duty_per_unit: Decimal = D("0") # 从量关税(元/计量单位)

vat_rate: Decimal = D("0.13") # 进口环节增值税率

excise_rate: Decimal = D("0") # 从价消费税率

excise_per_unit: Decimal = D("0") # 从量消费税(元/计量单位)

preferential: dict = field(default_factory=dict) # 原产国代码 -> 优惠关税税率

示例税则库(真实业务请替换为海关税则 / 接口数据)

TARIFF_DB = {

"8517.1200": TaxRule("8517.1200", "智能手机", D("0")),

"8703.2341": TaxRule("8703.2341", "小汽车(1.5L以下)", D("0.15"),

excise_rate=D("0.03")),

"2204.2100": TaxRule("2204.2100", "葡萄酒", D("0.14"),

excise_rate=D("0.10"),

preferential={"CL": D("0"), "AU": D("0"), "GE": D("0")}),

"2402.2000": TaxRule("2402.2000", "卷烟", D("0.25"),

excise_rate=D("0.56"), excise_per_unit=D("0.003")),

}

----------------------------------------------------------------------

计算结果

----------------------------------------------------------------------

@dataclass

class DutyResult:

hs_code: str

origin: str

duty_rate: Decimal # 实际适用的关税税率

cif: Decimal # 完税价格(人民币)

duty: Decimal # 关税

excise: Decimal # 消费税

vat: Decimal # 增值税

total_tax: Decimal # 税费合计

landed_cost: Decimal # 到岸总成本 = 完税价格 + 税费

def report(self) -> str:

lines = [

f"商品 : {self.hs_code} 原产地: {self.origin or '---'}",

f"适用关税税率: {self.duty_rate:.2%}",

f"完税价格 CIF: ¥{self.cif:,.2f}",

f"关 税 : ¥{self.duty:,.2f}",

f"消 费 税 : ¥{self.excise:,.2f}",

f"增 值 税 : ¥{self.vat:,.2f}",

f"税费合计 : ¥{self.total_tax:,.2f}",

f"到岸总成本 : ¥{self.landed_cost:,.2f}",

]

return "\n".join(lines)

----------------------------------------------------------------------

核心计算

----------------------------------------------------------------------

def calc_import_tax(hs_code: str,

price,

quantity=1,

fx_rate=1,

origin: str = None) -> DutyResult:

"""

:param hs_code: HS 编码(税则库键值)

:param price: 成交单价(外币或人民币)

:param quantity: 数量(单位需与从量税计量单位一致,如 升 / 千克 / 条)

:param fx_rate: 外币 -> 人民币汇率,人民币计价填 1

:param origin: 原产国代码,用于判定协定优惠税率

"""

rule = TARIFF_DB.get(hs_code)

if rule is None:

raise KeyError(f"税则库中未找到 HS 编码: {hs_code}")

qty = D(str(quantity))

fx = D(str(fx_rate))

1. 完税价格(CIF,人民币)

cif = yuan(D(str(price)) * qty * fx)

2. 确定适用关税税率(协定税率优先)

origin_key = (origin or "").upper()

duty_rate = rule.preferential.get(origin_key, rule.duty_rate)

3. 关税 = 从价税 + 从量税

duty = yuan(cif * duty_rate + rule.duty_per_unit * qty)

4. 消费税

if rule.excise_rate > 0:

组成计税价格 = (完税价格 + 关税 + 从量消费税) / (1 - 从价消费税率)

base = (cif + duty + rule.excise_per_unit * qty) / (D("1") - rule.excise_rate)

excise = yuan(base * rule.excise_rate + rule.excise_per_unit * qty)

elif rule.excise_per_unit > 0:

excise = yuan(rule.excise_per_unit * qty)

else:

excise = yuan(0)

5. 进口环节增值税

vat = yuan((cif + duty + excise) * rule.vat_rate)

total_tax = yuan(duty + excise + vat)

return DutyResult(

hs_code=hs_code,

origin=origin_key,

duty_rate=duty_rate,

cif=cif,

duty=duty,

excise=excise,

vat=vat,

total_tax=total_tax,

landed_cost=yuan(cif + total_tax),

)

----------------------------------------------------------------------

演示

----------------------------------------------------------------------

if name == "main":

例 1:法国葡萄酒,单价 50 欧元,120 瓶,汇率 7.8

r1 = calc_import_tax("2204.2100", price="50", quantity=120,

fx_rate="7.8", origin="FR")

print("【例1】", r1.report(), "\n")

例 2:同款酒来自智利,享受协定零关税

r2 = calc_import_tax("2204.2100", price="50", quantity=120,

fx_rate="7.8", origin="CL")

print("【例2】", r2.report(), "\n")

例 3:卷烟,从价 + 从量复合税,1000 条

r3 = calc_import_tax("2402.2000", price="200", quantity=1000, fx_rate=1)

print("【例3】", r3.report())

```

进口税费计算工具的核心模块

这个脚本把进口税费计算拆成几个好用的部分,您只需要提供商品信息就能直接出结果。

· 税则库:用TaxRule记录每个HS编码对应的从价税、从量税、增值税、消费税及优惠税率,示例里放了智能手机、葡萄酒、卷烟等常见品类。

· 计算函数:calc_import_tax接收HS编码、单价、数量、汇率和原产地,自动完成完税价格、关税、消费税、增值税及到岸总成本的计算。

· 结果报告:返回DutyResult对象并附report()方法,直接打印各项税费明细,方便核对和记录。

· 优惠判定:传入原产地代码后,系统会优先匹配协定税率,像智利葡萄酒就能享受零关税。


优化建议: 示例税则库仅含少量商品,您可以将TARIFF_DB替换为真实海关税则数据或接入查询接口,并同步更新相关税率字段。

文章仅供参考学习用。

相关推荐
伞伞悦读1 小时前
从零打通 Hermes Agent:Windows + WSL2 + Clash 全链路安装、认证与首次实战
python·语言模型
朝朝辞暮i1 小时前
C++ 第 14 课:引用 &
开发语言·c++·算法
happylifetree1 小时前
Python17:核心语法-数据存储与运算-输入与输出
python
梅雅达编程笔记1 小时前
04-Python CSV数据保存与翻页抓取
开发语言·爬虫·python·pandas·数据采集·csv
C++ 老炮儿的技术栈2 小时前
有符号变量与无符号变量的区别
服务器·开发语言·前端·数据结构·c++·算法·c
估值探索者2 小时前
【Python量化策略实战 #04】Donchian 通道假突破太多?用 ATR 阈值过滤跑通真实突破信号
开发语言·python·接口·api接口·数据api接口·股票数据api接口
个 人 练 习 生2 小时前
C++:模板初阶详解
开发语言·c++·经验分享·学习
知识分享小能手2 小时前
C++ 学习教程,从入门到精通,C++类继承 — 完整知识点详解(13)
开发语言·c++·学习
弹简特2 小时前
【Java项目-企悦抽】15-活动管理模块02-活动创建测试与活动列表实现
java·开发语言·springboot