Tryton 6.0.0发票行填负数量时税行表额外多出税行问题
问题根因
Tryton 6.0.0版本的发票税行生成逻辑默认按税务科目+税基正负符号两个维度做分组聚合,并非仅按税务科目维度聚合:
- 当发票内所有行数量均为正值时,所有绑定“Umsatzsteuer – Normalsatz”科目的发票行税基符号统一为正,只会命中一个聚合分组,因此仅生成1条税行,和你观察到的正常表现一致。
- 当发票内同时存在正数量、负数量的同税目发票行时,正数量行对应正税基、负数量行对应负税基,会命中两个独立的聚合分组,哪怕两个分组绑定的税务科目、税率完全一致,也会生成两条独立税行。
- 该表现是6.0.0初始版本的设计缺陷:初始版本的分组逻辑原本是为了区分销项计税、进项抵扣的独立核算场景,没有兼容同一张发票内同税目正负行(如折扣、销售折让、部分退款行)的合并计税需求,不属于数据异常。
修复方案
根据你的实际业务需求,可选择以下任意一种方案处理:
无代码配置修复
- 登录管理员账号进入税务科目配置界面,找到“Umsatzsteuer – Normalsatz”对应的税规则配置项
- 找到税行分组键配置,将默认值
('tax', 'base_sign')修改为('tax',),移除按税基符号分组的规则 - 保存配置后,打开对应发票手动触发税重算,同税目的正负发票行会合并计算税额,仅生成1条税行。
源码级修复(适用于二次开发场景)
如果需要从代码层面全局调整该逻辑,可按以下步骤修改account_invoice模块源码:
- 定位模块内
invoice.py文件的_get_tax_line_key方法 - 删除方法返回值中与
base_sign(税基符号)相关的键值对 - 升级
account_invoice模块、重启Tryton服务后,批量重算历史发票税行即可生效。
注意:如果你的属地税务申报要求单独列示蓝字、红字部分的税额,无需做上述修改,双税行的表现符合正负项分别列示的申报规范。
内容的提问来源于stack exchange,提问作者Developer23
相关产品推荐
相关产品推荐

