红冲

客户需求:

客户想实现一个单据的作废功能,如采购员A在CRM系统录入了一张采购订单,并且单据已经通过了审批,已经生效了,效果是单据的审批状态已经变为“审批通过”,并且单据及其明细已经锁定,不允许再进行编辑,并生成了一张采购入库单和应付账款。但现在因供应商供货出现问题,所以这张单据就应该作废。

解决方案

通过分析决定用单据的红冲功能来实现这个单据作废功能,这里就拿采购订单为例。
红冲操作实现的功能:
如果采购订单的状态为“制作中”或“已提交”,不允许红冲;
如果采购订单已经出现入库或付款操作时不允许进行红冲;
当红冲时把原来采购订单的状态更新为“已红冲”,同时生成一张红冲单,这张红冲单大部分数据和采购订单相同,只有状态为“红冲单”,数量、金额为负值,这样就把原来采购订单的数量和金额给冲掉了;
采购订单红冲之后同时把生成的应付账款和采购入库单删除;

解决方案的具体实现

首先,完成一个自定义页面,页面代码的功能就是实现红冲的所有操作和条件判断,并上传到系统。
其次,在采购订单选项卡的详细页面做一个“红冲”按钮,当采购订单需要作废时,只要进入相应的单据点击这个按钮,就可以出发相关的红冲操作来作废这张单据。

操作界面如下图:

八百客 - 红冲

当点击“红冲”时,弹出红冲确认界面如下图:

八百客 - 红冲

当选择确定时,系统就会进行红冲操作,并返回操作结果。

八百客 - 红冲

状态改变:

八百客 - 红冲

采购入库单和应付账款已经删除:
八百客 - 红冲
红冲单已经生成:

八百客 - 红冲