出纳与等分化票据联调结算号优化
适用版本:EAS Cloud85版本及以上
一、用户场景/业务痛点
当付款单的结算方式为应收票据,结算号字段支持F7选择票据进行支付。之前的结算号字段只存储票据号的字符串,不存储票据ID,在付款单保存、提交及对外背书的时候会根据票据号(即结算号)查找对应的票据。等分化票据上线之前,票据号码通常是唯一的,但等分化票据上线后,系统存在票据号码重复的电子票据,仅通过票据号码、不能准确找到F7关联的是哪一张票据,导致付款单选中等分化票据后不能正常提交、对外背书支付。因此,付款单需要增加票据中间表,存储选票时的票据ID,票据金额等字段。
二、解决方案
付款单结算方式为应收票据,票据结算号F7选择调整引用逻辑,付款单需要增加票据中间表,存储选票时的票据ID,票据金额等字段,付款单进行票据付款时,根据票据ID进行保存和唯一值校验,同时处理历史单据。
三、功能介绍
优化范围:资金管理-电子商业汇票下的,来源为新一代票据业务系统的应收票据。
票据管理的票据、应付票据、以及ECDS的应收票据不在本次优化范围内。
1、付款单
付款单票据结算号F7,调整引用逻辑,当付款单、结算单的结算方式选择应收票据,票据结算号通过F7关联应收票据时,原逻辑只将票据号码存入结算号,多个票据号码则用分号隔开,考虑到后续等分化电票优化后票据号码存在重复,仅通过票据号字段不能有效判断关联了哪一张票,且付款单无法保存重复的票据号码,因此本次需求进行如下调整:
1) 通过新增付款单方式生成
当付款单的结算方式选择应收票据,结算号通过F7关联应收票据时,将关联的票据id记录到中间表t_cas_payreceivableentry(票据结算中间表,包含付款单、结算单、收款单;中间表信息包含:保存、提交-插入中间表时间、关联时电票状态、单据ID、票据ID、单据类型、票据号码),付款单保存、提交、审批时,结算号的唯一值校验逻辑为票据单据ID;结算号字段前端依旧存票据号码信息,2000字符长度,超过字符自动截断。
若手工录入的票据号码不存在,将录入的票据号码存在中间表中,不更新票据ID,存票据号码。
2) 付款单复制
付款单复制历史单据时,会复制结算方式,不复制结算号。
3) 付款单冲销
付款单冲销历史单据时,会复制结算方式,复制结算号。
4) 付款单导入
付款单导入时,结算方式为应收票据,不会对录入的结算号做检验,可以导入成功,导入保存结算号也插入中间表。
5) 付款排程生成付款单
通过上游单据,比如付款排程选票后生成付款单(付款排程存储了票据中间表),要支持付款排程下推付款时能关联结算号(票据号码),并将对应的票据单据编码存储付款票据中间表中,付款单结算号根据票据单据ID检验唯一值。
6) 付款单票据背书
票据对外背书、对内背书、批量背书时,提交后更新应收票据的票据状态,有票据信息根据票据ID查找。无票据信息取中间表信息是否存在,背书时如票据号码找到多张票据,关联不上背书失败。无中间表中根据原逻辑-票据号码查找。
付款单手工录入票据号码已付款后,票据登记此票据信息且金额一致,背书时自动关联且可以背书成功。都找不到票据信息背书失败。
7) 付款单查看票据信息
付款单的【查看票据信息】按钮的逻辑进行调整:展示票据信息时优先读取票据中间表里关联的票据id,没有票据ID有票据号,根据原有逻辑按票据号查询票据信息,若查看的票据中里面没有数据(没有数据、没有ID、没有中间表),就基于原有的逻辑,根据结算号来查询票据信息,相关逻辑参考如下文档:
电票操作中质押、贴现、背书、提示付款,会让票据号产生变化,同步更新付款单中结算号票据号码信息。
8) 付款单结算号长度
目前付款单的结算号字段的最大长度为2000个字符,当F7选择了多张票据,这些票据拼接起来生成的结算号超过2000个字符,就自动截取2000个字符;但仍然能通过【查看票据信息】按钮基于中间表查看完整的应收票据或者应付票据。
9) 付款单校验逻辑优化
付款单保存和提交关于校验“所选的一张或多张应收票据金额合计(**票据金额合计值),不等于付款单的金额”。
以前是根据结算号查找票据号相同的应收票据,找到多个相同的票据之后就会将这个票的金额做加总,导致付款单无法提交,此处需要进行改动,根据中间表里的票据id查找对应的金额,再进行金额加总。如中间表没有票据ID,有票据号码根据票据号码查找对应的金额;如没有中间表,根据付款单的结算号查找对应的金额;如付款单中结算号无法在票据信息中查找到,则不校验票据金额和付款金额。
付款单保存和提交关于检验“结算中心选应付票据时所选票据号中包含重复的票据号”,优化成校验票据号码对应的中间表票据编码ID进行唯一值校验。
10) 付款单修改
付款单结算方式选择应收票据时,如已经选择的票据号码写入中间表后又进行修改票据号码,保存、提交则应该更新中间表的票据单据ID。
11) 关联票据删除
付款单引用应收票据,写入了中间表,当应收票据删除时要增加校验,写入了付款单关联票据的中间表就不允许删除,增加提示信息“应收票据已有关联单据,不能删除”。
12) 付款单删除
付款单引用应收票据,票据单据ID或票据号码写入了中间表,付款单单据状态为保存或提交时,删除付款单单据时同步删除关联的中间表插入数据。
13) 付款单批量操作
付款金额与票据金额不匹配,票据号码重复,票据号码错误,付款单批量保存、批量提交、批量审批、批量付款时,未对结算号中票据号进行校验,优化成若票据号码在电票中存在,则校验票据重复校验,付款金额总计与票据金额总计不匹配校验,并将票据号码对应的票据单据ID写入中间表;若票据号码不存在,则不校验,将票据号码写入中间表。
14) 历史数据
历史付款单序时簿提交时结算号不插入中间表,检验票据是否存在,需要对模糊匹配或精准匹配的票据做关联。
历史付款单修改后提交,不修改结算号时不写入中间表,校验票据信息,修改结算号时写入中间表,修改结算号后进行结算号校验,同上。
15) 应付票据不处理
付款单登记应付票据、批量登记应付票据不进行处理。
16) 锁票
付款单选择票据时,已锁票的票据不能被选择(列表不展示锁票票据),已锁票的票据关联的单据删除时,锁票释放。
2、结算单
1) 付款单生成结算单
付款单生成结算单GUI也要支持转换时能关联结算号(票据号码),并将对应的票据ID或票据号码存储中间表中。
结算号不为空时,保存和提交结算号写入中间表,结算号不校验正确性和重复(保持原逻辑)。
2) 结算单结算号字段优化
原来结算单保存时校验外部结算号长度不能大于1000,首先要扩展结算单字符长度为2000,要改成大于2000截取前2000个字符;上游单据转换生成结算单字段字符大于2000截取前2000个字符。
3) 新增结算单
当gui结算单的结算方式选择应收票据,外部结算号不为空时,如结算号中票据信息能关联电票时,将票据ID写入中间表,如结算号中无法关联电票时,将录入信息写入中间表票据号码字段中。或手工录入的票据号码不存在,将录入的票据号码存在中间表中,不更新票据ID,存票据号码。结算号为空则不写入中间表。
目前手工录入的结算号不校验正确性和重复(保持原逻辑)。
4) 结算单复制
结算单复制历史单据时,会复制结算方式,不复制外部结算号。
5) 结算单修改
付款单生成的结算单,结算方式选择应收票据时,如已经选择的票据号码写入中间表后又进行修改票据号码,新的票据号码存入中间表,付款单传输过来的票据号在中间表中删除。
6) 关联票据删除
付款单生成的结算单,结算方式选择应收票据,带过来的票据ID已写入了中间表,当应收票据删除时要增加校验,写入了结算单关联票据的中间表不允许删除,增加提示信息“应收票据已有关联单据,不能删除”。
7) 结算单删除
付款单生成的结算单,结算方式选择应收票据,带过来的票据ID已写入了中间表,结算单单据状态为保存或提交时,删除结算单单据时同步删除关联的中间表插入数据。
8) 结算单背书
结算单关联票据对外背书、批量背书时,提交后更新应收票据的票据状态,有票据信息根据票据ID查找。
无票据信息取中间表信息是否存在,背书时如票据号码找到多张票据,关联不上背书失败。无中间表中根据原逻辑-票据号码查找。
都找不到票据信息背书失败。