1 业务背景
某500强制造企业,业务数据量大,是典型的中大型用户,随着国产化替代的契机,决定用星瀚替换友商产品的销售开票业务流程。
1.1 业务现状
友商产品的销售开票业务数据来源于业务端的销售类单据,包含实销、退货、调货、集中销售、内部购销等。根据实际业务的发生情况,自动归集可开票数据至数据池内,财务人员按需筛选开票数据,创建应收单,执行开票流程。
在目前的星瀚系统中,没有此类的业务场景,为了满足客户需求,对标友商,现场决定通过二开实现可开票数据池的业务落地。通过可开票数据池,汇总多个场景开票数据,减少财务人员跨模块操作,优化数据核对步骤,提升销售开票效率。
1.2 客户诉求与期望
(1)可开票数据池中,同时展示未开票、未生成凭证的多列表数据;并同时支持关联上下游的单据信息;
(2)支持月末30-50万的大数据量查询,并支持5-10万的数据量同时开票。
2 解决方案
2.1 方案的整体思路
针对上述业务诉求,总体方案设计如下:
(1)定义开票业务范围,搭建开票池,考虑到大数据需求,用报表来汇总业务数据;
(2)通过库存单据的Botp转换规则,生成财务应收单,实现开票;通过异步,实现批量开票的场景。
2.2 关键步骤及效果展示
2.2.1 报表实现
客户存在月末30-50万的大数据量查询,用报表实现大数据量的查询,能够解决虚模式加载等问题,提升查询效率。
图2 可开票数据池
报表支持多列表显示,同时查询,异步加载;同时,支持全选、取消全选、列过滤、排序功能,提升报表的易用性,更好的支撑用户数据查询等业务场景。
图3 可开票数据池-列过滤功能
多列表支持不同的报表数据(可数据池-待开票、可开票数据池-未生产凭证)的引出。
图4 引出数据
2.2.2 异步开票
使用分批框架实现分批异步开票,提升开票效率。
图5 异步开票
(1)参数化控制异步分批开票。客户一般集中在月末开票,考虑开票数据量大,用异步的方式提高效率;异步阀值参数可配置,默认值为2万,可根据项目的实际情况修改参数。
(2)按规则分批,如果同批数据量大,再按客户+源单ID分组分批,分批要保证同一个客户在同一批,同一个源单ID在同一批的原则。
(3)支持进度显示,分批日志查看、错误重试功能。
图6 分批任务日志
2.2.2.1 异步开票具体实现
(1)将选中的行(上文截图中异步阀值=1万条),设置批次Id,根据不同的下推规则,存入可开票池下推记录表(zhny_ar_pushrecord);
(2)弹出开票进度条;
(3)异步执行分批任务:
① 根据批次ID、状态=处理中,找满足条件的下推记录;
② 按不同的规则ID分批,如果同批的数据量大,再按按客户+源单ID汇总源单ID数,凑整(一万一批);
③ 按项号分批成子任务;并且将凑整的项号、和最大项号更新到下推记录上。
① 按分批(下推记录pk或pk+项号)查询本批数据;
② 执行下推操作;
③ 将生成的应收单id更新到下推记录表上,并更新状态。
(4)打开下推的列表页面。
3 方案的可推广价值
3.1 对客户的价值
可开票数据池的落地,解决了客户的业务诉求和管理诉求,效率明显优于友商的实现,大大的提高了客户开票效率,实现了客户业财一体化的精细化管理程度。
3.2 行业的普适程度
可开票数据池填补此种业务应用场景的空白, 对标友商表现出良好的性能优势;满足大部分企业集中开票的业务诉求,具有普适性。
附:案例评论有奖活动
我们将每月挑选优质案例评论发放精美奖品,以下形式的评论中奖概率更高哟:
1、分享案例给您带来的启发:这个案例为您当前、进行中或即将开展的项目带来了哪些启发?若您成功将案例中的策略或方法应用到实际项目中,可在评论区分享您的具体应用情况,我们将为您准备额外的奖励。
2、提出案例优化的建议:您认为案例在哪些方面还有改进的空间?您有哪些更好的替代方案或建议?
期待您的案例留言,您的反馈是我们前进的动力~