往来余额重分类与集团合并抵消
使用方式
单公司处理
修改 scripts/reclassify.py 顶部的 INPUT_FILE 路径,运行:
python scripts/reclassify.py
批量多公司处理(集团模式)
修改 scripts/batch_reclassify.py 中的 FILES 列表,运行:
python scripts/batch_reclassify.py
此脚本自动完成三步:重分类 → 合并抵消 → 供应商汇总。
输出文件:output/纽脉集团往来余额重分类工作底稿.xlsx(3个Sheet)
输出列结构(16列)
| 列 | 名称 | 说明 |
|---|---|---|
| A | 公司名称 | 从金蝶"账簿:"字段提取 |
| B | 科目代码 | 保留到二级 |
| C | 一级科目 | |
| D | 二级科目 | |
| E | 核算维度编码 | 供应商/客商编码 |
| F | 供应商/客商名称 | |
| G | 票据类型 | 已开票/暂估/预提 |
| H | 科目性质 | 资产/负债 |
| I | 配对组 | 应收组/应付组/其他组/仅列示 |
| J | 账面金额 | 原始期末净余额 |
| K | 重分类金额 | 科目+供应商重分类合计 |
| L | 调整后金额 | J+K |
| M | 重分类方向 | 转入资产/转入负债/双向对抵/预收账款重分类至合同负债/仅列示 |
| N | 备注 | CAS 14依据/双边挂账详情 |
| O | 合并抵消金额 | 集团内关联方抵消 |
| P | 合并抵消后金额 | L+O |
核心逻辑
科目范围
| 分类 | 科目 | 参与重分类 |
|---|---|---|
| 应收组 | 1122 应收账款, 2203 预收账款, 2204 合同负债, 2403.01 待转销项税额 | 是 |
| 应付组 | 1123 预付账款 ↔ 2202 应付账款 | 是 |
| 其他组 | 1221 其他应收款 ↔ 2241 其他应付款 | 是 |
| 仅列示 | 2801 预计负债 | 否 |
步骤1: 科目重分类(2203→2204+2403.01)
CAS 14新收入准则:预收账款(含税)→ 合同负债(不含税)+ 待转销项税额。
税率默认13%,纽脉生命科学×成都金蛟医疗科技特殊6%。
含税金额 = abs(2203净额)
不含税 = round(含税 / (1+税率), 2)
税额 = 含税 - 不含税
步骤2: 供应商双边重分类
- 按供应商+配对组汇总调整后余额
- 判定双边挂账:同组内既有资产又有负债余额
- 净额>0 → 转入资产(负债清零,资产吸收)
- 净额<0 → 转入负债(资产清零,负债吸收)
- 净额≈0 → 双向对抵
- 每组 sum(重分类金额) = 0
步骤3: 集团合并抵消
- 建立公司名→核算维度编码映射
- 对每对公司,计算双方净额
- 符号相反时,取较小绝对值抵消
- 按各行调整后金额比例分配抵消金额
- 抵消净额合计 = 0
修改配置
增减科目
修改 batch_reclassify.py 中的 ACCOUNT_CONFIG:
ACCOUNT_CONFIG = {
'1122': ('资产', '应收组', '应收账款', True),
'2204': ('负债', '应收组', '合同负债', True),
'2801': ('负债', '仅列示', '预计负债', False),
...
}
调整税率
修改 get_tax_rate 函数中的条件:
def get_tax_rate(company, vendor_name):
if company == '某公司' and '某供应商' in str(vendor_name):
return 0.06
return 0.13
新增公司
修改 FILES 列表和 intercompany_elim.py 中的公司名匹配逻辑。
兼容性
- 兼容金蝶12列和11列导出格式(自动检测列数)
- 兼容核算维度明细多级分组结构(自动前向填充科目编码)