报销系统对接用友 NC:凭证接口与多账簿处理
NC 对接的核心难点是多账簿多组织的映射:一笔报销属于哪个法人主体、进哪本账、要不要同时生成多个账簿的凭证。集团型企业上费控,这件事必须在调研阶段就问清楚,它决定了整个凭证模块的数据结构。
先确认组织与账簿的关系
调研时要拿到三个答案:公司有几个法人主体、每个主体对应哪本账簿、一笔报销是否需要同时生成多个账簿的凭证。
第三个问题最关键。多数情况下一笔报销只进一本账,但存在两种例外:一是跨法人分摊(总部费用摊给子公司),二是同时要出管理账和法定账。这两种情况下,一张报销单要生成多张凭证,数据结构必须支持一对多。
凭证字号由谁生成
这是个小问题,但不问清楚会返工。两种做法:
| 做法 | 优点 | 注意 |
|---|---|---|
| 由 NC 自动编号 | 编号连续性由总账保证,不会重号 | 费控侧要接收并回写 NC 返回的凭证号 |
| 由费控系统生成 | 推送前就有号,便于关联 | 需保证与 NC 的编号规则一致,且不能与手工凭证冲突 |
推荐第一种。凭证号的连续性是总账的职责,费控系统去管这件事,容易在并发或补录时出现重号。
组织维度要贯穿到分录行
NC 的凭证分录上通常需要携带组织信息。费控侧要保证报销单上的部门、成本中心能够追溯到所属法人主体,并在生成分录时正确填充。
如果费控的组织架构来自 OA 或 HR 系统,而 NC 的组织架构是财务口径,两者往往不完全一致——比如 OA 里有虚拟部门、项目组,NC 里没有。这种情况需要一张组织映射表,把业务组织映射到财务组织。
常见报错与排查顺序
| 报错现象 | 原因 | 处理 |
|---|---|---|
| 科目不存在或已停用 | 总账停用了科目,费控侧规则未同步 | 定期同步科目主数据,停用科目在规则中标记失效 |
| 账期已关闭 | 目标期间已结账 | 生成前校验账期状态,草稿阶段拦截 |
| 必需辅助核算维度缺失 | 科目要求项目/成本中心,单据未提供 | 科目主数据配置 required_dims,生成前校验 |
| 非末级科目不允许记账 | 规则指向了上级科目 | 科目主数据标记 is_leaf,配置时限制只能选末级 |
| 借贷不平衡 | 不含税金额算法错误 | 税额取发票值,不含税倒挤 |
排查顺序建议是:先看账期,再看科目,最后看维度。账期问题最常见也最好判断,维度问题最隐蔽——同一个科目在不同账簿下要求的维度可能不同。
推送失败后的处理
NC 接口会超时,也会返回业务错误。需要完整的状态机与失败原因记录,并支持人工重试。重试时要保证幂等,以报销单号加业务类型建立唯一索引。
一个实践建议:把失败原因翻译成财务能看懂的话再展示。NC 返回的错误信息往往是技术描述,直接甩给财务,他们既看不懂也无法处理,最后还是回到 IT 这里。
这个场景在开灵科技费控系统里怎么处理
支持多法人多账簿映射,一张报销单可按分摊规则生成多个账簿的凭证。业务组织与财务组织之间支持映射转换,分录行自动携带组织维度。凭证号由总账生成并回写,费控侧保留来源单据号用于追溯。推送失败原因翻译为可读提示,支持财务自助修正后重试。
常见问题
可以,跨法人分摊和管理账法定账并行两种场景都需要。数据结构上要支持一张单对多张凭证。
建议由 NC 自动编号,编号连续性是总账的职责。费控侧接收并回写返回的凭证号即可。
建立业务组织到财务组织的映射表。OA 里的虚拟部门、项目组在 NC 中通常没有对应。
按账期、科目、维度的顺序查。账期最常见也最好判断,维度问题最隐蔽,同一科目在不同账簿下要求可能不同。
